From 534125c94b4010af5e0030b4974c795e76ed938a Mon Sep 17 00:00:00 2001 From: Jerome Leclanche Date: Thu, 28 Mar 2019 00:33:24 +0100 Subject: [PATCH] Fix emails not getting linkified correctly Fixes #398 --- tildes/tests/test_markdown.py | 12 ++++++++++-- tildes/tildes/lib/markdown.py | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tildes/tests/test_markdown.py b/tildes/tests/test_markdown.py index 3e18196..e633d17 100644 --- a/tildes/tests/test_markdown.py +++ b/tildes/tests/test_markdown.py @@ -148,6 +148,14 @@ def test_https_link_linkified(): assert '' in processed +def test_mailto_link_linkified(): + """Ensure that writing an email results in a working mailto link.""" + markdown = "My email is email@example.com." + processed = convert_markdown_to_safe_html(markdown) + + assert '' in processed + + def test_link_with_path_linkified(): """Ensure a link with a path results in a link.""" markdown = "So http://example.com/a/b_c_d/e too?" @@ -166,7 +174,7 @@ def test_link_with_query_string_linkified(): def test_other_protocol_urls_not_linkified(): """Ensure some other protocols don't linkify (not comprehensive).""" - protocols = ("data", "ftp", "irc", "mailto", "news", "ssh", "xmpp") + protocols = ("data", "ftp", "irc", "news", "ssh", "xmpp") for protocol in protocols: markdown = f"Testing {protocol}://example.com for linking" @@ -205,7 +213,7 @@ def test_html_lookalike_closing_not_removed(): def test_a_href_protocol_violation(): """Ensure link to other protocols removes the link (not comprehensive).""" - protocols = ("data", "ftp", "irc", "mailto", "news", "ssh", "xmpp") + protocols = ("data", "ftp", "irc", "news", "ssh", "xmpp") for protocol in protocols: markdown = f"Testing [a link]({protocol}://example.com) for linking" diff --git a/tildes/tildes/lib/markdown.py b/tildes/tildes/lib/markdown.py index 9bb9476..d9cce60 100644 --- a/tildes/tildes/lib/markdown.py +++ b/tildes/tildes/lib/markdown.py @@ -95,7 +95,7 @@ HTML_ATTRIBUTE_WHITELIST = { "code": allow_syntax_highlighting_classes, "span": allow_syntax_highlighting_classes, } -PROTOCOL_WHITELIST = ("http", "https") +PROTOCOL_WHITELIST = ("http", "https", "mailto") # Regex that finds ordered list markdown that was probably accidental - ones being # initiated by anything except "1." at the start of a post