awuttig / codeception-api-validator
Validate API Requests and Responses against Swagger / OpenAPI definitions
Requires
- codeception/codeception: ^5.0.0
- codeception/module-phpbrowser: ^3.0.0
- codeception/module-rest: ^3.0.0
- eleven-labs/api-validator: ~0.7.0
- symfony/serializer: ^3.4
Requires (Dev)
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ~9.5
- squizlabs/php_codesniffer: ~3.0.2
README
Validate API Requests and Responses against Swagger / OpenAPI definitions
Installation
You need to add the repository into your composer.json file
composer require --dev awuttig/codeception-api-validator
Usage
You can use this module as any other Codeception module, by adding 'ApiValidator' to the enabled modules in your Codeception suite configurations.
Enable module and setup the configuration variables
- The
schema
could be set in config file directly and via$I->haveOpenApiSchema
or$I->haveSwaggerSchema
modules: enabled: - ApiValidator: depends: REST schema: '/tests/_data/swagger.yaml'
Update Codeception build
codecept build
Implement the cept / cest
$I->wantToTest('Validate request and response against OpenAPI Specification.'); $I->sendGET('api/foo/bar'); $I->seeRequestIsValid(); $I->seeResponseIsValid();
Methods
seeRequestIsValid()
Validates the current request against the current schema definiton.
$I->seeRequestIsValid();
seeResponseIsValid()
Validates the current response against the current schema definiton.
$I->seeRequestIsValid();
seeRequestAndResponseAreValid()
Validates the current request and response against the current schema definiton.
$I->seeRequestAndResponseAreValid();
haveOpenAPISchema()
Set the path to the OpenAPI Schema Specification
$schema = 'file://' . codecept_root_dir('../../web/api/documentation/swagger.yaml'); $I->haveOpenAPISchema($schema);
haveSwaggerSchema()
Set the path to the Swagger Schema Specification
$schema = 'file://' . codecept_root_dir('../../web/api/documentation/swagger.yaml'); $I->haveSwaggerSchema($schema);
Authors
- André Wuttig - Concept, Initial work - aWuttig
See also the list of contributors who participated in this project.