Skip to content

Commit c147a89

Browse files
committed
MC-23059: Template strict mode is not set for unsaved template previews
1 parent d652422 commit c147a89

File tree

10 files changed

+240
-0
lines changed

10 files changed

+240
-0
lines changed

app/code/Magento/Email/Block/Adminhtml/Template/Preview.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ protected function _toHtml()
6565
$template->setTemplateType($this->getRequest()->getParam('type'));
6666
$template->setTemplateText($this->getRequest()->getParam('text'));
6767
$template->setTemplateStyles($this->getRequest()->getParam('styles'));
68+
// Emulate DB-loaded template to invoke strict mode
69+
$template->setTemplateId(123);
6870
}
6971

7072
$template->setTemplateText($this->_maliciousCode->filter($template->getTemplateText()));

app/code/Magento/Email/Test/Mftf/ActionGroup/AdminEmailTemplateActionGroup.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,15 @@
7777

7878
<see userInput="{{expectedContent}}" stepKey="checkTemplateContainText"/>
7979
</actionGroup>
80+
81+
<actionGroup name="AdminPrepareDraftCustomTemplate" extends="AdminCreateNewEmailTemplate">
82+
<remove keyForRemoval="selectValueFromTemplateDropDown"/>
83+
<remove keyForRemoval="clickLoadTemplateButton"/>
84+
<remove keyForRemoval="clickSaveTemplateButton"/>
85+
<remove keyForRemoval="waitForSuccessMessage"/>
86+
<remove keyForRemoval="seeSuccessMessage"/>
87+
88+
<fillField selector="{{AdminEmailTemplateEditSection.templateSubject}}" userInput="{{template.templateSubject}}" after="fillTemplateNameField" stepKey="fillTemplateSubject"/>
89+
<fillField selector="{{AdminEmailTemplateEditSection.templateText}}" userInput="{{template.templateText}}" after="fillTemplateSubject" stepKey="fillTemplateText"/>
90+
</actionGroup>
8091
</actionGroups>

app/code/Magento/Email/Test/Mftf/Data/EmailTemplateData.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,11 @@
1313
<data key="templateSubject" unique="suffix">Template Subject_</data>
1414
<data key="templateText" unique="suffix">Template Text_</data>
1515
</entity>
16+
17+
<entity name="EmailTemplateWithDirectives" type="template">
18+
<data key="templateName" unique="suffix">Template</data>
19+
<data key="templateSubject" unique="suffix">Template Subject_</data>
20+
<data key="templateText">Template {{var this.template_id}}{{var this.getData(template_id)}} Text</data>
21+
<data key="expectedTemplate">Template 123 Text</data>
22+
</entity>
1623
</entities>

app/code/Magento/Email/Test/Mftf/Test/AdminEmailTemplatePreviewTest.xml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<testCaseId value="MC-15925"/>
1919
<useCaseId value="MAGETWO-97672"/>
2020
<group value="email"/>
21+
<group value="WYSIWYGDisabled"/>
2122
</annotations>
2223

2324
<before>
@@ -37,4 +38,76 @@
3738
<actionGroup ref="AdminPreviewEmailTemplate" stepKey="previewTemplate"/>
3839
<actionGroup ref="AdminAssertEmailTemplateContent" stepKey="assertContent"/>
3940
</test>
41+
42+
<test name="AdminEmailTemplatePreviewWithDirectivesTest">
43+
<annotations>
44+
<features value="Email"/>
45+
<stories value="Create email template with directives"/>
46+
<title value="Check email template preview with directives"/>
47+
<description value="Check if email template preview works correctly with directives"/>
48+
<severity value="CRITICAL"/>
49+
<useCaseId value="MC-23058"/>
50+
<group value="email"/>
51+
<group value="WYSIWYGDisabled"/>
52+
<stories value="Email Template Preview"/>
53+
</annotations>
54+
55+
<before>
56+
<!--Login to Admin Area-->
57+
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminArea"/>
58+
</before>
59+
60+
<after>
61+
<!--Delete created Template-->
62+
<actionGroup ref="AdminDeleteEmailTemplate" stepKey="deleteTemplate"/>
63+
<click selector="{{AdminDataGridHeaderSection.clearFilters}}" stepKey="clearFilters"/>
64+
<!--Logout from Admin Area-->
65+
<actionGroup ref="logout" stepKey="logoutOfAdmin"/>
66+
</after>
67+
68+
<actionGroup ref="AdminCreateCustomTemplate" stepKey="createTemplate">
69+
<argument name="template" value="EmailTemplateWithDirectives"/>
70+
</actionGroup>
71+
<actionGroup ref="AdminPreviewEmailTemplate" stepKey="previewTemplate"/>
72+
<actionGroup ref="AdminAssertEmailTemplateContent" stepKey="assertContent">
73+
<argument name="expectedContent" value="{{EmailTemplateWithDirectives.expectedTemplate}}"/>
74+
</actionGroup>
75+
</test>
76+
77+
<test name="AdminEmailTemplatePreviewAsDraftWithDirectivesTest">
78+
<annotations>
79+
<features value="Email"/>
80+
<stories value="Create email template with directives and preview as draft"/>
81+
<title value="Check email template preview with directives and preview as draft"/>
82+
<description value="Check if email template preview works correctly with directives in draft mode"/>
83+
<severity value="CRITICAL"/>
84+
<useCaseId value="MC-23058"/>
85+
<group value="email"/>
86+
<group value="WYSIWYGDisabled"/>
87+
<stories value="Email Template Preview"/>
88+
</annotations>
89+
90+
<before>
91+
<actionGroup ref="LoginAsAdmin" stepKey="loginToAdminArea"/>
92+
</before>
93+
94+
<after>
95+
<actionGroup ref="logout" stepKey="logoutOfAdmin"/>
96+
</after>
97+
98+
<actionGroup ref="AdminPrepareDraftCustomTemplate" stepKey="createDraftTemplate">
99+
<argument name="template" value="EmailTemplateWithDirectives"/>
100+
</actionGroup>
101+
102+
<click selector="{{AdminEmailTemplateEditSection.previewTemplateButton}}" stepKey="clickPreviewTemplate"/>
103+
<switchToNextTab stepKey="switchToPreviewTab"/>
104+
<seeInCurrentUrl url="{{AdminEmailTemplatePreviewPage.url}}" stepKey="seePreviewInUrl"/>
105+
<seeElement selector="{{AdminEmailTemplatePreviewSection.iframe}}" stepKey="seeIframeOnPage"/>
106+
<switchToIFrame userInput="preview_iframe" stepKey="switchToIframe"/>
107+
<waitForPageLoad stepKey="waitForPreviewLoaded"/>
108+
109+
<actionGroup ref="AdminAssertEmailTemplateContent" stepKey="assertContent">
110+
<argument name="expectedContent" value="{{EmailTemplateWithDirectives.expectedTemplate}}"/>
111+
</actionGroup>
112+
</test>
40113
</tests>

app/code/Magento/Newsletter/Block/Adminhtml/Template/Preview.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ protected function _toHtml()
6666
$template->setTemplateType($previewData['type']);
6767
$template->setTemplateText($previewData['text']);
6868
$template->setTemplateStyles($previewData['styles']);
69+
// Emulate DB-loaded template to invoke strict mode
70+
$template->setTemplateId(123);
6971
}
7072

7173
\Magento\Framework\Profiler::start($this->profilerName);
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="AdminAdminSwitchToPreviewIframeActionGroup">
11+
<executeJS function="document.getElementById('preview_iframe').sandbox.add('allow-scripts')" stepKey="addSandboxValue"/>
12+
<wait time="10" stepKey="waitBeforeSwitchToIframe"/>
13+
<switchToIFrame userInput="preview_iframe" stepKey="switchToIframe" />
14+
<waitForPageLoad stepKey="waitForPageLoad"/>
15+
</actionGroup>
16+
<actionGroup name="AdminNavigateToNewsletterGrid">
17+
<amOnPage url="{{NewsletterTemplateForm.url}}" stepKey="amOnNewsletterTemplatePage"/>
18+
<waitForPageLoad stepKey="waitForNewNewsletterPageLoad"/>
19+
</actionGroup>
20+
21+
<actionGroup name="AdminFillNewsletterForm">
22+
<arguments>
23+
<argument name="Newsletter" defaultValue="BasicFieldNewsletterSection"/>
24+
</arguments>
25+
<waitForElementVisible selector="{{BasicFieldNewsletterSection.templateName}}" stepKey="waitForTemplateNameField"/>
26+
<fillField selector="{{BasicFieldNewsletterSection.templateName}}" userInput="{{Newsletter.name}}" stepKey="fillTemplateName" />
27+
<fillField selector="{{BasicFieldNewsletterSection.templateSubject}}" userInput="{{Newsletter.subject}}" stepKey="fillTemplateSubject" />
28+
<fillField selector="{{BasicFieldNewsletterSection.senderName}}" userInput="{{Newsletter.senderName}}" stepKey="fillSenderName" />
29+
<fillField selector="{{BasicFieldNewsletterSection.senderEmail}}" userInput="{{Newsletter.senderEmail}}" stepKey="fillSenderEmail" />
30+
<fillField selector="{{BasicFieldNewsletterSection.templateText}}" userInput="{{Newsletter.templateText}}" stepKey="fillTemplateText" />
31+
</actionGroup>
32+
33+
<actionGroup name="AdminOpenNewsletterPreviewTab">
34+
<waitForElementVisible selector="{{BasicFieldNewsletterSection.templateName}}" stepKey="waitForPreviewButton"/>
35+
<click selector="{{BasicFieldNewsletterSection.preview}}" stepKey="clickPreview"/>
36+
<switchToNextTab stepKey="switchToPreviewTab"/>
37+
<waitForElementVisible selector="{{BasicFieldNewsletterSection.previewIframe}}" stepKey="waitForIframeVisible"/>
38+
<executeJS function="document.getElementById('preview_iframe').sandbox.add('allow-scripts')" stepKey="addSandboxValue"/>
39+
<switchToIFrame userInput="preview_iframe" stepKey="switchToIframe"/>
40+
<waitForPageLoad stepKey="waitForPreviewIframeLoaded"/>
41+
</actionGroup>
42+
43+
<actionGroup name="AdminAssertNewsletterContent">
44+
<arguments>
45+
<argument name="Newsletter" defaultValue="BasicFieldNewsletterSection"/>
46+
</arguments>
47+
<waitForText userInput="{{Newsletter.expectedTemplate}}" stepKey="checkTemplateContainsText"/>
48+
</actionGroup>
49+
</actionGroups>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
11+
<entity name="NewsletterWithDirectives" type="template">
12+
<data key="name" unique="suffix">Test Newsletter Template</data>
13+
<data key="subject">Test Newsletter Subject</data>
14+
<data key="senderName">Admin</data>
15+
<data key="senderEmail">admin@magento.com</data>
16+
<data key="templateText">Template {{var this.template_id}}{{var this.getData(template_id)}} Text</data>
17+
<data key="expectedTemplate">Template 123 Text</data>
18+
</entity>
19+
</entities>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
10+
<page name="NewsletterTemplateForm" url="/newsletter/template/new/" area="admin" module="Magento_Cms">
11+
<section name="StorefrontNewsletterSection"/>
12+
<section name="StorefrontNewsletterSection"/>
13+
</page>
14+
</pages>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
10+
<section name="BasicFieldNewsletterSection">
11+
<element name="templateName" type="input" selector="#code"/>
12+
<element name="templateSubject" type="input" selector="#subject"/>
13+
<element name="templateText" type="input" selector="#text"/>
14+
<element name="senderName" type="input" selector="#sender_name"/>
15+
<element name="senderEmail" type="input" selector="#sender_email"/>
16+
<element name="preview" type="button" selector="button[data-role='template-preview']"/>
17+
<element name="previewIframe" type="iframe" selector="#preview_iframe"/>
18+
</section>
19+
</sections>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminNewsletterDraftPreviewTest">
11+
<annotations>
12+
<features value="Newsletter"/>
13+
<group value="Newsletter"/>
14+
<group value="WYSIWYGDisabled"/>
15+
<title value="Admin should be able to preview Newsletter content in draft mode"/>
16+
<description value="Admin should be able to preview newsletter content in draft mode"/>
17+
<severity value="CRITICAL"/>
18+
<testCaseId value="MC-23058"/>
19+
<stories value="Newsletter Preview"/>
20+
</annotations>
21+
22+
<before>
23+
<actionGroup ref="LoginActionGroup" stepKey="login"/>
24+
</before>
25+
26+
<after>
27+
<actionGroup ref="logout" stepKey="logout"/>
28+
</after>
29+
30+
<actionGroup ref="AdminNavigateToNewsletterGrid" stepKey="navigateToGrid"/>
31+
32+
<actionGroup ref="AdminFillNewsletterForm" stepKey="fillForm">
33+
<argument name="Newsletter" value="NewsletterWithDirectives"/>
34+
</actionGroup>
35+
36+
<actionGroup ref="AdminOpenNewsletterPreviewTab" stepKey="openPreviewTab"/>
37+
38+
<actionGroup ref="AdminAssertNewsletterContent" stepKey="assertTemplateContent">
39+
<argument name="Newsletter" value="NewsletterWithDirectives"/>
40+
</actionGroup>
41+
42+
<closeTab stepKey="closeTab"/>
43+
</test>
44+
</tests>

0 commit comments

Comments
 (0)