XsdTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Indexer\Test\Unit;
  7. class XsdTest extends \PHPUnit\Framework\TestCase
  8. {
  9. /**
  10. * Path to xsd schema file
  11. * @var string
  12. */
  13. protected $_xsdSchema;
  14. /**
  15. * @var \Magento\Framework\Config\Dom\UrnResolver
  16. */
  17. protected $urnResolver;
  18. /**
  19. * @var \Magento\Framework\TestFramework\Unit\Utility\XsdValidator
  20. */
  21. protected $_xsdValidator;
  22. protected function setUp()
  23. {
  24. if (!function_exists('libxml_set_external_entity_loader')) {
  25. $this->markTestSkipped('Skipped on HHVM. Will be fixed in MAGETWO-45033');
  26. }
  27. $this->urnResolver = new \Magento\Framework\Config\Dom\UrnResolver();
  28. $this->_xsdSchema = $this->urnResolver->getRealPath('urn:magento:framework:Indexer/etc/indexer.xsd');
  29. $this->_xsdValidator = new \Magento\Framework\TestFramework\Unit\Utility\XsdValidator();
  30. }
  31. /**
  32. * @param string $xmlString
  33. * @param array $expectedError
  34. * @dataProvider schemaCorrectlyIdentifiesInvalidXmlDataProvider
  35. */
  36. public function testSchemaCorrectlyIdentifiesInvalidXml($xmlString, $expectedError)
  37. {
  38. $actualError = $this->_xsdValidator->validate(
  39. $this->urnResolver->getRealPath('urn:magento:framework:Indexer/etc/indexer_merged.xsd'),
  40. $xmlString
  41. );
  42. $this->assertEquals($expectedError, $actualError);
  43. }
  44. public function testSchemaCorrectlyIdentifiesValidXml()
  45. {
  46. $xmlString = file_get_contents(__DIR__ . '/_files/valid_indexer.xml');
  47. $actualResult = $this->_xsdValidator->validate($this->_xsdSchema, $xmlString);
  48. $this->assertEmpty($actualResult);
  49. }
  50. /**
  51. * Data provider with invalid xml array according to events.xsd
  52. */
  53. public function schemaCorrectlyIdentifiesInvalidXmlDataProvider()
  54. {
  55. return include __DIR__ . '/_files/invalidIndexerXmlArray.php';
  56. }
  57. }