18 use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
38 protected function setUp()
42 $this->injectDependenciesIntoViewHelper($this->viewHelper);
50 $this->setArgumentsUnderTest(
53 'value' =>
'Some string',
56 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
57 $this->assertEquals(
'Some string', $actualResult);
65 $this->viewHelper->setRenderChildrenClosure(
70 $this->setArgumentsUnderTest($this->viewHelper);
71 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
72 $this->assertEquals(
'Some string', $actualResult);
80 $source =
'This is a sample text without special characters.';
81 $this->setArgumentsUnderTest(
87 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
88 $this->assertSame($source, $actualResult);
96 $source =
'Some special characters: &©"\'';
97 $this->setArgumentsUnderTest(
103 $expectedResult =
'Some special characters: &©"'';
104 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
105 $this->assertEquals($expectedResult, $actualResult);
113 $source =
'Some special characters: &©"\'';
114 $this->setArgumentsUnderTest(
118 'keepQuotes' =>
true,
121 $expectedResult =
'Some special characters: &©"\'';
122 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
123 $this->assertEquals($expectedResult, $actualResult);
131 $source = utf8_decode(
'Some special characters: &©"\'');
132 $this->setArgumentsUnderTest(
136 'encoding' =>
'ISO-8859-1',
139 $expectedResult =
'Some special characters: &©"'';
140 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
141 $this->assertEquals($expectedResult, $actualResult);
149 $source =
'already "encoded"';
150 $this->setArgumentsUnderTest(
156 $expectedResult =
'already "encoded"';
157 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
158 $this->assertEquals($expectedResult, $actualResult);
166 $source =
'already "encoded"';
167 $this->setArgumentsUnderTest(
171 'doubleEncode' =>
false,
174 $expectedResult =
'already "encoded"';
175 $actualResult = $this->viewHelper->initializeArgumentsAndRender();
176 $this->assertEquals($expectedResult, $actualResult);
187 $source = new \stdClass();
188 $this->setArgumentsUnderTest(
194 $actualResult = $this->viewHelper->render();
195 $this->assertSame($source, $actualResult);
210 $this->setArgumentsUnderTest(
216 $actualResult = $this->viewHelper->render();
217 $this->assertSame($expectation, $actualResult);
225 $stdClass = new \stdClass();
226 $toStringClass =
new class() {
227 public function __toString(): string
229 return '<script>alert(\'"&xss"\')</script>';
234 'plain object' => [$stdClass, $stdClass],
235 'object with __toString()' => [$toStringClass,
'<script>alert('"&xss"')</script>'],