From ec36a0d58988c948dcb352081126ae0644519290 Mon Sep 17 00:00:00 2001
From: Benni Mack <benni@typo3.org>
Date: Tue, 25 Jun 2019 12:38:32 +0200
Subject: [PATCH] [BUGFIX] Add tests for email via typolink

Resolves: #88287
Releases: master
Change-Id: I4e6efbd00caca8c1ed01252f1dde30f36330640e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/61151
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Jonas Eberle <flightvision@googlemail.com>
Tested-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Jonas Eberle <flightvision@googlemail.com>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
---
 .../ContentObjectRendererTest.php             | 31 +++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/typo3/sysext/frontend/Tests/Functional/ContentObject/ContentObjectRendererTest.php b/typo3/sysext/frontend/Tests/Functional/ContentObject/ContentObjectRendererTest.php
index 8197d1d2a5e0..113801659c2d 100644
--- a/typo3/sysext/frontend/Tests/Functional/ContentObject/ContentObjectRendererTest.php
+++ b/typo3/sysext/frontend/Tests/Functional/ContentObject/ContentObjectRendererTest.php
@@ -437,6 +437,37 @@ class ContentObjectRendererTest extends \TYPO3\TestingFramework\Core\Functional\
         $this->assertEquals($expectedResult, $subject->typoLink($linkText, $configuration));
     }
 
+    /**
+     * @test
+     */
+    public function typolinkReturnsCorrectLinkForEmails()
+    {
+        $expected = '<a href="mailto:test@example.com">Send me an email</a>';
+        $subject = new ContentObjectRenderer();
+        $result = $subject->typoLink('Send me an email', ['parameter' => 'mailto:test@example.com']);
+        $this->assertEquals($expected, $result);
+
+        $result = $subject->typoLink('Send me an email', ['parameter' => 'test@example.com']);
+        $this->assertEquals($expected, $result);
+    }
+
+    /**
+     * @test
+     */
+    public function typolinkReturnsCorrectLinkForSpamEncryptedEmails()
+    {
+        $tsfe = $this->getMockBuilder(TypoScriptFrontendController::class)->disableOriginalConstructor()->getMock();
+        $subject = new ContentObjectRenderer($tsfe);
+
+        $tsfe->spamProtectEmailAddresses = 1;
+        $result = $subject->typoLink('Send me an email', ['parameter' => 'mailto:test@example.com']);
+        $this->assertEquals('<a href="javascript:linkTo_UnCryptMailto(\'nbjmup+uftuAfybnqmf\/dpn\');">Send me an email</a>', $result);
+
+        $tsfe->spamProtectEmailAddresses = 'ascii';
+        $result = $subject->typoLink('Send me an email', ['parameter' => 'mailto:test@example.com']);
+        $this->assertEquals('<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#101;&#115;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;">Send me an email</a>', $result);
+    }
+
     /**
      * @test
      */
-- 
GitLab