JSON Validation errors testing helper
A simple library to help testing JSON validation errors by rules.
The current way to test HTTP errors is broken: it tests that the validation fails or you have to manually specify the error message. With this package you'll just need to specify the validation rule that fails and it builds the error message to be sure at 100% that it fails and what fails. (Further reading here in the old merge request for Laravel).
Installation
You can install the package via composer:
composer require --dev danilopolani/laravel-json-validation-testing
Usage
The package provides an helper to retrieve a compiled error message:
use DaniloPolani\JsonValidation\JsonValidation;
JsonValidation::getRuleErrorMessage('foo', 'required');
// => ["The foo field is required."]
However, if you need to test that your HTTP APIs, the package ships with a brand new assertJsonValidationErrorRule
assertion to make your life easier:
it('throws validation error', function () {
$this->postJson('/')
->assertJsonValidationErrorRule('foo', 'required');
});
Of course you can provide your own custom validation Rules:
it('throws validation error', function () {
$this->postJson('/')
->assertJsonValidationErrorRule('foo', new MyCustomRule());
});
It supports as well dynamic rules, such as between
, size
, max
etc. You just need to specify the type of rule you want to apply:
it('throws validation error', function () {
$this->postJson('/')
->assertJsonValidationErrorRule('foo', 'between.string:1,5') // The foo must be between 1 and 5 characters.
->assertJsonValidationErrorRule('foo', 'size.array:3'); // The foo must contain 3 items.
});
You can even test multiple validation errors at once by providing an array of field => rule
as argument:
use DaniloPolani\JsonValidation\JsonValidation;
it('throws validation error', function () {
$this->postJson('/')
->assertJsonValidationErrorRule([
'foo' => 'required',
'bar' => 'required_array_keys:foo,baz',
]);
});
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.