86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php declare(strict_types=1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @license Apache 2.0
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace OpenApi\Tests;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use OpenApi\Generator;
							 | 
						||
| 
								 | 
							
								use OpenApi\Logger;
							 | 
						||
| 
								 | 
							
								use OpenApi\Processors\OperationId;
							 | 
						||
| 
								 | 
							
								use OpenApi\Util;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class GeneratorTest extends OpenApiTestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    const SOURCE_DIR = __DIR__ . '/../Examples/swagger-spec/petstore-simple';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function sourcesProvider()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $sourceDir = self::SOURCE_DIR;
							 | 
						||
| 
								 | 
							
								        $sources = [
							 | 
						||
| 
								 | 
							
								            $sourceDir . '/SimplePet.php',
							 | 
						||
| 
								 | 
							
								            $sourceDir . '/SimplePetsController.php',
							 | 
						||
| 
								 | 
							
								            $sourceDir . '/api.php',
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            'dir-list' => [$sourceDir, [$sourceDir]],
							 | 
						||
| 
								 | 
							
								            'file-list' => [$sourceDir, $sources],
							 | 
						||
| 
								 | 
							
								            'finder' => [$sourceDir, Util::finder($sourceDir)],
							 | 
						||
| 
								 | 
							
								            'finder-list' => [$sourceDir, [Util::finder($sourceDir)]],
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider sourcesProvider
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testScan(string $sourceDir, iterable $sources)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $openapi = (new Generator())
							 | 
						||
| 
								 | 
							
								            ->scan($sources);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertSpecEquals(file_get_contents(sprintf('%s/%s.yaml', $sourceDir, basename($sourceDir))), $openapi);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function testLogger()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // reset test logger
							 | 
						||
| 
								 | 
							
								        Logger::getInstance()->log = function ($entry, $type) {
							 | 
						||
| 
								 | 
							
								            $this->fail('Wrong logger');
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertOpenApiLogEntryContains('The annotation @SWG\Definition() is deprecated.');
							 | 
						||
| 
								 | 
							
								        $this->assertOpenApiLogEntryContains('Required @OA\Info() not found');
							 | 
						||
| 
								 | 
							
								        $this->assertOpenApiLogEntryContains('Required @OA\PathItem() not found');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        (new Generator($this->getPsrLogger(true)))
							 | 
						||
| 
								 | 
							
								            ->setAliases(['swg' => 'OpenApi\Annotations'])
							 | 
						||
| 
								 | 
							
								            ->generate($this->fixtures('Deprecated.php'));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function processorCases()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            [new OperationId(false), false],
							 | 
						||
| 
								 | 
							
								            [new OperationId(true), true],
							 | 
						||
| 
								 | 
							
								            [new class(false) extends OperationId {
							 | 
						||
| 
								 | 
							
								            }, false],
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider processorCases
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testUpdateProcessor($p, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $generator = (new Generator())
							 | 
						||
| 
								 | 
							
								            ->updateProcessor($p);
							 | 
						||
| 
								 | 
							
								        foreach ($generator->getProcessors() as $processor) {
							 | 
						||
| 
								 | 
							
								            if ($processor instanceof OperationId) {
							 | 
						||
| 
								 | 
							
								                $this->assertSpecEquals($expected, $processor->isHash());
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |