diff options
| -rw-r--r-- | changelog.d/punycode-mention.fix | 1 | ||||
| -rw-r--r-- | lib/pleroma/formatter.ex | 2 | ||||
| -rw-r--r-- | test/pleroma/web/common_api/utils_test.exs | 6 | ||||
| -rw-r--r-- | test/pleroma/web/common_api_test.exs | 12 | 
4 files changed, 17 insertions, 4 deletions
diff --git a/changelog.d/punycode-mention.fix b/changelog.d/punycode-mention.fix new file mode 100644 index 000000000..f013c2dac --- /dev/null +++ b/changelog.d/punycode-mention.fix @@ -0,0 +1 @@ +Fix mentioning punycode domains when using Markdown diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index a46c3e381..11d5af2fb 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -124,7 +124,7 @@ defmodule Pleroma.Formatter do    end    def markdown_to_html(text) do -    Earmark.as_html!(text, %Earmark.Options{compact_output: true}) +    Earmark.as_html!(text, %Earmark.Options{compact_output: true, smartypants: false})    end    def html_escape({text, mentions, hashtags}, type) do diff --git a/test/pleroma/web/common_api/utils_test.exs b/test/pleroma/web/common_api/utils_test.exs index 4ce039d64..27b1da1e3 100644 --- a/test/pleroma/web/common_api/utils_test.exs +++ b/test/pleroma/web/common_api/utils_test.exs @@ -200,7 +200,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do        {result, _, []} = Utils.format_input(code, "text/markdown")        assert result == -               ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what’s up?</p>] +               ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what's up?</p>]      end      test "remote mentions" do @@ -211,7 +211,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do        {result, _, []} = Utils.format_input(code, "text/markdown")        assert result == -               ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what’s up?</p>] +               ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what's up?</p>]      end      test "raw HTML" do @@ -229,7 +229,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do      test "blockquote" do        code = ~s[> whoms't are you quoting?]        {result, [], []} = Utils.format_input(code, "text/markdown") -      assert result == "<blockquote><p>whoms’t are you quoting?</p></blockquote>" +      assert result == "<blockquote><p>whoms't are you quoting?</p></blockquote>"      end      test "code" do diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs index a98b16d4b..b21dd4e23 100644 --- a/test/pleroma/web/common_api_test.exs +++ b/test/pleroma/web/common_api_test.exs @@ -843,6 +843,18 @@ defmodule Pleroma.Web.CommonAPITest do        {:ok, _} = CommonAPI.post(user, %{status: "nice", quote_id: public.id})        {:ok, _} = CommonAPI.post(another_user, %{status: "nice", quote_id: public.id})      end + +    test "it properly mentions punycode domain" do +      user = insert(:user) + +      _mentioned_user = +        insert(:user, ap_id: "https://xn--i2raa.com/users/yyy", nickname: "yyy@xn--i2raa.com") + +      {:ok, activity} = +        CommonAPI.post(user, %{status: "hey @yyy@xn--i2raa.com", content_type: "text/markdown"}) + +      assert "https://xn--i2raa.com/users/yyy" in Object.normalize(activity).data["to"] +    end    end    describe "reactions" do  | 
