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!\nThere" assert ( html_to_plaintext("

Hi!

\n\n

How are you?

") == "Hi!\n\nHow are you?" ) assert ( html_to_plaintext("

Hi!

\n\n

How 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

") == '

https://test.com

' ) assert ( sanitize_html("

@someone@subdomain.some-domain.com

") == "

@someone@subdomain.some-domain.com

" ) @pytest.mark.django_db def test_link_preservation(emoji_locals): """ 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" 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' )