public function testMergedConfigFiles() { $invalidFiles = []; $files = $this->getConfigFiles(); $validationStateMock = $this->getMock('\\Magento\\Framework\\Config\\ValidationStateInterface', [], [], '', false); $validationStateMock->method('isValidationRequired')->willReturn(false); $mergedConfig = new \Magento\Framework\Config\Dom('<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></config>', $validationStateMock, $this->getIdAttributes()); foreach ($files as $file) { $content = file_get_contents($file[0]); try { $validationStateMock = $this->getMock('\\Magento\\Framework\\Config\\ValidationStateInterface', [], [], '', false); $validationStateMock->method('isValidationRequired')->willReturn(true); new \Magento\Framework\Config\Dom($content, $validationStateMock, $this->getIdAttributes()); //merge won't be performed if file is invalid because of exception thrown $mergedConfig->merge($content); } catch (\Magento\Framework\Config\Dom\ValidationException $e) { $invalidFiles[] = $file[0]; } } if (!empty($invalidFiles)) { $this->fail('Found broken files: ' . implode("\n", $invalidFiles)); } $errors = []; $mergedConfig->validate($this->getMergedSchemaFile(), $errors); if ($errors) { $this->fail('Merged routes config is invalid: ' . "\n" . implode("\n", $errors)); } }
public function testRouteConfigsValidation() { $invalidFiles = []; $componentRegistrar = new ComponentRegistrar(); $files = []; foreach ($componentRegistrar->getPaths(ComponentRegistrar::MODULE) as $moduleDir) { $mask = $moduleDir . '/etc/*/routes.xml'; $files = array_merge($files, glob($mask)); } $mergedConfig = new \Magento\Framework\Config\Dom('<config></config>', $this->_idAttributes); foreach ($files as $file) { $content = file_get_contents($file); try { new \Magento\Framework\Config\Dom($content, $this->_idAttributes, null, $this->schemaFile); //merge won't be performed if file is invalid because of exception thrown $mergedConfig->merge($content); } catch (\Magento\Framework\Config\Dom\ValidationException $e) { $invalidFiles[] = $file; } } if (!empty($invalidFiles)) { $this->fail('Found broken files: ' . implode("\n", $invalidFiles)); } try { $errors = []; $mergedConfig->validate($this->mergedSchemaFile, $errors); } catch (\Exception $e) { $this->fail('Merged routes config is invalid: ' . "\n" . implode("\n", $errors)); } }
public function testRouteConfigsValidation() { global $magentoBaseDir; $invalidFiles = array(); $mask = $magentoBaseDir . '/app/code/*/*/etc/*/routes.xml'; $files = glob($mask); $mergedConfig = new \Magento\Framework\Config\Dom('<config></config>', $this->_idAttributes); foreach ($files as $file) { $content = file_get_contents($file); try { new \Magento\Framework\Config\Dom($content, $this->_idAttributes, null, $this->_schemaFile); //merge won't be performed if file is invalid because of exception thrown $mergedConfig->merge($content); } catch (\Magento\Framework\Config\Dom\ValidationException $e) { $invalidFiles[] = $file; } } if (!empty($invalidFiles)) { $this->fail('Found broken files: ' . implode("\n", $invalidFiles)); } try { $errors = array(); $mergedConfig->validate($this->_mergedSchemaFile, $errors); } catch (\Exception $e) { $this->fail('Merged routes config is invalid: ' . "\n" . implode("\n", $errors)); } }
/** * @expectedException \Magento\Framework\Exception * @expectedExceptionMessage More than one node matching the query: /root/node/subnode */ public function testMergeException() { $xml = file_get_contents(__DIR__ . "/_files/dom/ambiguous_two.xml"); $newXml = file_get_contents(__DIR__ . "/_files/dom/ambiguous_new_one.xml"); $config = new \Magento\Framework\Config\Dom($xml); $config->merge($newXml); }
/** * Load configuration * * @return array */ public function load() { $localConfig = new \Magento\Framework\Config\Dom('<config/>', $this->_idAttributes); $localConfigFile = $this->_dir . '/' . self::LOCAL_CONFIG_FILE; if (file_exists($localConfigFile)) { // 1. app/etc/local.xml $localConfig->merge(file_get_contents($localConfigFile)); // 2. app/etc/<dir>/<file>.xml if (preg_match('/^[a-z\\d_-]+(\\/|\\\\)+[a-z\\d_-]+\\.xml$/', $this->_customFile)) { $localConfigExtraFile = $this->_dir . '/' . $this->_customFile; $localConfig->merge(file_get_contents($localConfigExtraFile)); } } $arrayNodeConfig = new \Magento\Framework\Config\Dom\ArrayNodeConfig(new \Magento\Framework\Config\Dom\NodePathMatcher(), $this->_idAttributes); $converter = new \Magento\Framework\Config\Converter\Dom\Flat($arrayNodeConfig); $result = $converter->convert($localConfig->getDom()); return !empty($result['config']) ? $result['config'] : array(); }
public function testCrontabConfigFiles() { $invalidFiles = array(); $files = \Magento\TestFramework\Utility\Files::init()->getConfigFiles('crontab.xml'); $mergedConfig = new \Magento\Framework\Config\Dom('<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></config>', $this->_idAttributes); foreach ($files as $file) { $content = file_get_contents($file[0]); try { new \Magento\Framework\Config\Dom($content, $this->_idAttributes); //merge won't be performed if file is invalid because of exception thrown $mergedConfig->merge($content); } catch (\Magento\Framework\Config\Dom\ValidationException $e) { $invalidFiles[] = $file[0]; } } if (!empty($invalidFiles)) { $this->fail('Found broken files: ' . implode("\n", $invalidFiles)); } $errors = array(); $mergedConfig->validate($this->_mergedSchemaFile, $errors); if ($errors) { $this->fail('Merged routes config is invalid: ' . "\n" . implode("\n", $errors)); } }