Skip to content

Commit

Permalink
Merge remote-tracking branch 'github-magento2ce/MAGETWO-91717' into E…
Browse files Browse the repository at this point in the history
…PAM-PR-12
  • Loading branch information
nikshostko committed Oct 2, 2018
2 parents 65550ba + b7f7a58 commit 518ee0c
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,26 @@ class XsdTest extends \PHPUnit\Framework\TestCase
/**
* @var string
*/
protected $_schemaFile;
private $schemaFile;

/**
* @var string
*/
private $schemaQueueFile;

/**
* Set up.
*
* @return void
*/
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->_schemaFile = $urnResolver->getRealPath('urn:magento:framework-message-queue:etc/consumer.xsd');
$this->schemaFile = $urnResolver->getRealPath('urn:magento:framework-message-queue:etc/consumer.xsd');
$this->schemaQueueFile = $urnResolver->getRealPath('urn:magento:framework-message-queue:etc/queue.xsd');
}

/**
Expand All @@ -29,13 +40,13 @@ protected function setUp()
public function testExemplarXml($fixtureXml, array $expectedErrors)
{
$validationState = $this->createMock(\Magento\Framework\Config\ValidationStateInterface::class);
$validationState->expects($this->any())
$validationState->expects($this->atLeastOnce())
->method('isValidationRequired')
->willReturn(true);
$messageFormat = '%message%';
$dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationState, [], null, null, $messageFormat);
$actualErrors = [];
$actualResult = $dom->validate($this->_schemaFile, $actualErrors);
$actualResult = $dom->validate($this->schemaFile, $actualErrors);
$this->assertEquals(empty($expectedErrors), $actualResult, "Validation result is invalid.");
$this->assertEquals($expectedErrors, $actualErrors, "Validation errors does not match.");
}
Expand Down Expand Up @@ -125,4 +136,106 @@ public function exemplarXmlDataProvider()
];
// @codingStandardsIgnoreEnd
}

/**
* @param string $fixtureXml
* @param array $expectedErrors
* @dataProvider exemplarQueueXmlDataProvider
*/
public function testExemplarQueueXml($fixtureXml, array $expectedErrors)
{
$validationState = $this->createMock(\Magento\Framework\Config\ValidationStateInterface::class);
$validationState->expects($this->atLeastOnce())
->method('isValidationRequired')
->willReturn(true);
$messageFormat = '%message%';
$dom = new \Magento\Framework\Config\Dom($fixtureXml, $validationState, [], null, null, $messageFormat);
$actualErrors = [];
$actualResult = $dom->validate($this->schemaQueueFile, $actualErrors);
$this->assertEquals(empty($expectedErrors), $actualResult, "Validation result is invalid.");
$this->assertEquals($expectedErrors, $actualErrors, "Validation errors does not match.");
}

/**
* @return array
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function exemplarQueueXmlDataProvider()
{
// @codingStandardsIgnoreStart
return [
'valid' => [
'<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
<broker topic="asd" >
<queue name="queue1" consumer="consumer1" handler="handlerClassOne1::handlerMethod1" consumerInstance="consumerClass1" maxMessages="5"/>
<queue name="queue2" consumer="consumer2" handler="handlerClassOne2::handlerMethod2" consumerInstance="consumerClass2" maxMessages="5"/>
</broker>
</config>',
[],
],
'invalid handler format' => [
'<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
<broker topic="asd" >
<queue name="queue1" consumer="consumer1" handler="handlerClass_One1::handlerMethod1" consumerInstance="consumerClass1" maxMessages="5"/>
<queue name="queue2" consumer="consumer2" handler="handlerClassOne2::handler_Method2" consumerInstance="consumerClass2" maxMessages="5"/>
</broker>
</config>',
[
"Element 'queue', attribute 'handler': [facet 'pattern'] The value 'handlerClass_One1::handlerMethod1' is not accepted by the pattern '[a-zA-Z0-9\\\\]+::[a-zA-Z0-9]+'.",
"Element 'queue', attribute 'handler': 'handlerClass_One1::handlerMethod1' is not a valid value of the atomic type 'handlerType'.",
"Element 'queue', attribute 'handler': [facet 'pattern'] The value 'handlerClassOne2::handler_Method2' is not accepted by the pattern '[a-zA-Z0-9\\\\]+::[a-zA-Z0-9]+'.",
"Element 'queue', attribute 'handler': 'handlerClassOne2::handler_Method2' is not a valid value of the atomic type 'handlerType'.",
],
],
'invalid instance format' => [
'<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
<broker topic="asd" >
<queue name="queue1" consumer="consumer1" handler="handlerClassOne1::handlerMethod1" consumerInstance="consumer_Class1" maxMessages="5"/>
<queue name="queue2" consumer="consumer2" handler="handlerClassOne2::handlerMethod2" consumerInstance="consumerClass_2" maxMessages="5"/>
</broker>
</config>',
[
"Element 'queue', attribute 'consumerInstance': [facet 'pattern'] The value 'consumer_Class1' is not accepted by the pattern '[a-zA-Z0-9\\\\]+'.",
"Element 'queue', attribute 'consumerInstance': 'consumer_Class1' is not a valid value of the atomic type 'instanceType'.",
"Element 'queue', attribute 'consumerInstance': [facet 'pattern'] The value 'consumerClass_2' is not accepted by the pattern '[a-zA-Z0-9\\\\]+'.",
"Element 'queue', attribute 'consumerInstance': 'consumerClass_2' is not a valid value of the atomic type 'instanceType'.",
],
],
'invalid maxMessages format' => [
'<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
<broker topic="asd" >
<queue name="queue1" consumer="consumer1" handler="handlerClassOne1::handlerMethod1" consumerInstance="consumerClass1" maxMessages="ABC"/>
<queue name="queue2" consumer="consumer2" handler="handlerClassOne2::handlerMethod2" consumerInstance="consumerClass2" maxMessages="5"/>
</broker>
</config>',
[
"Element 'queue', attribute 'maxMessages': 'ABC' is not a valid value of the atomic type 'xs:integer'.",
],
],
'unexpected element' => [
'<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
<broker topic="asd" >
<queue name="queue1" consumer="consumer1" handler="handlerClassOne1::handlerMethod1" consumerInstance="consumerClass1" maxMessages="2"/>
<queue name="queue2" consumer="consumer2" handler="handlerClassOne2::handlerMethod2" consumerInstance="consumerClass2" maxMessages="5"/>
<unexpected name="queue2"/>
</broker>
</config>',
[
"Element 'unexpected': This element is not expected. Expected is ( queue ).",
],
],
'unexpected attribute' => [
'<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd">
<broker topic="asd" >
<queue name="queue1" consumer="consumer1" handler="handlerClassOne1::handlerMethod1" consumerInstance="consumerClass1" maxMessages="2"/>
<queue name="queue2" consumer="consumer2" handler="handlerClassOne2::handlerMethod2" consumerInstance="consumerClass2" maxMessages="5" unexpected="unexpected"/>
</broker>
</config>',
[
"Element 'queue', attribute 'unexpected': The attribute 'unexpected' is not allowed.",
],
],
];
// @codingStandardsIgnoreEnd
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z\\]+" />
<xs:pattern value="[a-zA-Z0-9\\]+" />
<xs:minLength value="4" />
</xs:restriction>
</xs:simpleType>
Expand All @@ -53,7 +53,7 @@
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z\\]+::[a-zA-Z]+" />
<xs:pattern value="[a-zA-Z0-9\\]+::[a-zA-Z0-9]+" />
<xs:minLength value="5" />
</xs:restriction>
</xs:simpleType>
Expand Down

0 comments on commit 518ee0c

Please sign in to comment.