3
3
* Copyright 2019 Adobe
4
4
* All Rights Reserved.
5
5
*/
6
-
7
6
declare (strict_types=1 );
8
7
9
8
namespace Magento \PageBuilder \Plugin \Filter ;
10
9
10
+ use Magento \Framework \App \Area ;
11
+ use Magento \Framework \Filter \Template as FrameworkTemplateFilter ;
11
12
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 ;
13
15
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 ;
14
20
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
19
26
{
20
27
/**
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
27
31
*/
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
31
37
{
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
+ );
37
45
}
38
46
39
47
/**
40
48
* @param string $preFiltered
41
49
* @param string $postFiltered
42
50
* @param string $preFilteredBasename
43
- * @dataProvider filterDataProvider
44
- * @magentoDataFixture Magento/PageBuilder/_files/custom_variable_xss.php
45
- * @magentoDbIsolation enabled
46
51
*/
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
48
57
{
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 );
49
62
$ this ->assertEquals (
50
63
$ this ->formatHtml ($ postFiltered ),
51
- $ this ->formatHtml ($ this -> templateFilter -> filter ( $ preFiltered ) ),
64
+ $ this ->formatHtml ($ filtered ),
52
65
"Failed asserting that two strings are equal after filtering $ preFilteredBasename "
53
66
);
54
67
}
55
68
56
69
/**
57
- * @return array
70
+ * @param array $preFilteredFiles
71
+ * @return array[]
58
72
*/
59
- public static function filterDataProvider ( ): array
73
+ private static function loadFiles ( array $ preFilteredFiles ): array
60
74
{
61
- $ preFilteredFiles = glob (__DIR__ . '/../../_files/template_plugin/*pre_filter* ' );
62
-
63
75
$ dataProviderArgs = [];
64
-
65
76
foreach ($ preFilteredFiles as $ preFilteredFile ) {
66
77
$ preFilteredBasename = basename ($ preFilteredFile );
67
78
$ 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
+ );
72
83
73
84
$ dataProviderArgs [] = [
74
85
file_get_contents ($ preFilteredFile ),
@@ -80,11 +91,34 @@ public static function filterDataProvider(): array
80
91
return $ dataProviderArgs ;
81
92
}
82
93
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
+
83
117
/**
84
118
* Strip whitespace from the HTML to conduct a fairer comparison
85
119
*
86
120
* @param string $html
87
- * @return string|string[]|null
121
+ * @return string
88
122
*/
89
123
private function formatHtml (string $ html ): string
90
124
{
0 commit comments