diff options
Diffstat (limited to 'test/web/admin_api/controllers')
| -rw-r--r-- | test/web/admin_api/controllers/admin_api_controller_test.exs | 164 | 
1 files changed, 141 insertions, 23 deletions
| diff --git a/test/web/admin_api/controllers/admin_api_controller_test.exs b/test/web/admin_api/controllers/admin_api_controller_test.exs index 6082441ee..b5d5bd8c7 100644 --- a/test/web/admin_api/controllers/admin_api_controller_test.exs +++ b/test/web/admin_api/controllers/admin_api_controller_test.exs @@ -349,7 +349,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          "avatar" => User.avatar_url(user) |> MediaProxy.url(),          "display_name" => HTML.strip_tags(user.name || user.nickname),          "confirmation_pending" => false, -        "url" => user.ap_id +        "approval_pending" => false, +        "url" => user.ap_id, +        "registration_reason" => nil        }        assert expected == json_response(conn, 200) @@ -613,6 +615,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    describe "GET /api/pleroma/admin/users" do      test "renders users array for the first page", %{conn: conn, admin: admin} do        user = insert(:user, local: false, tags: ["foo", "bar"]) +      user2 = insert(:user, approval_pending: true, registration_reason: "I'm a chill dude") +        conn = get(conn, "/api/pleroma/admin/users?page=1")        users = @@ -627,7 +631,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(admin) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(admin.name || admin.nickname),              "confirmation_pending" => false, -            "url" => admin.ap_id +            "approval_pending" => false, +            "url" => admin.ap_id, +            "registration_reason" => nil            },            %{              "deactivated" => user.deactivated, @@ -639,13 +645,29 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(user) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(user.name || user.nickname),              "confirmation_pending" => false, -            "url" => user.ap_id +            "approval_pending" => false, +            "url" => user.ap_id, +            "registration_reason" => nil +          }, +          %{ +            "deactivated" => user2.deactivated, +            "id" => user2.id, +            "nickname" => user2.nickname, +            "roles" => %{"admin" => false, "moderator" => false}, +            "local" => true, +            "tags" => [], +            "avatar" => User.avatar_url(user2) |> MediaProxy.url(), +            "display_name" => HTML.strip_tags(user2.name || user2.nickname), +            "confirmation_pending" => false, +            "approval_pending" => true, +            "url" => user2.ap_id, +            "registration_reason" => "I'm a chill dude"            }          ]          |> Enum.sort_by(& &1["nickname"])        assert json_response(conn, 200) == %{ -               "count" => 2, +               "count" => 3,                 "page_size" => 50,                 "users" => users               } @@ -712,7 +734,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -738,7 +762,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -764,7 +790,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -790,7 +818,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -816,7 +846,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -842,7 +874,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -863,7 +897,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user2) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user2.name || user2.nickname),                     "confirmation_pending" => false, -                   "url" => user2.ap_id +                   "approval_pending" => false, +                   "url" => user2.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -896,7 +932,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -922,7 +960,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(user) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(user.name || user.nickname),              "confirmation_pending" => false, -            "url" => user.ap_id +            "approval_pending" => false, +            "url" => user.ap_id, +            "registration_reason" => nil            },            %{              "deactivated" => admin.deactivated, @@ -934,7 +974,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(admin) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(admin.name || admin.nickname),              "confirmation_pending" => false, -            "url" => admin.ap_id +            "approval_pending" => false, +            "url" => admin.ap_id, +            "registration_reason" => nil            },            %{              "deactivated" => false, @@ -946,7 +988,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(old_admin) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(old_admin.name || old_admin.nickname),              "confirmation_pending" => false, -            "url" => old_admin.ap_id +            "approval_pending" => false, +            "url" => old_admin.ap_id, +            "registration_reason" => nil            }          ]          |> Enum.sort_by(& &1["nickname"]) @@ -958,6 +1002,44 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end +    test "only unapproved users", %{conn: conn} do +      user = +        insert(:user, +          nickname: "sadboy", +          approval_pending: true, +          registration_reason: "Plz let me in!" +        ) + +      insert(:user, nickname: "happyboy", approval_pending: false) + +      conn = get(conn, "/api/pleroma/admin/users?filters=need_approval") + +      users = +        [ +          %{ +            "deactivated" => user.deactivated, +            "id" => user.id, +            "nickname" => user.nickname, +            "roles" => %{"admin" => false, "moderator" => false}, +            "local" => true, +            "tags" => [], +            "avatar" => User.avatar_url(user) |> MediaProxy.url(), +            "display_name" => HTML.strip_tags(user.name || user.nickname), +            "confirmation_pending" => false, +            "approval_pending" => true, +            "url" => user.ap_id, +            "registration_reason" => "Plz let me in!" +          } +        ] +        |> Enum.sort_by(& &1["nickname"]) + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => users +             } +    end +      test "load only admins", %{conn: conn, admin: admin} do        second_admin = insert(:user, is_admin: true)        insert(:user) @@ -977,7 +1059,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(admin) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(admin.name || admin.nickname),              "confirmation_pending" => false, -            "url" => admin.ap_id +            "approval_pending" => false, +            "url" => admin.ap_id, +            "registration_reason" => nil            },            %{              "deactivated" => false, @@ -989,7 +1073,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(second_admin) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(second_admin.name || second_admin.nickname),              "confirmation_pending" => false, -            "url" => second_admin.ap_id +            "approval_pending" => false, +            "url" => second_admin.ap_id, +            "registration_reason" => nil            }          ]          |> Enum.sort_by(& &1["nickname"]) @@ -1022,7 +1108,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(moderator) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(moderator.name || moderator.nickname),                     "confirmation_pending" => false, -                   "url" => moderator.ap_id +                   "approval_pending" => false, +                   "url" => moderator.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -1048,7 +1136,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(user1) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(user1.name || user1.nickname),              "confirmation_pending" => false, -            "url" => user1.ap_id +            "approval_pending" => false, +            "url" => user1.ap_id, +            "registration_reason" => nil            },            %{              "deactivated" => false, @@ -1060,7 +1150,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do              "avatar" => User.avatar_url(user2) |> MediaProxy.url(),              "display_name" => HTML.strip_tags(user2.name || user2.nickname),              "confirmation_pending" => false, -            "url" => user2.ap_id +            "approval_pending" => false, +            "url" => user2.ap_id, +            "registration_reason" => nil            }          ]          |> Enum.sort_by(& &1["nickname"]) @@ -1100,7 +1192,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(user) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(user.name || user.nickname),                     "confirmation_pending" => false, -                   "url" => user.ap_id +                   "approval_pending" => false, +                   "url" => user.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -1125,7 +1219,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "avatar" => User.avatar_url(admin) |> MediaProxy.url(),                     "display_name" => HTML.strip_tags(admin.name || admin.nickname),                     "confirmation_pending" => false, -                   "url" => admin.ap_id +                   "approval_pending" => false, +                   "url" => admin.ap_id, +                   "registration_reason" => nil                   }                 ]               } @@ -1172,6 +1268,26 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               "@#{admin.nickname} deactivated users: @#{user_one.nickname}, @#{user_two.nickname}"    end +  test "PATCH /api/pleroma/admin/users/approve", %{admin: admin, conn: conn} do +    user_one = insert(:user, approval_pending: true) +    user_two = insert(:user, approval_pending: true) + +    conn = +      patch( +        conn, +        "/api/pleroma/admin/users/approve", +        %{nicknames: [user_one.nickname, user_two.nickname]} +      ) + +    response = json_response(conn, 200) +    assert Enum.map(response["users"], & &1["approval_pending"]) == [false, false] + +    log_entry = Repo.one(ModerationLog) + +    assert ModerationLog.get_log_entry_message(log_entry) == +             "@#{admin.nickname} approved users: @#{user_one.nickname}, @#{user_two.nickname}" +  end +    test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation", %{admin: admin, conn: conn} do      user = insert(:user) @@ -1188,7 +1304,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 "avatar" => User.avatar_url(user) |> MediaProxy.url(),                 "display_name" => HTML.strip_tags(user.name || user.nickname),                 "confirmation_pending" => false, -               "url" => user.ap_id +               "approval_pending" => false, +               "url" => user.ap_id, +               "registration_reason" => nil               }      log_entry = Repo.one(ModerationLog) | 
