Support TLD wildcards in MRF matches
[akkoma] / test / pleroma / web / activity_pub / mrf_test.exs
index f04c69afb693299d41bdaafd35e314d0ac4c1f98..7359398febd0c27c14cb85cb45712fca68dc382b 100644 (file)
@@ -48,6 +48,31 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
       refute MRF.subdomain_match?(regexes, "sub.unsafe.tldanother")
     end
 
+    test "wildcard on the tld" do
+      regexes = MRF.subdomains_regex(["somewhere.*"])
+
+      assert regexes == [~r/^(.+\.)?somewhere\.(.+)$/i]
+
+      assert MRF.subdomain_match?(regexes, "somewhere.net")
+      assert MRF.subdomain_match?(regexes, "somewhere.com")
+      assert MRF.subdomain_match?(regexes, "somewhere.somewherelese.net")
+      refute MRF.subdomain_match?(regexes, "somewhere")
+    end
+
+    test "wildcards on subdomain _and_ tld" do
+      regexes = MRF.subdomains_regex(["*.somewhere.*"])
+
+      assert regexes == [~r/^(.+\.)?somewhere\.(.+)$/i]
+
+      assert MRF.subdomain_match?(regexes, "somewhere.net")
+      assert MRF.subdomain_match?(regexes, "somewhere.com")
+      assert MRF.subdomain_match?(regexes, "sub.somewhere.net")
+      assert MRF.subdomain_match?(regexes, "sub.somewhere.com")
+      assert MRF.subdomain_match?(regexes, "sub.sub.somewhere.net")
+      assert MRF.subdomain_match?(regexes, "sub.sub.somewhere.com")
+      refute MRF.subdomain_match?(regexes, "somewhere")
+    end
+
     test "matches are case-insensitive" do
       regexes = MRF.subdomains_regex(["UnSafe.TLD", "UnSAFE2.Tld"])
 
@@ -77,7 +102,7 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
       clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy])
 
       expected = %{
-        mrf_policies: ["NoOpPolicy", "HashtagPolicy", "InlineQuotePolicy"],
+        mrf_policies: ["NoOpPolicy", "HashtagPolicy", "InlineQuotePolicy", "NormalizeMarkup"],
         mrf_hashtag: %{
           federated_timeline_removal: [],
           reject: [],
@@ -93,7 +118,7 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
       clear_config([:mrf, :policies], [MRFModuleMock])
 
       expected = %{
-        mrf_policies: ["MRFModuleMock", "HashtagPolicy", "InlineQuotePolicy"],
+        mrf_policies: ["MRFModuleMock", "HashtagPolicy", "InlineQuotePolicy", "NormalizeMarkup"],
         mrf_module_mock: "some config data",
         mrf_hashtag: %{
           federated_timeline_removal: [],