X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fpleroma%2Fweb%2Fnode_info_test.exs;h=ff14db4607f50bce7603024afbfd6a406d6f615a;hb=ca1accc1cf6689fc52a897003b5e297f51fefaf6;hp=cb910d6686ff228fce48c016c741b9877d56d05d;hpb=7fdc3cde065ce20257e0e03e416ca18775b18943;p=akkoma diff --git a/test/pleroma/web/node_info_test.exs b/test/pleroma/web/node_info_test.exs index cb910d668..ff14db460 100644 --- a/test/pleroma/web/node_info_test.exs +++ b/test/pleroma/web/node_info_test.exs @@ -133,6 +133,7 @@ defmodule Pleroma.Web.NodeInfoTest do default_features = [ "pleroma_api", + "akkoma_api", "mastodon_api", "mastodon_api_streaming", "polls", @@ -140,8 +141,7 @@ defmodule Pleroma.Web.NodeInfoTest do "shareable_emoji_packs", "multifetch", "pleroma_emoji_reactions", - "pleroma:api/v1/notifications:include_types_filter", - "pleroma_chat_messages" + "pleroma:api/v1/notifications:include_types_filter" ] assert MapSet.subset?( @@ -150,55 +150,180 @@ defmodule Pleroma.Web.NodeInfoTest do ) end - test "it shows quarantined instances data if enabled", %{conn: conn} do - clear_config([:mrf, :transparency], true) + describe "Quarantined instances" do + 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", ""}] - clear_config([:instance, :quarantined_instances], quarantined_instances) + test "shows quarantined instances data if enabled", %{conn: conn} do + expected_config = ["example.com"] - expected_config = [%{"instance" => "example.com", "reason" => ""}] + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) - response = - conn - |> get("/nodeinfo/2.1.json") - |> json_response(:ok) + assert response["metadata"]["federation"]["quarantined_instances"] == expected_config + end - 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 - test "it shows MRF transparency data if enabled", %{conn: conn} do - clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) - clear_config([:mrf, :transparency], true) + test "Bubble instances", %{conn: conn} do + clear_config([:instance, :local_bubble], []) - simple_config = %{"reject" => [{"example.com", ""}]} - clear_config(:mrf_simple, simple_config) + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) - expected_config = %{"reject" => [%{"instance" => "example.com", "reason" => ""}]} + assert response["metadata"]["localBubbleInstances"] == [] + clear_config([:instance, :local_bubble], ["example.com"]) response = conn |> get("/nodeinfo/2.1.json") |> json_response(:ok) - assert response["metadata"]["federation"]["mrf_simple"] == expected_config + assert response["metadata"]["localBubbleInstances"] == ["example.com"] end - test "it performs exclusions from MRF transparency data if configured", %{conn: conn} do - clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) - clear_config([:mrf, :transparency], true) - clear_config([:mrf, :transparency_exclusions], [{"other.site", "We don't want them to know"}]) + describe "MRF SimplePolicy" do + setup do + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.SimplePolicy]) + clear_config([:mrf, :transparency], true) + end - simple_config = %{"reject" => [{"example.com", ""}, {"other.site", ""}]} - clear_config(:mrf_simple, simple_config) + test "shows MRF transparency data if enabled", %{conn: conn} do + simple_config = %{"reject" => [{"example.com", ""}]} + clear_config(:mrf_simple, simple_config) - expected_config = %{"reject" => [%{"instance" => "example.com", "reason" => ""}]} + expected_config = %{"reject" => ["example.com"]} - response = - conn - |> get("/nodeinfo/2.1.json") - |> json_response(:ok) + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) + + assert response["metadata"]["federation"]["mrf_simple"] == expected_config + end - assert response["metadata"]["federation"]["mrf_simple"] == expected_config - assert response["metadata"]["federation"]["exclusions"] == true + test "performs exclusions from MRF transparency data if configured", %{conn: conn} do + clear_config([:mrf, :transparency_exclusions], [ + {"other.site", "We don't want them to know"} + ]) + + simple_config = %{"reject" => [{"example.com", ""}, {"other.site", ""}]} + clear_config(:mrf_simple, simple_config) + + expected_config = %{"reject" => ["example.com"]} + + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) + + assert response["metadata"]["federation"]["mrf_simple"] == expected_config + assert response["metadata"]["federation"]["exclusions"] == true + end + + test "shows extra information in the mrf_simple_info field for relevant entries", %{ + conn: conn + } do + simple_config = %{ + media_removal: [{"no.media", "LEEWWWDD >//<"}], + media_nsfw: [], + federated_timeline_removal: [{"no.ftl", ""}], + report_removal: [], + reject: [ + {"example.instance", "Some reason"}, + {"uwu.owo", "awoo to much"}, + {"no.reason", ""} + ], + followers_only: [], + accept: [], + avatar_removal: [], + banner_removal: [], + reject_deletes: [ + {"peak.me", "I want to peak at what they don't want me to see, eheh"} + ] + } + + clear_config(:mrf_simple, simple_config) + + clear_config([:mrf, :transparency_exclusions], [ + {"peak.me", "I don't want them to know"} + ]) + + expected_config = %{ + "media_removal" => %{ + "no.media" => %{"reason" => "LEEWWWDD >//<"} + }, + "reject" => %{ + "example.instance" => %{"reason" => "Some reason"}, + "uwu.owo" => %{"reason" => "awoo to much"} + } + } + + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) + + assert response["metadata"]["federation"]["mrf_simple_info"] == expected_config + end + end + + describe "public timeline visibility" do + test "shows public timeline visibility", %{conn: conn} do + clear_config([:restrict_unauthenticated, :timelines], %{local: false, federated: false}) + + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) + + assert response["metadata"]["publicTimelineVisibility"]["local"] == true + assert response["metadata"]["publicTimelineVisibility"]["federated"] == true + + clear_config([:restrict_unauthenticated, :timelines], %{local: true, federated: false}) + + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) + + assert response["metadata"]["publicTimelineVisibility"]["local"] == false + assert response["metadata"]["publicTimelineVisibility"]["federated"] == true + + clear_config([:restrict_unauthenticated, :timelines], %{local: false, federated: true}) + + response = + conn + |> get("/nodeinfo/2.1.json") + |> json_response(:ok) + + assert response["metadata"]["publicTimelineVisibility"]["local"] == true + assert response["metadata"]["publicTimelineVisibility"]["federated"] == false + end end end