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
{

0 commit comments

Comments
 (0)