<?php use cebe\openapi\spec\SecurityRequirement; class WriterTest extends \PHPUnit\Framework\TestCase { private function createOpenAPI($merge = []) { return new \cebe\openapi\spec\OpenApi(array_merge([ 'openapi' => '3.0.0', 'info' => [ 'title' => 'Test API', 'version' => '1.0.0', ], 'paths' => [], ], $merge)); } public function testWriteJson() { $openapi = $this->createOpenAPI(); $json = \cebe\openapi\Writer::writeToJson($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<JSON { "openapi": "3.0.0", "info": { "title": "Test API", "version": "1.0.0" }, "paths": {} } JSON ), $json ); } public function testWriteJsonMofify() { $openapi = $this->createOpenAPI(); $openapi->paths['/test'] = new \cebe\openapi\spec\PathItem([ 'description' => 'something' ]); $json = \cebe\openapi\Writer::writeToJson($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<JSON { "openapi": "3.0.0", "info": { "title": "Test API", "version": "1.0.0" }, "paths": { "\/test": { "description": "something" } } } JSON ), $json ); } public function testWriteYaml() { $openapi = $this->createOpenAPI(); $yaml = \cebe\openapi\Writer::writeToYaml($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<YAML openapi: 3.0.0 info: title: 'Test API' version: 1.0.0 paths: { } YAML ), $yaml ); } public function testWriteEmptySecurityJson() { $openapi = $this->createOpenAPI([ 'security' => [], ]); $json = \cebe\openapi\Writer::writeToJson($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<JSON { "openapi": "3.0.0", "info": { "title": "Test API", "version": "1.0.0" }, "paths": {}, "security": [] } JSON ), $json ); } public function testWriteEmptySecurityYaml() { $openapi = $this->createOpenAPI([ 'security' => [], ]); $yaml = \cebe\openapi\Writer::writeToYaml($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<YAML openapi: 3.0.0 info: title: 'Test API' version: 1.0.0 paths: { } security: [] YAML ), $yaml ); } public function testWriteEmptySecurityPartJson() { $openapi = $this->createOpenAPI([ 'security' => [new SecurityRequirement(['Bearer' => []])], ]); $json = \cebe\openapi\Writer::writeToJson($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<JSON { "openapi": "3.0.0", "info": { "title": "Test API", "version": "1.0.0" }, "paths": {}, "security": [ { "Bearer": [] } ] } JSON ), $json ); } public function testWriteEmptySecurityPartYaml() { $openapi = $this->createOpenAPI([ 'security' => [new SecurityRequirement(['Bearer' => []])], ]); $yaml = \cebe\openapi\Writer::writeToYaml($openapi); $this->assertEquals(preg_replace('~\R~', "\n", <<<YAML openapi: 3.0.0 info: title: 'Test API' version: 1.0.0 paths: { } security: - Bearer: [] YAML ), $yaml ); } }