diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/mrf/simple_policy_test.exs | 79 | 
1 files changed, 62 insertions, 17 deletions
diff --git a/test/web/activity_pub/mrf/simple_policy_test.exs b/test/web/activity_pub/mrf/simple_policy_test.exs index eaa595706..b7b9bc6a2 100644 --- a/test/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/web/activity_pub/mrf/simple_policy_test.exs @@ -17,7 +17,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do              reject: [],              accept: [],              avatar_removal: [], -            banner_removal: [] +            banner_removal: [], +            reject_deletes: []            )    describe "when :media_removal" do @@ -258,14 +259,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do        assert SimplePolicy.filter(remote_user) == {:reject, nil}      end - -    test "always accept deletions" do -      Config.put([:mrf_simple, :reject], ["remote.instance"]) - -      deletion_message = build_remote_deletion_message() - -      assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} -    end    end    describe "when :accept" do @@ -316,14 +309,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do        assert SimplePolicy.filter(remote_user) == {:ok, remote_user}      end - -    test "always accept deletions" do -      Config.put([:mrf_simple, :accept], ["non.matching.remote"]) - -      deletion_message = build_remote_deletion_message() - -      assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} -    end    end    describe "when :avatar_removal" do @@ -398,6 +383,66 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do      end    end +  describe "when :reject_deletes is empty" do +    setup do: Config.put([:mrf_simple, :reject_deletes], []) + +    test "it accepts deletions even from rejected servers" do +      Config.put([:mrf_simple, :reject], ["remote.instance"]) + +      deletion_message = build_remote_deletion_message() + +      assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} +    end + +    test "it accepts deletions even from non-whitelisted servers" do +      Config.put([:mrf_simple, :accept], ["non.matching.remote"]) + +      deletion_message = build_remote_deletion_message() + +      assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} +    end +  end + +  describe "when :reject_deletes is not empty but it doesn't have a matching host" do +    setup do: Config.put([:mrf_simple, :reject_deletes], ["non.matching.remote"]) + +    test "it accepts deletions even from rejected servers" do +      Config.put([:mrf_simple, :reject], ["remote.instance"]) + +      deletion_message = build_remote_deletion_message() + +      assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} +    end + +    test "it accepts deletions even from non-whitelisted servers" do +      Config.put([:mrf_simple, :accept], ["non.matching.remote"]) + +      deletion_message = build_remote_deletion_message() + +      assert SimplePolicy.filter(deletion_message) == {:ok, deletion_message} +    end +  end + +  describe "when :reject_deletes has a matching host" do +    setup do: Config.put([:mrf_simple, :reject_deletes], ["remote.instance"]) + +    test "it rejects the deletion" do +      deletion_message = build_remote_deletion_message() + +      assert SimplePolicy.filter(deletion_message) == {:reject, nil} +    end +  end + +  describe "when :reject_deletes match with wildcard domain" do +    setup do: Config.put([:mrf_simple, :reject_deletes], ["*.remote.instance"]) + +    test "it rejects the deletion" do +      deletion_message = build_remote_deletion_message() + +      assert SimplePolicy.filter(deletion_message) == {:reject, nil} +    end +  end +    defp build_local_message do      %{        "actor" => "#{Pleroma.Web.base_url()}/users/alice",  | 
