SwaggerParserTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * File SwaggerParserTest.php
  4. *
  5. * @author Edward Pfremmer <epfremme@nerdery.com>
  6. */
  7. namespace Epfremme\Swagger\Tests\Parser;
  8. use Epfremme\Swagger\Parser\SwaggerParser;
  9. /**
  10. * Class SwaggerParserTest
  11. *
  12. * @package Epfremme\Swagger
  13. * @subpackage Tests\Parser
  14. */
  15. class SwaggerParserTest extends \PHPUnit_Framework_TestCase
  16. {
  17. // swagger files
  18. const SWAGGER_JSON_FILE = 'swagger.json';
  19. const SWAGGER_YAML_FILE = 'swagger.yaml';
  20. const SWAGGER_V1_FILE = 'swagger_v1.json';
  21. const SWAGGER_MISSING_FILE = 'swagger_missing.json';
  22. const SWAGGER_WO_VERSION_JSON_FILE = 'swagger_wo_version.json';
  23. const SWAGGER_WO_VERSION_YAML_FILE = 'swagger_wo_version.yaml';
  24. /**
  25. * {@inheritdoc}
  26. */
  27. protected function setUp() {}
  28. /**
  29. * Return new SwaggerParser
  30. *
  31. * @param string $file
  32. * @return \Epfremme\Swagger\Parser\SwaggerParser
  33. */
  34. protected function getSwagger($file)
  35. {
  36. return new SwaggerParser(realpath(__DIR__ . '/../Resources/' . $file));
  37. }
  38. /**
  39. * @expectedException \InvalidArgumentException
  40. */
  41. public function testConstructEmptyFileException()
  42. {
  43. new SwaggerParser(null);
  44. }
  45. /**
  46. * @expectedException \InvalidArgumentException
  47. */
  48. public function testConstructMissingFileException()
  49. {
  50. $this->getSwagger(self::SWAGGER_MISSING_FILE);
  51. }
  52. /**
  53. * @covers Epfremme\Swagger\Parser\SwaggerParser::__construct
  54. */
  55. public function testConstructJsonFile()
  56. {
  57. $swagger = $this->getSwagger(self::SWAGGER_JSON_FILE);
  58. $this->assertInstanceOf(SwaggerParser::class, $swagger);
  59. $this->assertAttributeInternalType('array', 'data', $swagger);
  60. }
  61. /**
  62. * @covers Epfremme\Swagger\Parser\SwaggerParser::__construct
  63. */
  64. public function testConstructYamlFile()
  65. {
  66. $swagger = $this->getSwagger(self::SWAGGER_YAML_FILE);
  67. $this->assertInstanceOf(SwaggerParser::class, $swagger);
  68. $this->assertAttributeInternalType('array', 'data', $swagger);
  69. }
  70. /**
  71. * @covers Epfremme\Swagger\Parser\SwaggerParser::getVersion
  72. * @depends testConstructJsonFile
  73. */
  74. public function testGetVersion()
  75. {
  76. $swagger = $this->getSwagger(self::SWAGGER_JSON_FILE);
  77. $this->assertNotEmpty($swagger->getVersion());
  78. $this->assertEquals('2.0', $swagger->getVersion());
  79. }
  80. /**
  81. * @covers Epfremme\Swagger\Parser\SwaggerParser::getVersion
  82. * @depends testConstructJsonFile
  83. */
  84. public function testGetMissingVersion()
  85. {
  86. $jsonSwagger = $this->getSwagger(self::SWAGGER_WO_VERSION_JSON_FILE);
  87. $yamlSwagger = $this->getSwagger(self::SWAGGER_WO_VERSION_YAML_FILE);
  88. $this->assertNotEmpty($jsonSwagger->getVersion());
  89. $this->assertEquals('2.0', $jsonSwagger->getVersion());
  90. $this->assertNotEmpty($yamlSwagger->getVersion());
  91. $this->assertEquals('2.0', $yamlSwagger->getVersion());
  92. }
  93. /**
  94. * @covers Epfremme\Swagger\Parser\SwaggerParser::getData
  95. * @depends testConstructJsonFile
  96. */
  97. public function testGetData()
  98. {
  99. $swagger = $this->getSwagger(self::SWAGGER_JSON_FILE);
  100. $this->assertNotEmpty($swagger->getData());
  101. $this->assertInternalType('array', $swagger->getData());
  102. }
  103. /**
  104. * @covers Epfremme\Swagger\Parser\SwaggerParser::getData
  105. * @depends testConstructJsonFile
  106. */
  107. public function testToString()
  108. {
  109. $swagger = $this->getSwagger(self::SWAGGER_JSON_FILE);
  110. $this->assertNotEmpty((string) $swagger);
  111. $this->assertInternalType('string', (string)$swagger);
  112. $this->assertJson((string) $swagger);
  113. }
  114. }