NodeInfo: Return safe_dm_mentions feature flag.
authorlain <lain@soykaf.club>
Fri, 22 Mar 2019 10:57:20 +0000 (11:57 +0100)
committerlain <lain@soykaf.club>
Fri, 22 Mar 2019 10:57:20 +0000 (11:57 +0100)
lib/pleroma/web/nodeinfo/nodeinfo_controller.ex
test/web/node_info_test.exs

index 8c775ce242690d35a1c0944d5ee1a0b74aa2d59f..216a962bd45e834a380d2a2215d46d2108982708 100644 (file)
@@ -124,6 +124,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
         end,
         if Keyword.get(instance, :allow_relay) do
           "relay"
+        end,
+        if Keyword.get(instance, :safe_dm_mentions) do
+          "safe_dm_mentions"
         end
       ]
       |> Enum.filter(& &1)
index 038feecc11a95fa20e092d20d238564f59abbdfd..2fc42b7ccc29247fcbde94c7f6f52d035fed2aee 100644 (file)
@@ -108,4 +108,27 @@ defmodule Pleroma.Web.NodeInfoTest do
     assert result = json_response(conn, 200)
     assert Pleroma.Application.repository() == result["software"]["repository"]
   end
+
+  test "it returns the safe_dm_mentions feature if enabled", %{conn: conn} do
+    option = Pleroma.Config.get([:instance, :safe_dm_mentions])
+    Pleroma.Config.put([:instance, :safe_dm_mentions], true)
+
+    response =
+      conn
+      |> get("/nodeinfo/2.1.json")
+      |> json_response(:ok)
+
+    assert "safe_dm_mentions" in response["metadata"]["features"]
+
+    Pleroma.Config.put([:instance, :safe_dm_mentions], false)
+
+    response =
+      conn
+      |> get("/nodeinfo/2.1.json")
+      |> json_response(:ok)
+
+    refute "safe_dm_mentions" in response["metadata"]["features"]
+
+    Pleroma.Config.put([:instance, :safe_dm_mentions], option)
+  end
 end