from unittest.mock import Mock import pytest from core.html import ContentRenderer, html_to_plaintext, sanitize_html def test_html_to_plaintext(): assert html_to_plaintext("
Hi!
") == "Hi!" assert html_to_plaintext("Hi!
There
Hi!
\n\nHow are you?
") == "Hi!\n\nHow are you?" ) assert ( html_to_plaintext("Hi!
\n\nHow are
you?
today
") == "Hi!\n\nHow are\n you?\n\ntoday" ) def test_sanitize_post(): assert sanitize_html("Hello!
") == "Hello!
" assert sanitize_html("It's great
") == "It's great
" # Note that we only want to linkify things with protocol prefixes to prevent # too many false positives. assert sanitize_html("test.com
") == "test.com
" assert ( sanitize_html("https://test.com
") == '' ) assert ( sanitize_html("@someone@subdomain.some-domain.com
") == "@someone@subdomain.some-domain.com
" ) @pytest.mark.django_db def test_link_preservation(): """ We want to: - Preserve incoming links from other servers - Linkify mentions and hashtags - Not have these all step on each other! """ renderer = ContentRenderer(local=True) fake_mention = Mock() fake_mention.username = "andrew" fake_mention.domain_id = "aeracode.org" fake_mention.urls.view = "/@andrew@aeracode.org/" fake_post = Mock() fake_post.mentions.all.return_value = [fake_mention] fake_post.author.domain.uri_domain = "example.com" fake_post.emojis.all.return_value = [] assert ( renderer.render_post( 'Hello @andrew, I want to link to this #hashtag: here and rewrite #thishashtag', fake_post, ) == 'Hello @andrew, I want to link to this #hashtag: here and rewrite #thishashtag' )