You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.6 KiB
73 lines
2.6 KiB
<?php declare(strict_types=1);
|
|
|
|
/**
|
|
* @license Apache 2.0
|
|
*/
|
|
|
|
namespace OpenApi\Tests;
|
|
|
|
use OpenApi\Analysis;
|
|
use OpenApi\Logger;
|
|
use OpenApi\Processors\InheritInterfaces;
|
|
use OpenApi\Processors\InheritTraits;
|
|
use OpenApi\Processors\MergeInterfaces;
|
|
use OpenApi\Processors\MergeTraits;
|
|
|
|
class ExamplesTest extends OpenApiTestCase
|
|
{
|
|
public function exampleMappings()
|
|
{
|
|
return [
|
|
'misc' => ['misc', 'misc.yaml', []],
|
|
'openapi-spec' => ['openapi-spec', 'openapi-spec.yaml', []],
|
|
'petstore.swagger.io' => ['petstore.swagger.io', 'petstore.swagger.io.yaml', []],
|
|
'petstore-3.0' => ['petstore-3.0', 'petstore-3.0.yaml', []],
|
|
'swagger-spec/petstore' => ['swagger-spec/petstore', 'petstore.yaml', []],
|
|
'swagger-spec/petstore-simple' => ['swagger-spec/petstore-simple', 'petstore-simple.yaml', []],
|
|
'swagger-spec/petstore-with-external-docs' => ['swagger-spec/petstore-with-external-docs', 'petstore-with-external-docs.yaml', []],
|
|
'using-refs' => ['using-refs', 'using-refs.yaml', []],
|
|
'example-object' => ['example-object', 'example-object.yaml', []],
|
|
'using-interfaces-inherit' => ['using-interfaces', 'using-interfaces-inherit.yaml', []],
|
|
'using-interfaces-merge' => ['using-interfaces', 'using-interfaces-merge.yaml', $this->processors(InheritInterfaces::class, new MergeInterfaces())],
|
|
'using-traits-inherit' => ['using-traits', 'using-traits-inherit.yaml', []],
|
|
'using-traits-merge' => ['using-traits', 'using-traits-merge.yaml', $this->processors(InheritTraits::class, new MergeTraits())],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Swap processor.
|
|
*/
|
|
private function processors($fromClass, $to)
|
|
{
|
|
$processors = [];
|
|
foreach (Analysis::processors() as $processor) {
|
|
if ($processor instanceof $fromClass) {
|
|
$processors[] = $to;
|
|
} else {
|
|
$processors[] = $processor;
|
|
}
|
|
}
|
|
|
|
return $processors;
|
|
}
|
|
|
|
/**
|
|
* Validate openapi definitions of the included examples.
|
|
*
|
|
* @dataProvider exampleMappings
|
|
*/
|
|
public function testExamples($example, $spec, array $processors)
|
|
{
|
|
Logger::getInstance()->log = function ($entry, $type) {
|
|
// ignore
|
|
};
|
|
$options = [];
|
|
if ($processors) {
|
|
$options['processors'] = $processors;
|
|
}
|
|
|
|
$path = __DIR__.'/../Examples/'.$example;
|
|
$openapi = \OpenApi\scan($path, $options);
|
|
$this->assertSpecEquals(file_get_contents($path.'/'.$spec), $openapi);
|
|
}
|
|
}
|
|
|