laravelfr/api-testing

A package which provide all you need for testing apis!
1,945 1
Install
composer require laravelfr/api-testing
Latest Version:1.0.0
PHP:>=5.5
License:GPL-3.0
Last Updated:Jul 31, 2017
Links: GitHub  ·  Packagist
Maintainer: mathieutu

Laravel Api Testing

By the LaravelFr Team

This package provide you some methods to fully test your Laravel API.

The LaravelFr team is a group of french friends who decide to put in common some useful methods for testing API. Whoever you are, feel free to contribute to this package or join the organisation to add yours !

Travis Build StyleCI Code Coverage Code Quality

Installation

composer require laravelfr/api-testing

Usage

Once Laravel API Testing is installed, you can extend or implement the classes and traits in this package. There are no service providers to register.

It works both with old testing way (Laravel <5.4 and >5.4 with BrowserKit) and with new testing way (with response object).

  • Old way: Just use \LaravelFr\ApiTesting\AssertArrays and \LaravelFr\ApiTesting\AssertJsonResponse traits, and use directly the methods from traits.
  • New way: for AssertJsonResponse, you can add the trait, and directly use the methods on response object.

See Tests for some examples.

Available methods:

On this response example :

{
   "foo": 134,
   "foobar": {
       "foobar_foo": "foo",
       "foobar_bar": 212
   },
   "bars": [
       {
           "bar": true,
           "foo": 134.212
       },
       {
           "bar": false,
           "foo": 134.212
       },
       {
           "bar": false,
           "foo": 134.212
       }
   ],
   "baz": [
       {
           "foo": "Laravel",
           "bar": {
               "foo": true,
               "bar": 134
           }
       },
       {
           "foo": "France",
           "bar": {
               "foo": false,
               "bar": 212
           }
       }
   ]
}
  • assertJsonStructureEquals: check if it respects the exact structure pattern.
$response->assertJsonStructureEquals([
    'foo',
    'baz' => ['*' => ['bar' => ['*'], 'foo']],
    'bars' => ['*' => ['bar', 'foo']],
    'foobar' => ['foobar_foo', 'foobar_bar'],
]);
  • seeJsonTypedStructure: check if it respects a typed pattern.
$response->seeJsonTypedStructure([
    'foo' => 'integer',
    'baz' => ['*' => ['bar' => 'array', 'foo' => 'string']],
    'bars' => ['*' => ['bar' => 'boolean', 'foo' => 'float']],
    'foobar' => ['foobar_foo' => 'string', 'foobar_bar' => 'int'],
]);
  • seeJsonTypedStructure: retrieve a part of response in array format.
$response->jsonResponse('foobar.foobar_bar')); // 212

Credits

Please feel free to make PRs and add yours!

Related Packages

gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

631,580,251 9,707
laravel/framework

The Laravel Framework.

580,311,802 34,925
laravel/tinker

Powerful REPL for the Laravel framework.

489,754,436 7,444