<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Backend\Test\Unit\Model\Menu\Config; class XsdTest extends \PHPUnit\Framework\TestCase { /** * Path to xsd schema file * @var string */ protected $_xsdSchema; /** * @var \Magento\Framework\TestFramework\Unit\Utility\XsdValidator() */ protected $_xsdValidator; protected function setUp() { if (!function_exists('libxml_set_external_entity_loader')) { $this->markTestSkipped('Skipped on HHVM. Will be fixed in MAGETWO-45033'); } $urnResolver = new \Magento\Framework\Config\Dom\UrnResolver(); $this->_xsdSchema = $urnResolver->getRealPath('urn:magento:module:Magento_Backend:etc/menu.xsd'); $this->_xsdValidator = new \Magento\Framework\TestFramework\Unit\Utility\XsdValidator(); } /** * @param string $xmlString * @param array $expectedError * @dataProvider schemaCorrectlyIdentifiesInvalidXmlDataProvider */ public function testSchemaCorrectlyIdentifiesInvalidXml($xmlString, $expectedError) { $actualError = $this->_xsdValidator->validate($this->_xsdSchema, $xmlString); $this->assertEquals($expectedError, $actualError); } public function testSchemaCorrectlyIdentifiesValidXml() { $xmlString = file_get_contents(__DIR__ . '/_files/valid_menu.xml'); $actualResult = $this->_xsdValidator->validate($this->_xsdSchema, $xmlString); $this->assertEmpty($actualResult); } /** * Data provider with invalid xml array according to menu.xsd */ public function schemaCorrectlyIdentifiesInvalidXmlDataProvider() { return include __DIR__ . '/_files/invalidMenuXmlArray.php'; } }