‪TYPO3CMS  ‪main
HtmlentitiesViewHelperTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
22 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
23 use TYPO3Fluid\Fluid\View\TemplateView;
24 
25 final class ‪HtmlentitiesViewHelperTest extends FunctionalTestCase
26 {
27  protected bool ‪$initializeDatabase = false;
28 
29  #[Test]
30  public function ‪renderUsesValueAsSourceIfSpecified(): void
31  {
32  $context = $this->get(RenderingContextFactory::class)->create();
33  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities value="Some string" />');
34  self::assertEquals('Some string', (new TemplateView($context))->render());
35  }
36 
37  #[Test]
39  {
40  $context = $this->get(RenderingContextFactory::class)->create();
41  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities>Some string</f:format.htmlentities>');
42  self::assertEquals('Some string', (new TemplateView($context))->render());
43  }
44 
45  #[Test]
47  {
48  $source = 'This is a sample text without special characters.';
49  $context = $this->get(RenderingContextFactory::class)->create();
50  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities value="' . $source . '" />');
51  self::assertEquals($source, (new TemplateView($context))->render());
52  }
53 
54  #[Test]
55  public function ‪renderEncodesSimpleString(): void
56  {
57  $source = 'Some special characters: &©"\'';
58  $expectedResult = 'Some special characters: &amp;&copy;&quot;&#039;';
59  $context = $this->get(RenderingContextFactory::class)->create();
60  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities>' . $source . '</f:format.htmlentities>');
61  self::assertEquals($expectedResult, (new TemplateView($context))->render());
62  }
63 
64  #[Test]
65  public function ‪renderRespectsKeepQuoteArgument(): void
66  {
67  $source = 'Some special characters: &©"\'';
68  $expectedResult = 'Some special characters: &amp;&copy;"\'';
69  $context = $this->get(RenderingContextFactory::class)->create();
70  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities keepQuotes="true">' . $source . '</f:format.htmlentities>');
71  self::assertEquals($expectedResult, (new TemplateView($context))->render());
72  }
73 
74  #[Test]
75  public function ‪renderRespectsEncodingArgument(): void
76  {
77  $source = mb_convert_encoding('Some special characters: &©"\'', 'ISO-8859-1', 'UTF-8');
78  $expectedResult = 'Some special characters: &amp;&copy;&quot;&#039;';
79  $context = $this->get(RenderingContextFactory::class)->create();
80  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities encoding="ISO-8859-1">' . $source . '</f:format.htmlentities>');
81  self::assertEquals($expectedResult, (new TemplateView($context))->render());
82  }
83 
84  #[Test]
86  {
87  $source = 'already &quot;encoded&quot;';
88  $expectedResult = 'already &amp;quot;encoded&amp;quot;';
89  $context = $this->get(RenderingContextFactory::class)->create();
90  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities>' . $source . '</f:format.htmlentities>');
91  self::assertEquals($expectedResult, (new TemplateView($context))->render());
92  }
93 
94  #[Test]
96  {
97  $source = 'already &quot;encoded&quot;';
98  $expectedResult = 'already &quot;encoded&quot;';
99  $context = $this->get(RenderingContextFactory::class)->create();
100  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities doubleEncode="false">' . $source . '</f:format.htmlentities>');
101  self::assertEquals($expectedResult, (new TemplateView($context))->render());
102  }
103 
104  #[Test]
105  public function ‪renderEscapesObjectIfPossible(): void
106  {
107  $toStringClass = new class () {
108  public function __toString(): string
109  {
110  return '<script>alert(\'"&xss"\')</script>';
111  }
112  };
113  $context = $this->get(RenderingContextFactory::class)->create();
114  $context->getTemplatePaths()->setTemplateSource('<f:format.htmlentities value="{source}" />');
115  $view = new TemplateView($context);
116  $view->assign('source', $toStringClass);
117  self::assertEquals('&lt;script&gt;alert(&#039;&quot;&amp;xss&quot;&#039;)&lt;/script&gt;', $view->render());
118  }
119 }
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderRespectsEncodingArgument
‪renderRespectsEncodingArgument()
Definition: HtmlentitiesViewHelperTest.php:75
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderConvertsAlreadyConvertedEntitiesByDefault
‪renderConvertsAlreadyConvertedEntitiesByDefault()
Definition: HtmlentitiesViewHelperTest.php:85
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderUsesChildnodesAsSourceIfSpecified
‪renderUsesChildnodesAsSourceIfSpecified()
Definition: HtmlentitiesViewHelperTest.php:38
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderDoesNotModifyValueIfItDoesNotContainSpecialCharacters
‪renderDoesNotModifyValueIfItDoesNotContainSpecialCharacters()
Definition: HtmlentitiesViewHelperTest.php:46
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\$initializeDatabase
‪bool $initializeDatabase
Definition: HtmlentitiesViewHelperTest.php:27
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format
Definition: BytesViewHelperTest.php:18
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderEncodesSimpleString
‪renderEncodesSimpleString()
Definition: HtmlentitiesViewHelperTest.php:55
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest
Definition: HtmlentitiesViewHelperTest.php:26
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderRespectsKeepQuoteArgument
‪renderRespectsKeepQuoteArgument()
Definition: HtmlentitiesViewHelperTest.php:65
‪TYPO3\CMS\Fluid\Core\Rendering\RenderingContextFactory
Definition: RenderingContextFactory.php:51
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderUsesValueAsSourceIfSpecified
‪renderUsesValueAsSourceIfSpecified()
Definition: HtmlentitiesViewHelperTest.php:30
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderDoesNotConvertAlreadyConvertedEntitiesIfDoubleQuoteIsFalse
‪renderDoesNotConvertAlreadyConvertedEntitiesIfDoubleQuoteIsFalse()
Definition: HtmlentitiesViewHelperTest.php:95
‪TYPO3\CMS\Fluid\Tests\Functional\ViewHelpers\Format\HtmlentitiesViewHelperTest\renderEscapesObjectIfPossible
‪renderEscapesObjectIfPossible()
Definition: HtmlentitiesViewHelperTest.php:105