1 defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
2 use Pleroma.Web.ConnCase
4 alias Pleroma.{Repo, User}
7 import ExUnit.CaptureLog
9 describe "/api/pleroma/admin/user" do
11 admin = insert(:user, info: %{is_admin: true})
16 |> assign(:user, admin)
17 |> put_req_header("accept", "application/json")
18 |> delete("/api/pleroma/admin/user?nickname=#{user.nickname}")
20 assert json_response(conn, 200) == user.nickname
24 admin = insert(:user, info: %{is_admin: true})
28 |> assign(:user, admin)
29 |> put_req_header("accept", "application/json")
30 |> post("/api/pleroma/admin/user", %{
32 "email" => "lain@example.org",
36 assert json_response(conn, 200) == "lain"
40 describe "PUT /api/pleroma/admin/users/tag" 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"]})
49 |> assign(:user, admin)
50 |> put_req_header("accept", "application/json")
52 "/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=#{
54 }&tags[]=foo&tags[]=bar"
57 %{conn: conn, user1: user1, user2: user2, user3: user3}
60 test "it appends specified tags to users with specified nicknames", %{
65 assert json_response(conn, :no_content)
66 assert Repo.get(User, user1.id).tags == ["x", "foo", "bar"]
67 assert Repo.get(User, user2.id).tags == ["y", "foo", "bar"]
70 test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
71 assert json_response(conn, :no_content)
72 assert Repo.get(User, user3.id).tags == ["unchanged"]
76 describe "DELETE /api/pleroma/admin/users/tag" do
78 admin = insert(:user, info: %{is_admin: true})
79 user1 = insert(:user, %{tags: ["x"]})
80 user2 = insert(:user, %{tags: ["y", "z"]})
81 user3 = insert(:user, %{tags: ["unchanged"]})
85 |> assign(:user, admin)
86 |> put_req_header("accept", "application/json")
88 "/api/pleroma/admin/users/tag?nicknames[]=#{user1.nickname}&nicknames[]=#{
93 %{conn: conn, user1: user1, user2: user2, user3: user3}
96 test "it removes specified tags from users with specified nicknames", %{
101 assert json_response(conn, :no_content)
102 assert Repo.get(User, user1.id).tags == []
103 assert Repo.get(User, user2.id).tags == ["y"]
106 test "it does not modify tags of not specified users", %{conn: conn, user3: user3} do
107 assert json_response(conn, :no_content)
108 assert Repo.get(User, user3.id).tags == ["unchanged"]
112 describe "/api/pleroma/admin/permission_group" do
113 test "GET is giving user_info" do
114 admin = insert(:user, info: %{is_admin: true})
118 |> assign(:user, admin)
119 |> put_req_header("accept", "application/json")
120 |> get("/api/pleroma/admin/permission_group/#{admin.nickname}")
122 assert json_response(conn, 200) == %{
124 "is_moderator" => false
128 test "/:right POST, can add to a permission group" do
129 admin = insert(:user, info: %{is_admin: true})
134 |> assign(:user, admin)
135 |> put_req_header("accept", "application/json")
136 |> post("/api/pleroma/admin/permission_group/#{user.nickname}/admin")
138 assert json_response(conn, 200) == %{
143 test "/:right DELETE, can remove from a permission group" do
144 admin = insert(:user, info: %{is_admin: true})
145 user = insert(:user, info: %{is_admin: true})
149 |> assign(:user, admin)
150 |> put_req_header("accept", "application/json")
151 |> delete("/api/pleroma/admin/permission_group/#{user.nickname}/admin")
153 assert json_response(conn, 200) == %{
159 test "/api/pleroma/admin/invite_token" do
160 admin = insert(:user, info: %{is_admin: true})
164 |> assign(:user, admin)
165 |> put_req_header("accept", "application/json")
166 |> get("/api/pleroma/admin/invite_token")
168 assert conn.status == 200
171 test "/api/pleroma/admin/password_reset" do
172 admin = insert(:user, info: %{is_admin: true})
177 |> assign(:user, admin)
178 |> put_req_header("accept", "application/json")
179 |> get("/api/pleroma/admin/password_reset?nickname=#{user.nickname}")
181 assert conn.status == 200