69 lines
2.0 KiB
PHP
69 lines
2.0 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace League\OpenAPIValidation\Tests\PSR7;
|
||
|
|
||
|
use GuzzleHttp\Psr7\ServerRequest;
|
||
|
use League\OpenAPIValidation\PSR7\ValidatorBuilder;
|
||
|
|
||
|
class ServerRequestRelativeServerTest extends BaseValidatorTest
|
||
|
{
|
||
|
/**
|
||
|
* @return array<array<ServerRequest>>
|
||
|
*/
|
||
|
public function validDataProvider() : array
|
||
|
{
|
||
|
return [
|
||
|
// matches server: https://localhost/v1
|
||
|
[new ServerRequest('get', '/v1/products')],
|
||
|
[new ServerRequest('get', 'http://anyhost/v1/products')],
|
||
|
[new ServerRequest('get', 'https://localhost/v1/products')],
|
||
|
|
||
|
// matches server: /v2
|
||
|
[new ServerRequest('get', '/v2/products')],
|
||
|
[new ServerRequest('get', 'http://anyhost/v2/products')],
|
||
|
|
||
|
// matches overridden server: https://special.host/v3
|
||
|
[new ServerRequest('get', '/v3/products/overridden')],
|
||
|
[new ServerRequest('get', 'http://anyhost/v3/products/overridden')],
|
||
|
|
||
|
// matches overridden server: /v4
|
||
|
[new ServerRequest('get', '/v4/products/overridden')],
|
||
|
[new ServerRequest('get', 'http://anyhost/v4/products/overridden')],
|
||
|
[new ServerRequest('get', 'https://special.host/v4/products/overridden')],
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider validDataProvider
|
||
|
*/
|
||
|
public function testItAllowsRelativesServerUrlsGreen(ServerRequest $request) : void
|
||
|
{
|
||
|
$spec = <<<SPEC
|
||
|
openapi: "3.0.0"
|
||
|
info:
|
||
|
title: Test API
|
||
|
description: Testing servers keyword
|
||
|
version: "1.0.0"
|
||
|
servers:
|
||
|
- url: https://localhost/v1
|
||
|
- url: /v2
|
||
|
paths:
|
||
|
/products:
|
||
|
get:
|
||
|
summary: Inherits servers
|
||
|
/products/overridden:
|
||
|
servers:
|
||
|
- url: https://special.host/v3
|
||
|
- url: /v4
|
||
|
get:
|
||
|
summary: Overrides servers
|
||
|
SPEC;
|
||
|
|
||
|
$validator = (new ValidatorBuilder())->fromYaml($spec)->getServerRequestValidator();
|
||
|
$validator->validate($request);
|
||
|
$this->addToAssertionCount(1);
|
||
|
}
|
||
|
}
|