diff options
Diffstat (limited to 'test/web')
| -rw-r--r-- | test/web/activity_pub/mrf/simple_policy_test.exs | 60 | 
1 files changed, 60 insertions, 0 deletions
| diff --git a/test/web/activity_pub/mrf/simple_policy_test.exs b/test/web/activity_pub/mrf/simple_policy_test.exs index e842d8d8d..d7dde62c4 100644 --- a/test/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/web/activity_pub/mrf/simple_policy_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do    import Pleroma.Factory    alias Pleroma.Config    alias Pleroma.Web.ActivityPub.MRF.SimplePolicy +  alias Pleroma.Web.CommonAPI    setup do:            clear_config(:mrf_simple, @@ -15,6 +16,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do              federated_timeline_removal: [],              report_removal: [],              reject: [], +            followers_only: [],              accept: [],              avatar_removal: [],              banner_removal: [], @@ -261,6 +263,64 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do      end    end +  describe "when :followers_only" do +    test "is empty" do +      Config.put([:mrf_simple, :followers_only], []) +      {_, ftl_message} = build_ftl_actor_and_message() +      local_message = build_local_message() + +      assert SimplePolicy.filter(ftl_message) == {:ok, ftl_message} +      assert SimplePolicy.filter(local_message) == {:ok, local_message} +    end + +    test "has a matching host" do +      actor = insert(:user) +      following_user = insert(:user) +      non_following_user = insert(:user) + +      {:ok, _, _, _} = CommonAPI.follow(following_user, actor) + +      activity = %{ +        "actor" => actor.ap_id, +        "to" => [ +          "https://www.w3.org/ns/activitystreams#Public", +          following_user.ap_id, +          non_following_user.ap_id +        ], +        "cc" => [actor.follower_address, "http://foo.bar/qux"] +      } + +      dm_activity = %{ +        "actor" => actor.ap_id, +        "to" => [ +          following_user.ap_id, +          non_following_user.ap_id +        ], +        "cc" => [] +      } + +      actor_domain = +        activity +        |> Map.fetch!("actor") +        |> URI.parse() +        |> Map.fetch!(:host) + +      Config.put([:mrf_simple, :followers_only], [actor_domain]) + +      assert {:ok, new_activity} = SimplePolicy.filter(activity) +      assert actor.follower_address in new_activity["cc"] +      assert following_user.ap_id in new_activity["to"] +      refute "https://www.w3.org/ns/activitystreams#Public" in new_activity["to"] +      refute "https://www.w3.org/ns/activitystreams#Public" in new_activity["cc"] +      refute non_following_user.ap_id in new_activity["to"] +      refute non_following_user.ap_id in new_activity["cc"] + +      assert {:ok, new_dm_activity} = SimplePolicy.filter(dm_activity) +      assert new_dm_activity["to"] == [following_user.ap_id] +      assert new_dm_activity["cc"] == [] +    end +  end +    describe "when :accept" do      test "is empty" do        Config.put([:mrf_simple, :accept], []) | 
