quarantine instances info

Added a new field in the nodeinfo called quarantined_instances_info
This holds an object like `"quarantined_instances_info":{"quarantined_instances":{"quar.inst":{"reason":"whatever reason"}}}}`
This commit is contained in:
Ilja 2020-11-28 10:34:31 +01:00 committed by Haelwenn (lanodan) Monnier
parent 47fc57bbcc
commit 03030b47c2
No known key found for this signature in database
GPG key ID: D5B7A8E43C997DEE
2 changed files with 42 additions and 12 deletions

View file

@ -98,7 +98,15 @@ def federation do
|> Map.merge(%{ |> Map.merge(%{
quarantined_instances: quarantined_instances:
quarantined quarantined
|> Enum.map(fn {instance, reason} -> %{"instance" => instance, "reason" => reason} end) |> Enum.map(fn {instance, _reason} -> instance end)
})
|> Map.merge(%{
quarantined_instances_info: %{
"quarantined_instances" =>
quarantined
|> Enum.map(fn {instance, reason} -> {instance, %{"reason" => reason}} end)
|> Enum.into(%{})
}
}) })
else else
%{} %{}

View file

@ -150,20 +150,42 @@ test "it shows default features flags", %{conn: conn} do
) )
end end
test "it shows quarantined instances data if enabled", %{conn: conn} do describe "Quarantined instances" do
clear_config([:mrf, :transparency], true) setup do
clear_config([:mrf, :transparency], true)
quarantined_instances = [{"example.com", "reason to quarantine"}]
clear_config([:instance, :quarantined_instances], quarantined_instances)
end
quarantined_instances = [{"example.com", ""}] test "shows quarantined instances data if enabled", %{conn: conn} do
clear_config([:instance, :quarantined_instances], quarantined_instances) expected_config = ["example.com"]
expected_config = [%{"instance" => "example.com", "reason" => ""}] response =
conn
|> get("/nodeinfo/2.1.json")
|> json_response(:ok)
response = assert response["metadata"]["federation"]["quarantined_instances"] == expected_config
conn end
|> get("/nodeinfo/2.1.json")
|> json_response(:ok)
assert response["metadata"]["federation"]["quarantined_instances"] == expected_config test "shows extra information in the quarantined_info field for relevant entries", %{
conn: conn
} do
clear_config([:mrf, :transparency], true)
expected_config = %{
"quarantined_instances" => %{
"example.com" => %{"reason" => "reason to quarantine"}
}
}
response =
conn
|> get("/nodeinfo/2.1.json")
|> json_response(:ok)
assert response["metadata"]["federation"]["quarantined_instances_info"] == expected_config
end
end end
describe "MRF SimplePolicy" do describe "MRF SimplePolicy" do
@ -205,7 +227,7 @@ test "performs exclusions from MRF transparency data if configured", %{conn: con
assert response["metadata"]["federation"]["exclusions"] == true assert response["metadata"]["federation"]["exclusions"] == true
end end
test "shows extra information in the mrf_simple_extra field for relevant entries", %{ test "shows extra information in the mrf_simple_info field for relevant entries", %{
conn: conn conn: conn
} do } do
simple_config = %{ simple_config = %{