59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php declare(strict_types=1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @license Apache 2.0
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace OpenApi\Tests\Annotations;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use OpenApi\Annotations as OA;
							 | 
						||
| 
								 | 
							
								use OpenApi\Tests\OpenApiTestCase;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class OperationTest extends OpenApiTestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public function securityData()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            'empty' => [
							 | 
						||
| 
								 | 
							
								                [],
							 | 
						||
| 
								 | 
							
								                '/** @OA\Get(security={ }) */',
							 | 
						||
| 
								 | 
							
								                '{"security":[]}',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								            'basic' => [
							 | 
						||
| 
								 | 
							
								                [['api_key' => []]],
							 | 
						||
| 
								 | 
							
								                '/** @OA\Get(security={ {"api_key":{}} }) */',
							 | 
						||
| 
								 | 
							
								                '{"security":[{"api_key":[]}]}',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								            'optional' => [
							 | 
						||
| 
								 | 
							
								                [[]],
							 | 
						||
| 
								 | 
							
								                '/** @OA\Get(security={ {} }) */',
							 | 
						||
| 
								 | 
							
								                '{"security":[{}]}',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								            'optional-oauth2' => [
							 | 
						||
| 
								 | 
							
								                [[], ['petstore_auth' => ['write:pets', 'read:pets']]],
							 | 
						||
| 
								 | 
							
								                '/** @OA\Get(security={ {}, {"petstore_auth":{"write:pets","read:pets"}} }) */',
							 | 
						||
| 
								 | 
							
								                '{"security":[{},{"petstore_auth":["write:pets","read:pets"]}]}',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * @dataProvider securityData
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testSecuritySerialization($security, $dockBlock, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // test with Get implementation...
							 | 
						||
| 
								 | 
							
								        $operation = new OA\Get([
							 | 
						||
| 
								 | 
							
								            'security' => $security,
							 | 
						||
| 
								 | 
							
								        ]);
							 | 
						||
| 
								 | 
							
								        $flags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
							 | 
						||
| 
								 | 
							
								        $json = $operation->toJson($flags);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, $json);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $analysis = $this->analysisFromDockBlock($dockBlock);
							 | 
						||
| 
								 | 
							
								        $this->assertCount(1, $analysis);
							 | 
						||
| 
								 | 
							
								        $json = $analysis[0]->toJson($flags);
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, $json);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |