1 defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
2 use Pleroma.Web.ConnCase
4 alias Pleroma.{Repo, User}
7 describe "/api/pleroma/admin/user" do
9 admin = insert(:user, info: %{is_admin: true})
14 |> assign(:user, admin)
15 |> put_req_header("accept", "application/json")
16 |> delete("/api/pleroma/admin/user?nickname=#{user.nickname}")
18 assert json_response(conn, 200) == user.nickname
22 admin = insert(:user, info: %{is_admin: true})
26 |> assign(:user, admin)
27 |> put_req_header("accept", "application/json")
28 |> post("/api/pleroma/admin/user", %{
30 "email" => "lain@example.org",
34 assert json_response(conn, 200) == "lain"
38 describe "PUT /api/pleroma/admin/users/tag" do
40 admin = insert(:user, info: %{is_admin: true})
41 user1 = insert(:user, %{tags: ["x"]})
42 user2 = insert(:user, %{tags: ["y"]})
43 user3 = insert(:user, %{tags: ["unchanged"]})
47 |> assign(:user, admin)
48 |> put_req_header("accept", "application/json")
50 "/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=#{
52 }&tags[]=foo&tags[]=bar"
55 %{conn: conn, user1: user1, user2: user2, user3: user3}
58 test "it appends specified tags to users with specified nicknames", %{
63 assert json_response(conn, :no_content)
64 assert Repo.get(User, user1.id).tags == ["x", "foo", "bar"]
65 assert Repo.get(User, user2.id).tags == ["y", "foo", "bar"]
68 test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
69 assert json_response(conn, :no_content)
70 assert Repo.get(User, user3.id).tags == ["unchanged"]
74 describe "DELETE /api/pleroma/admin/users/tag" do
76 admin = insert(:user, info: %{is_admin: true})
77 user1 = insert(:user, %{tags: ["x"]})
78 user2 = insert(:user, %{tags: ["y", "z"]})
79 user3 = insert(:user, %{tags: ["unchanged"]})
83 |> assign(:user, admin)
84 |> put_req_header("accept", "application/json")
86 "/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=#{
91 %{conn: conn, user1: user1, user2: user2, user3: user3}
94 test "it removes specified tags from users with specified nicknames", %{
99 assert json_response(conn, :no_content)
100 assert Repo.get(User, user1.id).tags == []
101 assert Repo.get(User, user2.id).tags == ["y"]
104 test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
105 assert json_response(conn, :no_content)
106 assert Repo.get(User, user3.id).tags == ["unchanged"]
110 describe "/api/pleroma/admin/permission_group" do
111 test "GET is giving user_info" do
112 admin = insert(:user, info: %{is_admin: true})
116 |> assign(:user, admin)
117 |> put_req_header("accept", "application/json")
118 |> get("/api/pleroma/admin/permission_group/#{admin.nickname}")
120 assert json_response(conn, 200) == %{
122 "is_moderator" => false
126 test "/:right POST, can add to a permission group" do
127 admin = insert(:user, info: %{is_admin: true})
132 |> assign(:user, admin)
133 |> put_req_header("accept", "application/json")
134 |> post("/api/pleroma/admin/permission_group/#{user.nickname}/admin")
136 assert json_response(conn, 200) == %{
141 test "/:right DELETE, can remove from a permission group" do
142 admin = insert(:user, info: %{is_admin: true})
143 user = insert(:user, info: %{is_admin: true})
147 |> assign(:user, admin)
148 |> put_req_header("accept", "application/json")
149 |> delete("/api/pleroma/admin/permission_group/#{user.nickname}/admin")
151 assert json_response(conn, 200) == %{
157 describe "POST /api/pleroma/admin/email_invite, with valid parameters" do
159 registrations_open = Pleroma.Config.get([:instance, :registrations_open])
160 invites_enabled = Pleroma.Config.get([:instance, :invites_enabled])
161 Pleroma.Config.put([:instance, :registrations_open], false)
162 Pleroma.Config.put([:instance, :invites_enabled], true)
165 Pleroma.Config.put([:instance, :registrations_open], registrations_open)
166 Pleroma.Config.put([:instance, :invites_enabled], invites_enabled)
170 [user: insert(:user, info: %{is_admin: true})]
173 test "sends invitation and returns 204", %{conn: conn, user: user} do
174 recipient_email = "foo@bar.com"
175 recipient_name = "J. D."
179 |> assign(:user, user)
180 |> post("/api/pleroma/admin/email_invite?email=#{recipient_email}&name=#{recipient_name}")
182 assert json_response(conn, :no_content)
184 Swoosh.TestAssertions.assert_email_sent()
188 test "/api/pleroma/admin/invite_token" do
189 admin = insert(:user, info: %{is_admin: true})
193 |> assign(:user, admin)
194 |> put_req_header("accept", "application/json")
195 |> get("/api/pleroma/admin/invite_token")
197 assert conn.status == 200
200 test "/api/pleroma/admin/password_reset" do
201 admin = insert(:user, info: %{is_admin: true})
206 |> assign(:user, admin)
207 |> put_req_header("accept", "application/json")
208 |> get("/api/pleroma/admin/password_reset?nickname=#{user.nickname}")
210 assert conn.status == 200