6c86ea143852f8b38682b0fcc1c864002f910a49
[akkoma] / test / web / admin_api / admin_api_controller_test.exs
1 defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
2 use Pleroma.Web.ConnCase
3
4 alias Pleroma.{Repo, User}
5
6 import Pleroma.Factory
7 import ExUnit.CaptureLog
8
9 describe "/api/pleroma/admin/user" do
10 test "Delete" do
11 admin = insert(:user, info: %{is_admin: true})
12 user = insert(:user)
13
14 conn =
15 build_conn()
16 |> assign(:user, admin)
17 |> put_req_header("accept", "application/json")
18 |> delete("/api/pleroma/admin/user?nickname=#{user.nickname}")
19
20 assert json_response(conn, 200) == user.nickname
21 end
22
23 test "Create" do
24 admin = insert(:user, info: %{is_admin: true})
25
26 conn =
27 build_conn()
28 |> assign(:user, admin)
29 |> put_req_header("accept", "application/json")
30 |> post("/api/pleroma/admin/user", %{
31 "nickname" => "lain",
32 "email" => "lain@example.org",
33 "password" => "test"
34 })
35
36 assert json_response(conn, 200) == "lain"
37 end
38 end
39
40 describe "/api/pleroma/admin//users/tag" do
41 setup do
42 admin = insert(:user, info: %{is_admin: true})
43 user1 = insert(:user, %{tags: ["x"]})
44 user2 = insert(:user, %{tags: ["y"]})
45 user3 = insert(:user, %{tags: ["unchanged"]})
46
47 conn =
48 build_conn()
49 |> assign(:user, admin)
50 |> put_req_header("accept", "application/json")
51 |> put("/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=#{user2.nickname}&tags[]=foo&tags[]=bar")
52
53 %{conn: conn, user1: user1, user2: user2, user3: user3}
54 end
55
56 test "it appends specified tags to users with specified nicknames", %{conn: conn, user1: user1, user2: user2} do
57 assert json_response(conn, :no_content)
58 assert Repo.get(User, user1.id).tags == ["x", "foo", "bar"]
59 assert Repo.get(User, user2.id).tags == ["y", "foo", "bar"]
60 end
61
62 test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
63 assert json_response(conn, :no_content)
64 assert Repo.get(User, user3.id).tags == ["unchanged"]
65 end
66 end
67
68 describe "/api/pleroma/admin//users/untag" do
69 setup do
70 admin = insert(:user, info: %{is_admin: true})
71 user1 = insert(:user, %{tags: ["x"]})
72 user2 = insert(:user, %{tags: ["y", "z"]})
73 user3 = insert(:user, %{tags: ["unchanged"]})
74
75 conn =
76 build_conn()
77 |> assign(:user, admin)
78 |> put_req_header("accept", "application/json")
79 |> put("/api/pleroma/admin/users/untag?nicknames[]=#{user1.nickname}&nicknames[]=#{user2.nickname}&tags[]=x&tags[]=z")
80
81 %{conn: conn, user1: user1, user2: user2, user3: user3}
82 end
83
84 test "it removes specified tags from users with specified nicknames", %{conn: conn, user1: user1, user2: user2} do
85 assert json_response(conn, :no_content)
86 assert Repo.get(User, user1.id).tags == []
87 assert Repo.get(User, user2.id).tags == ["y"]
88 end
89
90 test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
91 assert json_response(conn, :no_content)
92 assert Repo.get(User, user3.id).tags == ["unchanged"]
93 end
94 end
95
96 describe "/api/pleroma/admin/permission_group" do
97 test "GET is giving user_info" do
98 admin = insert(:user, info: %{is_admin: true})
99
100 conn =
101 build_conn()
102 |> assign(:user, admin)
103 |> put_req_header("accept", "application/json")
104 |> get("/api/pleroma/admin/permission_group/#{admin.nickname}")
105
106 assert json_response(conn, 200) == %{
107 "is_admin" => true,
108 "is_moderator" => false
109 }
110 end
111
112 test "/:right POST, can add to a permission group" do
113 admin = insert(:user, info: %{is_admin: true})
114 user = insert(:user)
115
116 conn =
117 build_conn()
118 |> assign(:user, admin)
119 |> put_req_header("accept", "application/json")
120 |> post("/api/pleroma/admin/permission_group/#{user.nickname}/admin")
121
122 assert json_response(conn, 200) == %{
123 "is_admin" => true
124 }
125 end
126
127 test "/:right DELETE, can remove from a permission group" do
128 admin = insert(:user, info: %{is_admin: true})
129 user = insert(:user, info: %{is_admin: true})
130
131 conn =
132 build_conn()
133 |> assign(:user, admin)
134 |> put_req_header("accept", "application/json")
135 |> delete("/api/pleroma/admin/permission_group/#{user.nickname}/admin")
136
137 assert json_response(conn, 200) == %{
138 "is_admin" => false
139 }
140 end
141 end
142
143 test "/api/pleroma/admin/invite_token" do
144 admin = insert(:user, info: %{is_admin: true})
145
146 conn =
147 build_conn()
148 |> assign(:user, admin)
149 |> put_req_header("accept", "application/json")
150 |> get("/api/pleroma/admin/invite_token")
151
152 assert conn.status == 200
153 end
154
155 test "/api/pleroma/admin/password_reset" do
156 admin = insert(:user, info: %{is_admin: true})
157 user = insert(:user)
158
159 conn =
160 build_conn()
161 |> assign(:user, admin)
162 |> put_req_header("accept", "application/json")
163 |> get("/api/pleroma/admin/password_reset?nickname=#{user.nickname}")
164
165 assert conn.status == 200
166 end
167 end