diff options
Diffstat (limited to 'test/web/activity_pub')
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 2 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/simple_policy_test.exs | 101 | ||||
| -rw-r--r-- | test/web/activity_pub/views/user_view_test.exs | 13 | 
3 files changed, 108 insertions, 8 deletions
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 11fd3d244..5d0d5a40e 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1005,7 +1005,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do    describe "update" do      test "it creates an update activity with the new user data" do        user = insert(:user) -      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +      {:ok, user} = User.ensure_keys_present(user)        user_data = Pleroma.Web.ActivityPub.UserView.render("user.json", %{user: user})        {:ok, update} = diff --git a/test/web/activity_pub/mrf/simple_policy_test.exs b/test/web/activity_pub/mrf/simple_policy_test.exs index 1e0511975..3d1f26e60 100644 --- a/test/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/web/activity_pub/mrf/simple_policy_test.exs @@ -15,8 +15,11 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do        media_removal: [],        media_nsfw: [],        federated_timeline_removal: [], +      report_removal: [],        reject: [], -      accept: [] +      accept: [], +      avatar_removal: [], +      banner_removal: []      )      on_exit(fn -> @@ -85,6 +88,33 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do      }    end +  describe "when :report_removal" do +    test "is empty" do +      Config.put([:mrf_simple, :report_removal], []) +      report_message = build_report_message() +      local_message = build_local_message() + +      assert SimplePolicy.filter(report_message) == {:ok, report_message} +      assert SimplePolicy.filter(local_message) == {:ok, local_message} +    end + +    test "has a matching host" do +      Config.put([:mrf_simple, :report_removal], ["remote.instance"]) +      report_message = build_report_message() +      local_message = build_local_message() + +      assert SimplePolicy.filter(report_message) == {:reject, nil} +      assert SimplePolicy.filter(local_message) == {:ok, local_message} +    end +  end + +  defp build_report_message do +    %{ +      "actor" => "https://remote.instance/users/bob", +      "type" => "Flag" +    } +  end +    describe "when :federated_timeline_removal" do      test "is empty" do        Config.put([:mrf_simple, :federated_timeline_removal], []) @@ -178,6 +208,60 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do      end    end +  describe "when :avatar_removal" do +    test "is empty" do +      Config.put([:mrf_simple, :avatar_removal], []) + +      remote_user = build_remote_user() + +      assert SimplePolicy.filter(remote_user) == {:ok, remote_user} +    end + +    test "is not empty but it doesn't have a matching host" do +      Config.put([:mrf_simple, :avatar_removal], ["non.matching.remote"]) + +      remote_user = build_remote_user() + +      assert SimplePolicy.filter(remote_user) == {:ok, remote_user} +    end + +    test "has a matching host" do +      Config.put([:mrf_simple, :avatar_removal], ["remote.instance"]) + +      remote_user = build_remote_user() +      {:ok, filtered} = SimplePolicy.filter(remote_user) + +      refute filtered["icon"] +    end +  end + +  describe "when :banner_removal" do +    test "is empty" do +      Config.put([:mrf_simple, :banner_removal], []) + +      remote_user = build_remote_user() + +      assert SimplePolicy.filter(remote_user) == {:ok, remote_user} +    end + +    test "is not empty but it doesn't have a matching host" do +      Config.put([:mrf_simple, :banner_removal], ["non.matching.remote"]) + +      remote_user = build_remote_user() + +      assert SimplePolicy.filter(remote_user) == {:ok, remote_user} +    end + +    test "has a matching host" do +      Config.put([:mrf_simple, :banner_removal], ["remote.instance"]) + +      remote_user = build_remote_user() +      {:ok, filtered} = SimplePolicy.filter(remote_user) + +      refute filtered["image"] +    end +  end +    defp build_local_message do      %{        "actor" => "#{Pleroma.Web.base_url()}/users/alice", @@ -189,4 +273,19 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do    defp build_remote_message do      %{"actor" => "https://remote.instance/users/bob"}    end + +  defp build_remote_user do +    %{ +      "id" => "https://remote.instance/users/bob", +      "icon" => %{ +        "url" => "http://example.com/image.jpg", +        "type" => "Image" +      }, +      "image" => %{ +        "url" => "http://example.com/image.jpg", +        "type" => "Image" +      }, +      "type" => "Person" +    } +  end  end diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 9fb9455d2..e6483db8b 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -2,11 +2,12 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do    use Pleroma.DataCase    import Pleroma.Factory +  alias Pleroma.User    alias Pleroma.Web.ActivityPub.UserView    test "Renders a user, including the public key" do      user = insert(:user) -    {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +    {:ok, user} = User.ensure_keys_present(user)      result = UserView.render("user.json", %{user: user}) @@ -18,7 +19,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do    test "Does not add an avatar image if the user hasn't set one" do      user = insert(:user) -    {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +    {:ok, user} = User.ensure_keys_present(user)      result = UserView.render("user.json", %{user: user})      refute result["icon"] @@ -32,7 +33,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do          }        ) -    {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +    {:ok, user} = User.ensure_keys_present(user)      result = UserView.render("user.json", %{user: user})      assert result["icon"]["url"] == "https://someurl" @@ -42,7 +43,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do    describe "endpoints" do      test "local users have a usable endpoints structure" do        user = insert(:user) -      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +      {:ok, user} = User.ensure_keys_present(user)        result = UserView.render("user.json", %{user: user}) @@ -58,7 +59,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do      test "remote users have an empty endpoints structure" do        user = insert(:user, local: false) -      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +      {:ok, user} = User.ensure_keys_present(user)        result = UserView.render("user.json", %{user: user}) @@ -68,7 +69,7 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do      test "instance users do not expose oAuth endpoints" do        user = insert(:user, nickname: nil, local: true) -      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) +      {:ok, user} = User.ensure_keys_present(user)        result = UserView.render("user.json", %{user: user})  | 
