commit: 27fe7b0274cd9904d91167adade2cf7e56fd482b
parent dd947d9bc8320ec828df97353733bed4d4e2b5b8
Author: Ilja <domainepublic@spectraltheorem.be>
Date: Fri, 2 Oct 2020 14:51:39 +0200
Make quarentine work with list of tuples instead of strings
Diffstat:
5 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex
@@ -100,6 +100,11 @@ defmodule Pleroma.Web.ActivityPub.MRF do
Enum.any?(domains, fn domain -> Regex.match?(domain, host) end)
end
+ @spec instance_list_from_tuples([{String.t(), String.t()}]) :: [String.t()]
+ def instance_list_from_tuples(list) do
+ Enum.map(list, fn {instance, _} -> instance end)
+ end
+
def describe(policies) do
{:ok, policy_configs} =
policies
diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex
@@ -187,9 +187,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do
defp instance_list(config_key) do
Config.get([:mrf_simple, config_key])
- |> Enum.map(fn
- {instance, _} -> instance
- end)
+ |> MRF.instance_list_from_tuples()
end
@impl true
diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex
@@ -112,6 +112,7 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
quarantined_instances =
Config.get([:instance, :quarantined_instances], [])
+ |> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples()
|> Pleroma.Web.ActivityPub.MRF.subdomains_regex()
!Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host)
diff --git a/test/pleroma/web/activity_pub/mrf_test.exs b/test/pleroma/web/activity_pub/mrf_test.exs
@@ -63,6 +63,15 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
end
end
+ describe "instance_list_from_tuples/1" do
+ test "returns a list of instances from a list of {instance, reason} tuples" do
+ list = [{"some.tld", "a reason"}, {"other.tld", "another reason"}]
+ expected = ["some.tld", "other.tld"]
+
+ assert MRF.instance_list_from_tuples(list) == expected
+ end
+ end
+
describe "describe/0" do
test "it works as expected with noop policy" do
clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy])
diff --git a/test/pleroma/web/activity_pub/publisher_test.exs b/test/pleroma/web/activity_pub/publisher_test.exs
@@ -271,7 +271,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
Pleroma.Web.Federator.Publisher,
[:passthrough],
[] do
- Config.put([:instance, :quarantined_instances], ["domain.com"])
+ Config.put([:instance, :quarantined_instances], [{"domain.com", "some reason"}])
follower =
insert(:user, %{
@@ -308,7 +308,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
Pleroma.Web.Federator.Publisher,
[:passthrough],
[] do
- Config.put([:instance, :quarantined_instances], ["somedomain.com"])
+ Config.put([:instance, :quarantined_instances], [{"somedomain.com", "some reason"}])
follower =
insert(:user, %{