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));
     }
 }
Esempio n. 3
0
 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));
     }
 }
Esempio n. 4
0
 /**
  * @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);
 }
Esempio n. 5
0
 /**
  * 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();
 }
Esempio n. 6
0
 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));
     }
 }