Skip to content

Commit 161de49

Browse files
committed
ACP2E-4148: Investigate if AC-9296 can be automated
1 parent c6777d5 commit 161de49

11 files changed

+69
-35
lines changed

dev/tests/integration/testsuite/Magento/PageBuilder/Plugin/Filter/TemplatePluginTest.php

Lines changed: 69 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,72 +3,83 @@
33
* Copyright 2019 Adobe
44
* All Rights Reserved.
55
*/
6-
76
declare(strict_types=1);
87

98
namespace Magento\PageBuilder\Plugin\Filter;
109

10+
use Magento\Framework\App\Area;
11+
use Magento\Framework\Filter\Template as FrameworkTemplateFilter;
1112
use Magento\Store\Model\Store;
12-
use Magento\Widget\Model\Template\Filter as TemplateFilter;
13+
use Magento\TestFramework\Fixture\AppArea;
14+
use Magento\TestFramework\Fixture\DataFixture;
1315
use Magento\TestFramework\Helper\Bootstrap;
16+
use Magento\Widget\Model\Template\Filter as WidgetTemplateFilter;
17+
use PHPUnit\Framework\Attributes\CoversClass;
18+
use PHPUnit\Framework\Attributes\DataProvider;
19+
use PHPUnit\Framework\TestCase;
1420

15-
/**
16-
* @magentoAppArea frontend
17-
*/
18-
class TemplatePluginTest extends \PHPUnit\Framework\TestCase
21+
#[
22+
CoversClass(TemplatePlugin::class),
23+
DataFixture('Magento/PageBuilder/_files/custom_variable_xss.php'),
24+
]
25+
class TemplatePluginTest extends TestCase
1926
{
2027
/**
21-
* @var \Magento\Framework\ObjectManagerInterface
22-
*/
23-
private $objectManager;
24-
25-
/**
26-
* @var TemplateFilter
28+
* @param string $preFiltered
29+
* @param string $postFiltered
30+
* @param string $preFilteredBasename
2731
*/
28-
private $templateFilter;
29-
30-
protected function setUp(): void
32+
#[
33+
AppArea(Area::AREA_GLOBAL),
34+
DataProvider('filterDataProvider'),
35+
]
36+
public function testFilter(string $preFiltered, string $postFiltered, string $preFilteredBasename): void
3137
{
32-
$this->objectManager = Bootstrap::getObjectManager();
33-
$this->templateFilter = $this->objectManager->get(TemplateFilter::class);
34-
35-
// set store id to 0 to recognize that escaping is required in custom variable
36-
$this->templateFilter->setStoreId(Store::DEFAULT_STORE_ID);
38+
$templateFilter = Bootstrap::getObjectManager()->create(FrameworkTemplateFilter::class);
39+
$filtered = $templateFilter->filter($preFiltered);
40+
$this->assertEquals(
41+
$this->formatHtml($postFiltered),
42+
$this->formatHtml($filtered),
43+
"Failed asserting that two strings are equal after filtering $preFilteredBasename"
44+
);
3745
}
3846

3947
/**
4048
* @param string $preFiltered
4149
* @param string $postFiltered
4250
* @param string $preFilteredBasename
43-
* @dataProvider filterDataProvider
44-
* @magentoDataFixture Magento/PageBuilder/_files/custom_variable_xss.php
45-
* @magentoDbIsolation enabled
4651
*/
47-
public function testFiltering(string $preFiltered, string $postFiltered, string $preFilteredBasename)
52+
#[
53+
AppArea(Area::AREA_FRONTEND),
54+
DataProvider('filterFrontendDataProvider'),
55+
]
56+
public function testFilterFrontend(string $preFiltered, string $postFiltered, string $preFilteredBasename): void
4857
{
58+
$templateFilter = Bootstrap::getObjectManager()->create(WidgetTemplateFilter::class);
59+
// set store id to 0 to recognize that escaping is required in custom variable
60+
$templateFilter->setStoreId(Store::DEFAULT_STORE_ID);
61+
$filtered = $templateFilter->filter($preFiltered);
4962
$this->assertEquals(
5063
$this->formatHtml($postFiltered),
51-
$this->formatHtml($this->templateFilter->filter($preFiltered)),
64+
$this->formatHtml($filtered),
5265
"Failed asserting that two strings are equal after filtering $preFilteredBasename"
5366
);
5467
}
5568

5669
/**
57-
* @return array
70+
* @param array $preFilteredFiles
71+
* @return array[]
5872
*/
59-
public static function filterDataProvider(): array
73+
private static function loadFiles(array $preFilteredFiles): array
6074
{
61-
$preFilteredFiles = glob(__DIR__ . '/../../_files/template_plugin/*pre_filter*');
62-
6375
$dataProviderArgs = [];
64-
6576
foreach ($preFilteredFiles as $preFilteredFile) {
6677
$preFilteredBasename = basename($preFilteredFile);
6778
$postFilteredFile = pathinfo($preFilteredFile, PATHINFO_DIRNAME) . '/' . str_replace(
68-
'pre_filter',
69-
'post_filter',
70-
$preFilteredBasename
71-
);
79+
'pre_filter',
80+
'post_filter',
81+
$preFilteredBasename
82+
);
7283

7384
$dataProviderArgs[] = [
7485
file_get_contents($preFilteredFile),
@@ -80,11 +91,34 @@ public static function filterDataProvider(): array
8091
return $dataProviderArgs;
8192
}
8293

94+
/**
95+
* @return array
96+
*/
97+
public static function filterDataProvider(): array
98+
{
99+
$preFilteredFiles = glob(__DIR__ . '/../../_files/template_plugin/*pre_filter*');
100+
$dataProviderArgs = self::loadFiles($preFilteredFiles);
101+
102+
return $dataProviderArgs;
103+
}
104+
105+
/**
106+
* @return array
107+
*/
108+
public static function filterFrontendDataProvider(): array
109+
{
110+
$dataProviderArgs = self::filterDataProvider();
111+
$preFilteredFiles = glob(__DIR__ . '/../../_files/template_plugin/frontend/*pre_filter*');
112+
$dataProviderArgs = array_merge($dataProviderArgs, self::loadFiles($preFilteredFiles));
113+
114+
return $dataProviderArgs;
115+
}
116+
83117
/**
84118
* Strip whitespace from the HTML to conduct a fairer comparison
85119
*
86120
* @param string $html
87-
* @return string|string[]|null
121+
* @return string
88122
*/
89123
private function formatHtml(string $html): string
90124
{
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)