diff options
| author | rinpatch <rinpatch@sdf.org> | 2019-02-11 21:35:40 +0300 | 
|---|---|---|
| committer | rinpatch <rinpatch@sdf.org> | 2019-02-11 21:35:40 +0300 | 
| commit | 379d04692cdbf558c611c588c0e6a4262c02a58c (patch) | |
| tree | d62e5ddd6b7f032582a0b1d1dd50bb10693a249e /test | |
| parent | 39383a6b79f5fe8e449d8e1acbc60f265065ad07 (diff) | |
| download | pleroma-379d04692cdbf558c611c588c0e6a4262c02a58c.tar.gz pleroma-379d04692cdbf558c611c588c0e6a4262c02a58c.zip | |
Filter summary in keywordpolicy
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/activity_pub/mrf/keyword_policy_test.exs | 132 | 
1 files changed, 120 insertions, 12 deletions
| diff --git a/test/web/activity_pub/mrf/keyword_policy_test.exs b/test/web/activity_pub/mrf/keyword_policy_test.exs index 67a5858d7..602892a37 100644 --- a/test/web/activity_pub/mrf/keyword_policy_test.exs +++ b/test/web/activity_pub/mrf/keyword_policy_test.exs @@ -12,18 +12,35 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do    end    describe "rejecting based on keywords" do -    test "rejects if string matches" do +    test "rejects if string matches in content" do        Pleroma.Config.put([:mrf_keyword, :reject], ["pun"])        message = %{          "type" => "Create", -        "object" => %{"content" => "just a daily reminder that compLAINer is a good pun"} +        "object" => %{ +          "content" => "just a daily reminder that compLAINer is a good pun", +          "summary" => "" +        }        }        assert {:reject, nil} == KeywordPolicy.filter(message)      end -    test "rejects if regex matches" do +    test "rejects if string matches in summary" do +      Pleroma.Config.put([:mrf_keyword, :reject], ["pun"]) + +      message = %{ +        "type" => "Create", +        "object" => %{ +          "summary" => "just a daily reminder that compLAINer is a good pun", +          "content" => "" +        } +      } + +      assert {:reject, nil} == KeywordPolicy.filter(message) +    end + +    test "rejects if regex matches in content" do        Pleroma.Config.put([:mrf_keyword, :reject], [~r/comp[lL][aA][iI][nN]er/])        assert true == @@ -31,7 +48,25 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do                   message = %{                     "type" => "Create",                     "object" => %{ -                     "content" => "just a daily reminder that #{content} is a good pun" +                     "content" => "just a daily reminder that #{content} is a good pun", +                     "summary" => "" +                   } +                 } + +                 {:reject, nil} == KeywordPolicy.filter(message) +               end) +    end + +    test "rejects if regex matches in summary" do +      Pleroma.Config.put([:mrf_keyword, :reject], [~r/comp[lL][aA][iI][nN]er/]) + +      assert true == +               Enum.all?(["complainer", "compLainer", "compLAiNer", "compLAINer"], fn content -> +                 message = %{ +                   "type" => "Create", +                   "object" => %{ +                     "summary" => "just a daily reminder that #{content} is a good pun", +                     "content" => ""                     }                   } @@ -41,13 +76,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do    end    describe "delisting from ftl based on keywords" do -    test "delists if string matches" do +    test "delists if string matches in content" do        Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], ["pun"])        message = %{          "to" => ["https://www.w3.org/ns/activitystreams#Public"],          "type" => "Create", -        "object" => %{"content" => "just a daily reminder that compLAINer is a good pun"} +        "object" => %{ +          "content" => "just a daily reminder that compLAINer is a good pun", +          "summary" => "" +        }        }        {:ok, result} = KeywordPolicy.filter(message) @@ -55,7 +93,45 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do        refute ["https://www.w3.org/ns/activitystreams#Public"] == result["to"]      end -    test "delists if regex matches" do +    test "delists if string matches in summary" do +      Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], ["pun"]) + +      message = %{ +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "type" => "Create", +        "object" => %{ +          "summary" => "just a daily reminder that compLAINer is a good pun", +          "content" => "" +        } +      } + +      {:ok, result} = KeywordPolicy.filter(message) +      assert ["https://www.w3.org/ns/activitystreams#Public"] == result["cc"] +      refute ["https://www.w3.org/ns/activitystreams#Public"] == result["to"] +    end + +    test "delists if regex matches in content" do +      Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], [~r/comp[lL][aA][iI][nN]er/]) + +      assert true == +               Enum.all?(["complainer", "compLainer", "compLAiNer", "compLAINer"], fn content -> +                 message = %{ +                   "type" => "Create", +                   "to" => ["https://www.w3.org/ns/activitystreams#Public"], +                   "object" => %{ +                     "content" => "just a daily reminder that #{content} is a good pun", +                     "summary" => "" +                   } +                 } + +                 {:ok, result} = KeywordPolicy.filter(message) + +                 ["https://www.w3.org/ns/activitystreams#Public"] == result["cc"] and +                   not (["https://www.w3.org/ns/activitystreams#Public"] == result["to"]) +               end) +    end + +    test "delists if regex matches in summary" do        Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], [~r/comp[lL][aA][iI][nN]er/])        assert true == @@ -64,7 +140,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do                     "type" => "Create",                     "to" => ["https://www.w3.org/ns/activitystreams#Public"],                     "object" => %{ -                     "content" => "just a daily reminder that #{content} is a good pun" +                     "summary" => "just a daily reminder that #{content} is a good pun", +                     "content" => ""                     }                   } @@ -77,20 +154,33 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do    end    describe "replacing keywords" do -    test "replaces keyword if string matches" do +    test "replaces keyword if string matches in content" do        Pleroma.Config.put([:mrf_keyword, :replace], [{"opensource", "free software"}])        message = %{          "type" => "Create",          "to" => ["https://www.w3.org/ns/activitystreams#Public"], -        "object" => %{"content" => "ZFS is opensource"} +        "object" => %{"content" => "ZFS is opensource", "summary" => ""}        }        {:ok, %{"object" => %{"content" => result}}} = KeywordPolicy.filter(message)        assert result == "ZFS is free software"      end -    test "replaces keyword if regex matches" do +    test "replaces keyword if string matches in summary" do +      Pleroma.Config.put([:mrf_keyword, :replace], [{"opensource", "free software"}]) + +      message = %{ +        "type" => "Create", +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "object" => %{"summary" => "ZFS is opensource", "content" => ""} +      } + +      {:ok, %{"object" => %{"summary" => result}}} = KeywordPolicy.filter(message) +      assert result == "ZFS is free software" +    end + +    test "replaces keyword if regex matches in content" do        Pleroma.Config.put([:mrf_keyword, :replace], [          {~r/open(-|\s)?source\s?(software)?/, "free software"}        ]) @@ -100,12 +190,30 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do                   message = %{                     "type" => "Create",                     "to" => ["https://www.w3.org/ns/activitystreams#Public"], -                   "object" => %{"content" => "ZFS is #{content}"} +                   "object" => %{"content" => "ZFS is #{content}", "summary" => ""}                   }                   {:ok, %{"object" => %{"content" => result}}} = KeywordPolicy.filter(message)                   result == "ZFS is free software"                 end)      end + +    test "replaces keyword if regex matches in summary" do +      Pleroma.Config.put([:mrf_keyword, :replace], [ +        {~r/open(-|\s)?source\s?(software)?/, "free software"} +      ]) + +      assert true == +               Enum.all?(["opensource", "open-source", "open source"], fn content -> +                 message = %{ +                   "type" => "Create", +                   "to" => ["https://www.w3.org/ns/activitystreams#Public"], +                   "object" => %{"summary" => "ZFS is #{content}", "content" => ""} +                 } + +                 {:ok, %{"object" => %{"summary" => result}}} = KeywordPolicy.filter(message) +                 result == "ZFS is free software" +               end) +    end    end  end | 
