byjg / swagger-test
A set of tools for testing your REST calls based on the OpenApi specification using PHPUnit. Currently, this library supports the OpenApi specifications 2.0 (formerly swagger) and 3.0.
Fund package maintenance!
byjg
Installs: 367 669
Dependents: 4
Suggesters: 0
Security: 0
Stars: 101
Watchers: 4
Forks: 34
Open Issues: 14
pkg:composer/byjg/swagger-test
Requires
- php: >=8.1 <8.4
- ext-json: *
- byjg/webrequest: ^5.0
Requires (Dev)
- byjg/restserver: ^5.0
- phpunit/phpunit: ^9.6
- vimeo/psalm: ^5.9
README
A set of tools for testing your REST calls based on the OpenApi specification using PHPUnit.
Currently, this library supports the OpenApi specifications 2.0 (formerly swagger) and 3.0.
Some features of the OpenAPI specification are not fully implemented:
- Callbacks (OpenAPI 3.0)
- Links (OpenAPI 3.0)
- References to external documents/objects
- Complex schema validations
For details on the schema classes and their specific features, see Schema Classes.
PHP Swagger Test can help you to test your REST API. You can use this tool both for Unit Tests or Functional Tests.
This tool reads an OpenAPI/Swagger specification in JSON format (not YAML) and enables you to test the request and response. You can use the tool "https://github.com/zircote/swagger-php" for creating the JSON file when you are developing your REST API.
The ApiTestCase's assertion process is based on throwing exceptions if some validation or test failed.
Documentation
- Functional test cases - Testing your API with HTTP requests
- Contract test cases - Testing without HTTP using custom requesters
- Runtime parameters validator - Validating requests in production
- Mocking Requests - Testing with mocked responses
- Schema classes - Working with OpenAPI 2.0 and 3.0 schemas
- Using the OpenApiValidation trait - Flexible validation without extending ApiTestCase
- Advanced usage - File uploads, custom clients, authentication, and more
- Exception handling - Understanding and handling validation exceptions
- Migration guide - Upgrading from older versions
- Troubleshooting - Common issues and solutions
Who is using this library?
Install
composer require "byjg/swagger-test"
Tests
SPEC=swagger php -S 127.0.0.1:8080 tests/rest/app.php & SPEC=openapi php -S 127.0.0.1:8081 tests/rest/app.php & vendor/bin/phpunit
References
This project uses the byjg/webrequest component. It implements the PSR-7 specification, and a HttpClient / MockClient to do the requests. Check it out to get more information.
Questions?
Please raise your issue on Github issue.
Dependencies
flowchart TD
byjg/swagger-test --> byjg/webrequest
Loading