Return maps in node_info

It's easiest (and imo most proper) to use tuples {"instance, "reason"} in BE,
but for FE maps like %{"instance": "instance", "reason", "reason"} are better.
I changed it so that node_info returns maps now for simple_policy and quarantined instances.
This commit is contained in:
Ilja 2020-10-23 20:27:13 +02:00 committed by Haelwenn (lanodan) Monnier
parent 1f52246a02
commit 7fdc3cde06
No known key found for this signature in database
GPG key ID: D5B7A8E43C997DEE
3 changed files with 26 additions and 3 deletions

View file

@ -263,6 +263,9 @@ def describe do
mrf_simple = mrf_simple =
Config.get(:mrf_simple) Config.get(:mrf_simple)
|> Enum.map(fn {k, v} -> {k, Enum.reject(v, fn {v, _} -> v in exclusions end)} end) |> Enum.map(fn {k, v} -> {k, Enum.reject(v, fn {v, _} -> v in exclusions end)} end)
|> Enum.map(fn {k, v} ->
{k, Enum.map(v, fn {i, r} -> %{"instance" => i, "reason" => r} end)}
end)
|> Enum.into(%{}) |> Enum.into(%{})
{:ok, %{mrf_simple: mrf_simple}} {:ok, %{mrf_simple: mrf_simple}}

View file

@ -95,7 +95,11 @@ def federation do
{:ok, data} = MRF.describe() {:ok, data} = MRF.describe()
data data
|> Map.merge(%{quarantined_instances: quarantined}) |> Map.merge(%{
quarantined_instances:
quarantined
|> Enum.map(fn {instance, reason} -> %{"instance" => instance, "reason" => reason} end)
})
else else
%{} %{}
end end

View file

@ -150,6 +150,22 @@ test "it shows default features flags", %{conn: conn} do
) )
end end
test "it shows quarantined instances data if enabled", %{conn: conn} do
clear_config([:mrf, :transparency], true)
quarantined_instances = [{"example.com", ""}]
clear_config([:instance, :quarantined_instances], quarantined_instances)
expected_config = [%{"instance" => "example.com", "reason" => ""}]
response =
conn
|> get("/nodeinfo/2.1.json")
|> json_response(:ok)
assert response["metadata"]["federation"]["quarantined_instances"] == expected_config
end
test "it shows MRF transparency data if enabled", %{conn: conn} do test "it shows MRF transparency data if enabled", %{conn: conn} do
clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy])
clear_config([:mrf, :transparency], true) clear_config([:mrf, :transparency], true)
@ -157,7 +173,7 @@ test "it shows MRF transparency data if enabled", %{conn: conn} do
simple_config = %{"reject" => [{"example.com", ""}]} simple_config = %{"reject" => [{"example.com", ""}]}
clear_config(:mrf_simple, simple_config) clear_config(:mrf_simple, simple_config)
expected_config = %{"reject" => [["example.com", ""]]} expected_config = %{"reject" => [%{"instance" => "example.com", "reason" => ""}]}
response = response =
conn conn
@ -175,7 +191,7 @@ test "it performs exclusions from MRF transparency data if configured", %{conn:
simple_config = %{"reject" => [{"example.com", ""}, {"other.site", ""}]} simple_config = %{"reject" => [{"example.com", ""}, {"other.site", ""}]}
clear_config(:mrf_simple, simple_config) clear_config(:mrf_simple, simple_config)
expected_config = %{"reject" => [["example.com", ""]]} expected_config = %{"reject" => [%{"instance" => "example.com", "reason" => ""}]}
response = response =
conn conn