diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php new file mode 100644 index 0000000000000000000000000000000000000000..401042c031259f4c9e473e8ed7c0fbabb063b5fc --- /dev/null +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPageOnFrontend.php @@ -0,0 +1,52 @@ +<?php +/** + * Copyright © 2016 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Cms\Test\Constraint; + +use Magento\Cms\Test\Fixture\CmsPage; +use Magento\Cms\Test\Page\CmsPage as FrontCmsPage; +use Magento\Mtf\Client\BrowserInterface; +use Magento\Mtf\Constraint\AbstractConstraint; + +/** + * Assert that created CMS page with expected contents displayed on Frontend. + */ +class AssertCmsPageOnFrontend extends AbstractConstraint +{ + /** + * Assert that created CMS page with expected contents displayed on Frontend. + * + * @param CmsPage $cms + * @param FrontCmsPage $frontCmsPage, + * @param BrowserInterface $browser + * @param string $displayContent + * @return void + */ + public function processAssert( + CmsPage $cms, + FrontCmsPage $frontCmsPage, + BrowserInterface $browser, + $displayContent = null + ) { + $browser->open($_ENV['app_frontend_url'] . $cms->getIdentifier()); + $fixtureContent = $cms->getContent(); + \PHPUnit_Framework_Assert::assertContains( + $displayContent != null ? $displayContent : $fixtureContent['content'], + $frontCmsPage->getCmsPageBlock()->getPageContent(), + 'Wrong content is displayed.' + ); + } + + /** + * CMS Page content equals to data from fixture. + * + * @return string + */ + public function toString() + { + return 'CMS Page content equals to data from fixture.'; + } +} diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php index 51e9b428892cc53a2db873550f0e0c76d6d997d0..6db35e88efe49e92043b4d85127c74510fb18926 100644 --- a/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php @@ -30,6 +30,7 @@ class AssertCmsPagePreview extends AbstractConstraint * @param FrontCmsPage $frontCmsPage * @param CmsPage $cms * @param BrowserInterface $browser + * @param string $displayContent * @return void */ public function processAssert( @@ -37,7 +38,8 @@ class AssertCmsPagePreview extends AbstractConstraint FrontCmsIndex $frontCmsIndex, FrontCmsPage $frontCmsPage, CmsPage $cms, - BrowserInterface $browser + BrowserInterface $browser, + $displayContent = null ) { $cmsIndex->open(); $filter = ['title' => $cms->getTitle()]; @@ -46,7 +48,7 @@ class AssertCmsPagePreview extends AbstractConstraint $fixtureContent = $cms->getContent(); \PHPUnit_Framework_Assert::assertContains( - $fixtureContent['content'], + $displayContent != null ? $displayContent : $fixtureContent['content'], $frontCmsPage->getCmsPageBlock()->getPageContent(), 'Wrong content is displayed.' ); diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml index 67b4421182848ebb9b2633c4d9212e6679cccf51..f8b6c8c3d9e06da90b122ba39d0c3f01eebc1978 100644 --- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml @@ -54,5 +54,18 @@ <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" /> <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend" /> </variation> + <variation name="CreateCmsPageEntityTestVariation5" summary="Block Cache Exploit" ticketId="MAGETWO-48017"> + <data name="tag" xsi:type="string">severity:S2</data> + <data name="fixtureType" xsi:type="string">cmsPage</data> + <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data> + <data name="data/identifier" xsi:type="string">identifier-%isolation%</data> + <data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data> + <data name="data/is_active" xsi:type="string">Yes</data> + <data name="data/content/content" xsi:type="string">\\{{block class='Magento\Framework\View\Element\Text' text='bla bla bla' cache_key='BACKEND_ACL_RESOURCES' cache_lifetime=999\}}</data> + <data name="displayContent" xsi:type="string">bla bla bla</data> + <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" /> + <constraint name="Magento\Cms\Test\Constraint\AssertCmsPagePreview" /> + <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend" /> + </variation> </testCase> </config> diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml index f4b96844b27383679f0f2a65f63e5445b4e9b6e7..0d3e1b4ea97103d1fb941843f3c419b62f20d49b 100644 --- a/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml +++ b/dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml @@ -6,24 +6,84 @@ */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> - <type name="Magento\Cms\Test\Constraint\AssertCmsBlockSuccessSaveMessage"> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockDeleteMessage"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> - <type name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage"> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockNotInGrid"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S3</argument> </arguments> </type> <type name="Magento\Cms\Test\Constraint\AssertCmsBlockNotOnCategoryPage"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S3</argument> </arguments> </type> - <type name="Magento\Cms\Test\Constraint\AssertCmsBlockDeleteMessage"> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsBlockSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageDeleteMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageDuplicateErrorMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageForm"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S2</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageNotInGrid"> + <arguments> + <argument name="severity" xsi:type="string">S3</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPagePreview"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage"> + <arguments> + <argument name="severity" xsi:type="string">S1</argument> + </arguments> + </type> + <type name="Magento\Cms\Test\Constraint\AssertUrlRewriteCmsPageRedirect"> <arguments> - <argument name="severity" xsi:type="string">high</argument> + <argument name="severity" xsi:type="string">S1</argument> </arguments> </type> </config>