X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fpleroma%2Fweb%2Factivity_pub%2Fmrf%2Fsimple_policy_test.exs;h=5f80c162967772881c7808ba76c489902f2a70a6;hb=31ad09010e03f30643b9e921c4fd85c113071a4d;hp=0a0f51bdbb8c91bf27dc903f216579414e900887;hpb=773708cfe82233071ccbce4e3a7c924c8397bcda;p=akkoma diff --git a/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs b/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs index 0a0f51bdb..5f80c1629 100644 --- a/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs @@ -46,8 +46,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "match with wildcard domain" do - clear_config([:mrf_simple, :media_removal], [{"*.remote.instance", "Whatever reason"}]) - media_message = build_media_message() + clear_config([:mrf_simple, :media_removal], [{"remote.instance", "Whatever reason"}]) + media_message = build_media_message("sub.remote.instance") local_message = build_local_message() assert SimplePolicy.filter(media_message) == @@ -81,8 +81,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "match with wildcard domain" do - clear_config([:mrf_simple, :media_nsfw], [{"*.remote.instance", "yeah yeah"}]) - media_message = build_media_message() + clear_config([:mrf_simple, :media_nsfw], [{"remote.instance", "yeah yeah"}]) + media_message = build_media_message("sub.remote.instance") local_message = build_local_message() assert SimplePolicy.filter(media_message) == @@ -92,9 +92,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end end - defp build_media_message do + defp build_media_message(domain \\ "remote.instance") do %{ - "actor" => "https://remote.instance/users/bob", + "actor" => "https://#{domain}/users/bob", "type" => "Create", "object" => %{ "attachment" => [%{}], @@ -124,8 +124,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "match with wildcard domain" do - clear_config([:mrf_simple, :report_removal], [{"*.remote.instance", "suya"}]) - report_message = build_report_message() + clear_config([:mrf_simple, :report_removal], [{"remote.instance", "suya"}]) + report_message = build_report_message("sub.remote.instance") local_message = build_local_message() assert {:reject, _} = SimplePolicy.filter(report_message) @@ -133,9 +133,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end end - defp build_report_message do + defp build_report_message(domain \\ "remote.instance") do %{ - "actor" => "https://remote.instance/users/bob", + "actor" => "https://#{domain}/users/bob", "type" => "Flag" } end @@ -143,7 +143,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do describe "when :federated_timeline_removal" do test "is empty" do clear_config([:mrf_simple, :federated_timeline_removal], []) - {_, ftl_message} = build_ftl_actor_and_message() + {_, ftl_message} = build_ftl_actor_and_message("https://remote.instance/users/bob") local_message = build_local_message() assert SimplePolicy.filter(ftl_message) == {:ok, ftl_message} @@ -151,7 +151,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "has a matching host" do - {actor, ftl_message} = build_ftl_actor_and_message() + {actor, ftl_message} = build_ftl_actor_and_message("https://remote.instance/users/bob") ftl_message_actor_host = ftl_message @@ -172,7 +172,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "match with wildcard domain" do - {actor, ftl_message} = build_ftl_actor_and_message() + {actor, ftl_message} = build_ftl_actor_and_message("https://sub.remote.instance/users/bob") ftl_message_actor_host = ftl_message @@ -181,7 +181,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do |> Map.fetch!(:host) clear_config([:mrf_simple, :federated_timeline_removal], [ - {"*." <> ftl_message_actor_host, "owo"} + {ftl_message_actor_host, "owo"} ]) local_message = build_local_message() @@ -196,7 +196,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "has a matching host but only as:Public in to" do - {_actor, ftl_message} = build_ftl_actor_and_message() + {_actor, ftl_message} = build_ftl_actor_and_message("https://remote.instance/users/bob") ftl_message_actor_host = ftl_message @@ -216,8 +216,45 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end end - defp build_ftl_actor_and_message do - actor = insert(:user) + describe "describe/1" do + test "returns a description of the policy" do + clear_config([:mrf_simple, :reject], [ + {"remote.instance", "did not give my catboy a burg"} + ]) + + assert {:ok, %{mrf_simple: %{reject: ["remote.instance"]}}} = SimplePolicy.describe() + end + + test "excludes domains listed in :transparency_exclusions" do + clear_config([:mrf, :transparency_exclusions], [{"remote.instance", ":("}]) + + clear_config([:mrf_simple, :reject], [ + {"remote.instance", "did not give my catboy a burg"} + ]) + + {:ok, description} = SimplePolicy.describe() + assert %{mrf_simple: %{reject: []}} = description + assert description[:mrf_simple_info][:reject] == nil + end + + test "obfuscates domains listed in :transparency_obfuscate_domains" do + clear_config([:mrf, :transparency_obfuscate_domains], ["remote.instance", "a.b"]) + + clear_config([:mrf_simple, :reject], [ + {"remote.instance", "did not give my catboy a burg"}, + {"a.b", "spam-poked me on facebook in 2006"} + ]) + + assert {:ok, + %{ + mrf_simple: %{reject: ["rem***.*****nce", "a.b"]}, + mrf_simple_info: %{reject: %{"rem***.*****nce" => %{}}} + }} = SimplePolicy.describe() + end + end + + defp build_ftl_actor_and_message(ap_id) do + actor = insert(:user, ap_id: ap_id) {actor, %{ @@ -245,9 +282,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "activity matches with wildcard domain" do - clear_config([:mrf_simple, :reject], [{"*.remote.instance", ""}]) + clear_config([:mrf_simple, :reject], [{"remote.instance", ""}]) - remote_message = build_remote_message() + remote_message = build_remote_message("sub.remote.instance") assert {:reject, _} = SimplePolicy.filter(remote_message) end @@ -288,7 +325,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do describe "when :followers_only" do test "is empty" do clear_config([:mrf_simple, :followers_only], []) - {_, ftl_message} = build_ftl_actor_and_message() + {_, ftl_message} = build_ftl_actor_and_message("https://remote.instance/users/alice") local_message = build_local_message() assert SimplePolicy.filter(ftl_message) == {:ok, ftl_message} @@ -375,10 +412,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "activity matches with wildcard domain" do - clear_config([:mrf_simple, :accept], [{"*.remote.instance", ""}]) + clear_config([:mrf_simple, :accept], [{"remote.instance", ""}]) local_message = build_local_message() - remote_message = build_remote_message() + remote_message = build_remote_message("sub.remote.instance") assert SimplePolicy.filter(local_message) == {:ok, local_message} assert SimplePolicy.filter(remote_message) == {:ok, remote_message} @@ -420,9 +457,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "match with wildcard domain" do - clear_config([:mrf_simple, :avatar_removal], [{"*.remote.instance", ""}]) + clear_config([:mrf_simple, :avatar_removal], [{"remote.instance", ""}]) - remote_user = build_remote_user() + remote_user = build_remote_user("sub.remote.instance") {:ok, filtered} = SimplePolicy.filter(remote_user) refute filtered["icon"] @@ -456,9 +493,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end test "match with wildcard domain" do - clear_config([:mrf_simple, :banner_removal], [{"*.remote.instance", ""}]) + clear_config([:mrf_simple, :banner_removal], [{"remote.instance", ""}]) - remote_user = build_remote_user() + remote_user = build_remote_user("sub.remote.instance") {:ok, filtered} = SimplePolicy.filter(remote_user) refute filtered["image"] @@ -516,10 +553,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do end describe "when :reject_deletes match with wildcard domain" do - setup do: clear_config([:mrf_simple, :reject_deletes], [{"*.remote.instance", ""}]) + setup do: clear_config([:mrf_simple, :reject_deletes], [{"remote.instance", ""}]) test "it rejects the deletion" do - deletion_message = build_remote_deletion_message() + deletion_message = build_remote_deletion_message("sub.remote.instance") assert {:reject, _} = SimplePolicy.filter(deletion_message) end @@ -533,13 +570,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do } end - defp build_remote_message do - %{"actor" => "https://remote.instance/users/bob"} + defp build_remote_message(domain \\ "remote.instance") do + %{"actor" => "https://#{domain}/users/bob"} end - defp build_remote_user do + defp build_remote_user(domain \\ "remote.instance") do %{ - "id" => "https://remote.instance/users/bob", + "id" => "https://#{domain}/users/bob", "icon" => %{ "url" => "http://example.com/image.jpg", "type" => "Image" @@ -552,10 +589,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do } end - defp build_remote_deletion_message do + defp build_remote_deletion_message(domain \\ "remote.instance") do %{ "type" => "Delete", - "actor" => "https://remote.instance/users/bob" + "actor" => "https://#{domain}/users/bob" } end end