ensi/laravel-openapi-testing

0.4.0 2024-06-26 11:38 UTC

This package is auto-updated.

Last update: 2024-08-27 08:54:33 UTC


README

Latest Version on Packagist Tests Total Downloads

此包基于 ensi/openapi-httpfoundation-testing,并提供 ValidatesAgainstOpenApiSpec 特性

安装

您可以通过 composer 安装此包

composer require ensi/laravel-openapi-testing --dev

版本兼容性

基本用法

让我们为我们的测试添加基于 oas3 的验证。我们所需的一切是使用 use ValidatesAgainstOpenApiSpec; 并实现如下 getOpenApiDocumentPath(): string 方法

class SomeTestCase extends AnotherTestCase
{
    use ValidatesAgainstOpenApiSpec;

    protected function getOpenApiDocumentPath(): string
    {
        return public_path('api-docs/v1/index.yaml');
    }
}

特性覆盖了 $this->call 方法以添加所需的验证。因此,所有与 http 相关的辅助方法($this->get()$this->postJson() 等)也会执行验证。请求和响应都会被验证以匹配给定的规范的一部分。如果验证失败,您的测试将自动标记为失败,无需任何手动断言。

关闭验证

在某些情况下,您可能希望关闭特定请求的验证。以下是一个示例如何操作

// Turn off validation for both request
$this->skipNextOpenApiRequestValidation()->getJson(...);

// Turn off validation for both response
$this->skipNextOpenApiResponseValidation()->getJson(...);

// Turn off validation for both request and response
$this->skipNextOpenApiValidation()->getJson(...);

映射路径

为了验证请求是否与 oas3 匹配,此包需要将其映射到规范文档中描述的路径之一。我们使用 Laravel 的路由($request->route()->uri)来完成此操作。如果它不完全匹配,您可以通过以下方式显式设置当前请求的 OpenApi 路径

$this->forceOpenApiPath('/pets/{petId}')->getJson(...);

贡献

有关详细信息,请参阅 CONTRIBUTING

测试

  1. composer install
  2. composer test

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅 许可文件