From 99cbff252b363f49335204c71cefe5e8ec23d2e3 Mon Sep 17 00:00:00 2001 From: Roland Illig Date: Sat, 16 Feb 2019 22:34:48 +0100 Subject: [PATCH] Added more examples for tricky autolink URLs --- .../eu/faircode/email/HtmlHelperTest.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/app/src/test/java/eu/faircode/email/HtmlHelperTest.java b/app/src/test/java/eu/faircode/email/HtmlHelperTest.java index 613afc2e44..9e452a6006 100644 --- a/app/src/test/java/eu/faircode/email/HtmlHelperTest.java +++ b/app/src/test/java/eu/faircode/email/HtmlHelperTest.java @@ -94,6 +94,47 @@ public class HtmlHelperTest { " and " + "http://example.org/" ); + + // Square brackets in URLs are typically generated by Typo3. + // See https://forge.typo3.org/issues/22118. + testAutolink( + "http://typo3.example.org/?tt_news[uid]=123", + + "" + + "http://typo3.example.org/?tt_news[uid]=123" + ); + + // When copying a Wikipedia URL in Google Chrome, the parentheses are not + // percent-encoded. This creates an ambiguity since the closing parenthesis + // typically appears at the very end of the URL, where it could equally well + // belong to the surrounding human-language text. + testAutolink( + "See https://en.wikipedia.org/wiki/Java_(programming_language), " + + "which explains it all.", + + "See " + + "https://en.wikipedia.org/wiki/Java_(programming_language), " + + "which explains it all." + ); + + testAutolink( + "See my homepage (at https://example.org), with lots of examples.", + + // FIXME: The URL doesn't contain an opening parenthesis, therefore + // the closing parenthesis probably also doesn't belong to it. + "See my homepage (at " + + "https://example.org), with lots of examples." + ); + + // The terminating sequence of a base64-encoded URL parameter is always + // part of the URL. This is typically used for password reset links, and + // these are often sent via e-mail. + testAutolink( + "https://example.org/forgot?token=AAAAAA==", + + "" + + "https://example.org/forgot?token=AAAAAA==" + ); } private void testAutolink(String input, String expectedOutput) {