|
|
|
@ -5,7 +5,6 @@
|
|
|
|
|
defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
use Pleroma.DataCase
|
|
|
|
|
import Pleroma.Factory
|
|
|
|
|
alias Pleroma.Config
|
|
|
|
|
alias Pleroma.Web.ActivityPub.MRF.SimplePolicy
|
|
|
|
|
alias Pleroma.Web.CommonAPI
|
|
|
|
|
|
|
|
|
@ -25,7 +24,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :media_removal" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :media_removal], [])
|
|
|
|
|
clear_config([:mrf_simple, :media_removal], [])
|
|
|
|
|
media_message = build_media_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -34,7 +33,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :media_removal], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :media_removal], ["remote.instance"])
|
|
|
|
|
media_message = build_media_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -47,7 +46,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "match with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :media_removal], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :media_removal], ["*.remote.instance"])
|
|
|
|
|
media_message = build_media_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -62,7 +61,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :media_nsfw" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :media_nsfw], [])
|
|
|
|
|
clear_config([:mrf_simple, :media_nsfw], [])
|
|
|
|
|
media_message = build_media_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -71,7 +70,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :media_nsfw], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :media_nsfw], ["remote.instance"])
|
|
|
|
|
media_message = build_media_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -85,7 +84,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "match with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :media_nsfw], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :media_nsfw], ["*.remote.instance"])
|
|
|
|
|
media_message = build_media_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -113,7 +112,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :report_removal" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :report_removal], [])
|
|
|
|
|
clear_config([:mrf_simple, :report_removal], [])
|
|
|
|
|
report_message = build_report_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -122,7 +121,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :report_removal], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :report_removal], ["remote.instance"])
|
|
|
|
|
report_message = build_report_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -131,7 +130,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "match with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :report_removal], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :report_removal], ["*.remote.instance"])
|
|
|
|
|
report_message = build_report_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -149,7 +148,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :federated_timeline_removal" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :federated_timeline_removal], [])
|
|
|
|
|
clear_config([:mrf_simple, :federated_timeline_removal], [])
|
|
|
|
|
{_, ftl_message} = build_ftl_actor_and_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -166,7 +165,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|> URI.parse()
|
|
|
|
|
|> Map.fetch!(:host)
|
|
|
|
|
|
|
|
|
|
Config.put([:mrf_simple, :federated_timeline_removal], [ftl_message_actor_host])
|
|
|
|
|
clear_config([:mrf_simple, :federated_timeline_removal], [ftl_message_actor_host])
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
|
assert {:ok, ftl_message} = SimplePolicy.filter(ftl_message)
|
|
|
|
@ -187,7 +186,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|> URI.parse()
|
|
|
|
|
|> Map.fetch!(:host)
|
|
|
|
|
|
|
|
|
|
Config.put([:mrf_simple, :federated_timeline_removal], ["*." <> ftl_message_actor_host])
|
|
|
|
|
clear_config([:mrf_simple, :federated_timeline_removal], ["*." <> ftl_message_actor_host])
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
|
assert {:ok, ftl_message} = SimplePolicy.filter(ftl_message)
|
|
|
|
@ -210,7 +209,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
ftl_message = Map.put(ftl_message, "cc", [])
|
|
|
|
|
|
|
|
|
|
Config.put([:mrf_simple, :federated_timeline_removal], [ftl_message_actor_host])
|
|
|
|
|
clear_config([:mrf_simple, :federated_timeline_removal], [ftl_message_actor_host])
|
|
|
|
|
|
|
|
|
|
assert {:ok, ftl_message} = SimplePolicy.filter(ftl_message)
|
|
|
|
|
refute "https://www.w3.org/ns/activitystreams#Public" in ftl_message["to"]
|
|
|
|
@ -231,7 +230,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :reject" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :reject], [])
|
|
|
|
|
clear_config([:mrf_simple, :reject], [])
|
|
|
|
|
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
|
|
|
|
|
@ -239,7 +238,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "activity has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
|
|
|
|
|
@ -247,7 +246,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "activity matches with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :reject], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :reject], ["*.remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
|
|
|
|
|
@ -255,7 +254,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "actor has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
|
|
|
|
@ -265,7 +264,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :followers_only" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :followers_only], [])
|
|
|
|
|
clear_config([:mrf_simple, :followers_only], [])
|
|
|
|
|
{_, ftl_message} = build_ftl_actor_and_message()
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
|
|
|
|
@ -305,7 +304,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|> URI.parse()
|
|
|
|
|
|> Map.fetch!(:host)
|
|
|
|
|
|
|
|
|
|
Config.put([:mrf_simple, :followers_only], [actor_domain])
|
|
|
|
|
clear_config([:mrf_simple, :followers_only], [actor_domain])
|
|
|
|
|
|
|
|
|
|
assert {:ok, new_activity} = SimplePolicy.filter(activity)
|
|
|
|
|
assert actor.follower_address in new_activity["cc"]
|
|
|
|
@ -323,7 +322,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :accept" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], [])
|
|
|
|
|
clear_config([:mrf_simple, :accept], [])
|
|
|
|
|
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
@ -333,7 +332,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "is not empty but activity doesn't have a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], ["non.matching.remote"])
|
|
|
|
|
clear_config([:mrf_simple, :accept], ["non.matching.remote"])
|
|
|
|
|
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
@ -343,7 +342,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "activity has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :accept], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
@ -353,7 +352,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "activity matches with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :accept], ["*.remote.instance"])
|
|
|
|
|
|
|
|
|
|
local_message = build_local_message()
|
|
|
|
|
remote_message = build_remote_message()
|
|
|
|
@ -363,7 +362,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "actor has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :accept], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
|
|
|
|
@ -373,7 +372,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :avatar_removal" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :avatar_removal], [])
|
|
|
|
|
clear_config([:mrf_simple, :avatar_removal], [])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
|
|
|
|
@ -381,7 +380,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "is not empty but it doesn't have a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :avatar_removal], ["non.matching.remote"])
|
|
|
|
|
clear_config([:mrf_simple, :avatar_removal], ["non.matching.remote"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
|
|
|
|
@ -389,7 +388,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :avatar_removal], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :avatar_removal], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
{:ok, filtered} = SimplePolicy.filter(remote_user)
|
|
|
|
@ -398,7 +397,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "match with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :avatar_removal], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :avatar_removal], ["*.remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
{:ok, filtered} = SimplePolicy.filter(remote_user)
|
|
|
|
@ -409,7 +408,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
|
|
|
|
|
describe "when :banner_removal" do
|
|
|
|
|
test "is empty" do
|
|
|
|
|
Config.put([:mrf_simple, :banner_removal], [])
|
|
|
|
|
clear_config([:mrf_simple, :banner_removal], [])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
|
|
|
|
@ -417,7 +416,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "is not empty but it doesn't have a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :banner_removal], ["non.matching.remote"])
|
|
|
|
|
clear_config([:mrf_simple, :banner_removal], ["non.matching.remote"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
|
|
|
|
@ -425,7 +424,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "has a matching host" do
|
|
|
|
|
Config.put([:mrf_simple, :banner_removal], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :banner_removal], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
{:ok, filtered} = SimplePolicy.filter(remote_user)
|
|
|
|
@ -434,7 +433,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "match with wildcard domain" do
|
|
|
|
|
Config.put([:mrf_simple, :banner_removal], ["*.remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :banner_removal], ["*.remote.instance"])
|
|
|
|
|
|
|
|
|
|
remote_user = build_remote_user()
|
|
|
|
|
{:ok, filtered} = SimplePolicy.filter(remote_user)
|
|
|
|
@ -444,10 +443,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "when :reject_deletes is empty" do
|
|
|
|
|
setup do: Config.put([:mrf_simple, :reject_deletes], [])
|
|
|
|
|
setup do: clear_config([:mrf_simple, :reject_deletes], [])
|
|
|
|
|
|
|
|
|
|
test "it accepts deletions even from rejected servers" do
|
|
|
|
|
Config.put([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
deletion_message = build_remote_deletion_message()
|
|
|
|
|
|
|
|
|
@ -455,7 +454,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "it accepts deletions even from non-whitelisted servers" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], ["non.matching.remote"])
|
|
|
|
|
clear_config([:mrf_simple, :accept], ["non.matching.remote"])
|
|
|
|
|
|
|
|
|
|
deletion_message = build_remote_deletion_message()
|
|
|
|
|
|
|
|
|
@ -464,10 +463,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
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"])
|
|
|
|
|
setup do: clear_config([:mrf_simple, :reject_deletes], ["non.matching.remote"])
|
|
|
|
|
|
|
|
|
|
test "it accepts deletions even from rejected servers" do
|
|
|
|
|
Config.put([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
clear_config([:mrf_simple, :reject], ["remote.instance"])
|
|
|
|
|
|
|
|
|
|
deletion_message = build_remote_deletion_message()
|
|
|
|
|
|
|
|
|
@ -475,7 +474,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "it accepts deletions even from non-whitelisted servers" do
|
|
|
|
|
Config.put([:mrf_simple, :accept], ["non.matching.remote"])
|
|
|
|
|
clear_config([:mrf_simple, :accept], ["non.matching.remote"])
|
|
|
|
|
|
|
|
|
|
deletion_message = build_remote_deletion_message()
|
|
|
|
|
|
|
|
|
@ -484,7 +483,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "when :reject_deletes has a matching host" do
|
|
|
|
|
setup do: Config.put([: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()
|
|
|
|
@ -494,7 +493,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "when :reject_deletes match with wildcard domain" do
|
|
|
|
|
setup do: Config.put([: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()
|
|
|
|
|