/** * Test each acl configuration file * @param string $file * @dataProvider aclConfigFileDataProvider */ public function testAclConfigFile($file) { $domConfig = new Magento_Config_Dom(file_get_contents($file)); $result = $domConfig->validate($this->_schemeFile, $errors); $message = "Invalid XML-file: {$file}\n"; foreach ($errors as $error) { $message .= "{$error->message} Line: {$error->line}\n"; } $this->assertTrue($result, $message); }
/** * @param string $file * @dataProvider viewConfigFileDataProvider */ public function testViewConfigFile($file) { $domConfig = new Magento_Config_Dom(file_get_contents($file)); $result = $domConfig->validate(Mage::getBaseDir('lib') . '/Magento/Config/view.xsd', $errors); $message = "Invalid XML-file: {$file}\n"; foreach ($errors as $error) { $message .= "{$error->message} Line: {$error->line}\n"; } $this->assertTrue($result, $message); }
/** * Perform test whether a configuration file is valid * * @param string $file * @throws PHPUnit_Framework_AssertionFailedError if file is invalid */ protected function _validateConfigFile($file) { $schemaFile = $this->_model->getSchemaFile(); $domConfig = new Magento_Config_Dom(file_get_contents($file)); $result = $domConfig->validate($schemaFile, $errors); $message = "Invalid XML-file: {$file}\n"; foreach ($errors as $error) { $message .= "{$error->message} Line: {$error->line}\n"; } $this->assertTrue($result, $message); }
/** * @param string $xml * @param bool $isExpectedValid * @dataProvider validateDataProvider */ public function testValidate($xml, $isExpectedValid) { $config = new Magento_Config_Dom($xml); $schema = __DIR__ . '/_files/sample.xsd'; if ($isExpectedValid) { $this->assertTrue($config->validate($schema)); } else { $errors = array(); $this->assertFalse($config->validate($schema, $errors)); $this->assertNotEmpty($errors); } }
/** * Getter for node by path * * @param string $nodePath * @throws Magento_Exception an exception is possible if original document contains multiple fixed nodes * @return DOMElement | null */ protected function _getMatchedNode($nodePath) { if (!preg_match('/^\\/config(\\/menu)?$/i', $nodePath)) { return null; } return parent::_getMatchedNode($nodePath); }
/** * Merge the config XML-files * * @param array $configFiles * @throws Exception if a non-existing or invalid XML-file passed */ protected function _merge($configFiles) { $domConfig = new Magento_Config_Dom($this->_getInitialXml(), $this->_getIdAttributes()); foreach ($configFiles as $file) { if (!file_exists($file)) { throw new Exception("File does not exist: {$file}"); } $domConfig->merge(file_get_contents($file)); if (!$domConfig->validate($this->getSchemaFile(), $errors)) { $message = "Invalid XML-file: {$file}\n"; /** @var libXMLError $error */ foreach ($errors as $error) { $message .= "{$error->message} Line: {$error->line}\n"; } throw new Exception($message); } } $this->_dom = $domConfig->getDom(); }