mix format
[akkoma] / test / pleroma / web / node_info_test.exs
index eb6b8bf6c1c20bc9bc1074ec2bb1f83eeb8d6315..ff14db4607f50bce7603024afbfd6a406d6f615a 100644 (file)
@@ -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,20 +150,61 @@ 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
+
+    test "shows quarantined instances data if enabled", %{conn: conn} do
+      expected_config = ["example.com"]
+
+      response =
+        conn
+        |> get("/nodeinfo/2.1.json")
+        |> json_response(:ok)
+
+      assert response["metadata"]["federation"]["quarantined_instances"] == expected_config
+    end
+
+    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)
 
-    quarantined_instances = [{"example.com", ""}]
-    clear_config([:instance, :quarantined_instances], quarantined_instances)
+      assert response["metadata"]["federation"]["quarantined_instances_info"] == expected_config
+    end
+  end
 
-    expected_config = [%{"instance" => "example.com", "reason" => ""}]
+  test "Bubble instances", %{conn: conn} do
+    clear_config([:instance, :local_bubble], [])
 
     response =
       conn
       |> get("/nodeinfo/2.1.json")
       |> json_response(:ok)
 
-    assert response["metadata"]["federation"]["quarantined_instances"] == expected_config
+    assert response["metadata"]["localBubbleInstances"] == []
+    clear_config([:instance, :local_bubble], ["example.com"])
+
+    response =
+      conn
+      |> get("/nodeinfo/2.1.json")
+      |> json_response(:ok)
+
+    assert response["metadata"]["localBubbleInstances"] == ["example.com"]
   end
 
   describe "MRF SimplePolicy" do
@@ -205,7 +246,7 @@ defmodule Pleroma.Web.NodeInfoTest do
       assert response["metadata"]["federation"]["exclusions"] == true
     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
     } do
       simple_config = %{
@@ -251,4 +292,38 @@ defmodule Pleroma.Web.NodeInfoTest do
       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