CI: Add auto-deployment via dokku.
[akkoma] / test / web / node_info_test.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.NodeInfoTest do
6 use Pleroma.Web.ConnCase
7
8 import Pleroma.Factory
9
10 test "nodeinfo shows staff accounts", %{conn: conn} do
11 moderator = insert(:user, %{local: true, info: %{is_moderator: true}})
12 admin = insert(:user, %{local: true, info: %{is_admin: true}})
13
14 conn =
15 conn
16 |> get("/nodeinfo/2.1.json")
17
18 assert result = json_response(conn, 200)
19
20 assert moderator.ap_id in result["metadata"]["staffAccounts"]
21 assert admin.ap_id in result["metadata"]["staffAccounts"]
22 end
23
24 test "nodeinfo shows restricted nicknames", %{conn: conn} do
25 conn =
26 conn
27 |> get("/nodeinfo/2.1.json")
28
29 assert result = json_response(conn, 200)
30
31 assert Pleroma.Config.get([Pleroma.User, :restricted_nicknames]) ==
32 result["metadata"]["restrictedNicknames"]
33 end
34
35 test "returns 404 when federation is disabled", %{conn: conn} do
36 instance =
37 Application.get_env(:pleroma, :instance)
38 |> Keyword.put(:federating, false)
39
40 Application.put_env(:pleroma, :instance, instance)
41
42 conn
43 |> get("/.well-known/nodeinfo")
44 |> json_response(404)
45
46 conn
47 |> get("/nodeinfo/2.1.json")
48 |> json_response(404)
49
50 instance =
51 Application.get_env(:pleroma, :instance)
52 |> Keyword.put(:federating, true)
53
54 Application.put_env(:pleroma, :instance, instance)
55 end
56
57 test "returns 200 when federation is enabled", %{conn: conn} do
58 conn
59 |> get("/.well-known/nodeinfo")
60 |> json_response(200)
61
62 conn
63 |> get("/nodeinfo/2.1.json")
64 |> json_response(200)
65 end
66
67 test "returns 404 when federation is disabled (nodeinfo 2.0)", %{conn: conn} do
68 instance =
69 Application.get_env(:pleroma, :instance)
70 |> Keyword.put(:federating, false)
71
72 Application.put_env(:pleroma, :instance, instance)
73
74 conn
75 |> get("/.well-known/nodeinfo")
76 |> json_response(404)
77
78 conn
79 |> get("/nodeinfo/2.0.json")
80 |> json_response(404)
81
82 instance =
83 Application.get_env(:pleroma, :instance)
84 |> Keyword.put(:federating, true)
85
86 Application.put_env(:pleroma, :instance, instance)
87 end
88
89 test "returns 200 when federation is enabled (nodeinfo 2.0)", %{conn: conn} do
90 conn
91 |> get("/.well-known/nodeinfo")
92 |> json_response(200)
93
94 conn
95 |> get("/nodeinfo/2.0.json")
96 |> json_response(200)
97 end
98
99 test "returns software.repository field in nodeinfo 2.1", %{conn: conn} do
100 conn
101 |> get("/.well-known/nodeinfo")
102 |> json_response(200)
103
104 conn =
105 conn
106 |> get("/nodeinfo/2.1.json")
107
108 assert result = json_response(conn, 200)
109 assert Pleroma.Application.repository() == result["software"]["repository"]
110 end
111
112 test "it returns the safe_dm_mentions feature if enabled", %{conn: conn} do
113 option = Pleroma.Config.get([:instance, :safe_dm_mentions])
114 Pleroma.Config.put([:instance, :safe_dm_mentions], true)
115
116 response =
117 conn
118 |> get("/nodeinfo/2.1.json")
119 |> json_response(:ok)
120
121 assert "safe_dm_mentions" in response["metadata"]["features"]
122
123 Pleroma.Config.put([:instance, :safe_dm_mentions], false)
124
125 response =
126 conn
127 |> get("/nodeinfo/2.1.json")
128 |> json_response(:ok)
129
130 refute "safe_dm_mentions" in response["metadata"]["features"]
131
132 Pleroma.Config.put([:instance, :safe_dm_mentions], option)
133 end
134 end