[BUGFIX] Accept Unicode characters in email spam protection
[Packages/TYPO3.CMS.git] / typo3 / sysext / frontend / Tests / Unit / ContentObject / ContentObjectRendererTest.php
index dc01283..be2a1f4 100644 (file)
@@ -8216,6 +8216,50 @@ class ContentObjectRendererTest extends UnitTestCase
         $this->assertEquals($value, $this->subject->getUserObjectType());
     }
 
+    /**
+     * Data provider for emailSpamProtectionWithTypeAscii
+     *
+     * @return array [$content, $expect]
+     */
+    public function emailSpamProtectionWithTypeAsciiDataProvider(): array
+    {
+        return [
+            'Simple email address' => [
+                'test@email.tld',
+                'test@email.tld'
+            ],
+            'Simple email address with unicode characters' => [
+                'matthäus@email.tld',
+                'matthäus@email.tld'
+            ],
+            'Susceptible email address' => [
+                '"><script>alert(\'emailSpamProtection\')</script>',
+                '&#34;&#62;&#60;&#115;&#99;&#114;&#105;&#112;&#116;&#62;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#101;&#109;&#97;&#105;&#108;&#83;&#112;&#97;&#109;&#80;&#114;&#111;&#116;&#101;&#99;&#116;&#105;&#111;&#110;&#39;&#41;&#60;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#62;'
+
+            ],
+            'Susceptible email address with unicode characters' => [
+                '"><script>alert(\'ȅmǡilSpamProtȅction\')</script>',
+                '&#34;&#62;&#60;&#115;&#99;&#114;&#105;&#112;&#116;&#62;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#517;&#109;&#481;&#105;&#108;&#83;&#112;&#97;&#109;&#80;&#114;&#111;&#116;&#517;&#99;&#116;&#105;&#111;&#110;&#39;&#41;&#60;&#47;&#115;&#99;&#114;&#105;&#112;&#116;&#62;'
+            ],
+        ];
+    }
+
+    /**
+     * Check if email spam protection processes all UTF-8 characters properly
+     *
+     * @test
+     * @dataProvider emailSpamProtectionWithTypeAsciiDataProvider
+     * @param string $content The parameter $content.
+     * @param string $expected The expected output.
+     */
+    public function mailSpamProtectionWithTypeAscii(string $content, string $expected): void
+    {
+        $this->assertSame(
+            $expected,
+            $this->subject->_call('encryptEmail', $content, 'ascii')
+        );
+    }
+
     /***************************************************************************
      * End: Mixed tests
      ***************************************************************************/