Skip to content

Commit a6ae954

Browse files
committed
MAGETWO-58354: Automated functional test block cache exploit in cms page.
1 parent 6748d77 commit a6ae954

File tree

4 files changed

+74
-2
lines changed

4 files changed

+74
-2
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Cms\Test\Constraint;
8+
9+
use Magento\Cms\Test\Fixture\CmsPage;
10+
use Magento\Cms\Test\Page\CmsPage as FrontCmsPage;
11+
use Magento\Mtf\Client\BrowserInterface;
12+
use Magento\Mtf\Constraint\AbstractConstraint;
13+
14+
/**
15+
* Assert that created CMS page with expected contents displayed on Frontend.
16+
*/
17+
class AssertCmsPageOnFrontend extends AbstractConstraint
18+
{
19+
/**
20+
* Assert that created CMS page with expected contents displayed on Frontend.
21+
*
22+
* @param CmsPage $cms
23+
* @param FrontCmsPage $frontCmsPage,
24+
* @param BrowserInterface $browser
25+
* @param string $displayContent
26+
* @return void
27+
*/
28+
public function processAssert(
29+
CmsPage $cms,
30+
FrontCmsPage $frontCmsPage,
31+
BrowserInterface $browser,
32+
$displayContent = null
33+
) {
34+
$browser->open($_ENV['app_frontend_url'] . $cms->getIdentifier());
35+
$fixtureContent = $cms->getContent();
36+
\PHPUnit_Framework_Assert::assertContains(
37+
$displayContent != null ? $displayContent : $fixtureContent['content'],
38+
$frontCmsPage->getCmsPageBlock()->getPageContent(),
39+
'Wrong content is displayed.'
40+
);
41+
}
42+
43+
/**
44+
* CMS Page content equals to data from fixture.
45+
*
46+
* @return string
47+
*/
48+
public function toString()
49+
{
50+
return 'CMS Page content equals to data from fixture.';
51+
}
52+
}

dev/tests/functional/tests/app/Magento/Cms/Test/Constraint/AssertCmsPagePreview.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,16 @@ class AssertCmsPagePreview extends AbstractConstraint
3030
* @param FrontCmsPage $frontCmsPage
3131
* @param CmsPage $cms
3232
* @param BrowserInterface $browser
33+
* @param string $displayContent
3334
* @return void
3435
*/
3536
public function processAssert(
3637
CmsPageIndex $cmsIndex,
3738
FrontCmsIndex $frontCmsIndex,
3839
FrontCmsPage $frontCmsPage,
3940
CmsPage $cms,
40-
BrowserInterface $browser
41+
BrowserInterface $browser,
42+
$displayContent = null
4143
) {
4244
$cmsIndex->open();
4345
$filter = ['title' => $cms->getTitle()];
@@ -46,7 +48,7 @@ public function processAssert(
4648

4749
$fixtureContent = $cms->getContent();
4850
\PHPUnit_Framework_Assert::assertContains(
49-
$fixtureContent['content'],
51+
$displayContent != null ? $displayContent : $fixtureContent['content'],
5052
$frontCmsPage->getCmsPageBlock()->getPageContent(),
5153
'Wrong content is displayed.'
5254
);

dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,18 @@
5454
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
5555
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageDisabledOnFrontend" />
5656
</variation>
57+
<variation name="CreateCmsPageEntityTestVariation5" summary="Block Cache Exploit" ticketId="MAGETWO-48017">
58+
<data name="tag" xsi:type="string">severity:S2</data>
59+
<data name="fixtureType" xsi:type="string">cmsPage</data>
60+
<data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
61+
<data name="data/identifier" xsi:type="string">identifier-%isolation%</data>
62+
<data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
63+
<data name="data/is_active" xsi:type="string">Yes</data>
64+
<data name="data/content/content" xsi:type="string">\\{{block class=&apos;Magento\Framework\View\Element\Text&apos; text=&apos;bla bla bla&apos; cache_key=&apos;BACKEND_ACL_RESOURCES&apos; cache_lifetime=999\}}</data>
65+
<data name="displayContent" xsi:type="string">bla bla bla</data>
66+
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
67+
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPagePreview" />
68+
<constraint name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend" />
69+
</variation>
5770
</testCase>
5871
</config>

dev/tests/functional/tests/app/Magento/Cms/Test/etc/di.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@
6666
<argument name="severity" xsi:type="string">S3</argument>
6767
</arguments>
6868
</type>
69+
<type name="Magento\Cms\Test\Constraint\AssertCmsPageOnFrontend">
70+
<arguments>
71+
<argument name="severity" xsi:type="string">S1</argument>
72+
</arguments>
73+
</type>
6974
<type name="Magento\Cms\Test\Constraint\AssertCmsPagePreview">
7075
<arguments>
7176
<argument name="severity" xsi:type="string">S1</argument>

0 commit comments

Comments
 (0)