diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 280 | ||||
| -rw-r--r-- | test/web/admin_api/search_test.exs | 86 | 
2 files changed, 307 insertions, 59 deletions
diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index b89c42327..f433f6be2 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -419,14 +419,19 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    end    describe "GET /api/pleroma/admin/users" do -    test "renders users array for the first page" do +    setup do        admin = insert(:user, info: %{is_admin: true}) -      user = insert(:user, local: false, tags: ["foo", "bar"])        conn =          build_conn()          |> assign(:user, admin) -        |> get("/api/pleroma/admin/users?page=1") + +      {:ok, conn: conn, admin: admin} +    end + +    test "renders users array for the first page", %{conn: conn, admin: admin} do +      user = insert(:user, local: false, tags: ["foo", "bar"]) +      conn = get(conn, "/api/pleroma/admin/users?page=1")        assert json_response(conn, 200) == %{                 "count" => 2, @@ -452,14 +457,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end -    test "renders empty array for the second page" do -      admin = insert(:user, info: %{is_admin: true}) +    test "renders empty array for the second page", %{conn: conn} do        insert(:user) -      conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/users?page=2") +      conn = get(conn, "/api/pleroma/admin/users?page=2")        assert json_response(conn, 200) == %{                 "count" => 2, @@ -468,14 +469,10 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end -    test "regular search" do -      admin = insert(:user, info: %{is_admin: true}) +    test "regular search", %{conn: conn} do        user = insert(:user, nickname: "bob") -      conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/users?query=bo") +      conn = get(conn, "/api/pleroma/admin/users?query=bo")        assert json_response(conn, 200) == %{                 "count" => 1, @@ -493,17 +490,101 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end -    test "regular search with page size" do -      admin = insert(:user, info: %{is_admin: true}) +    test "search by domain", %{conn: conn} do +      user = insert(:user, nickname: "nickname@domain.com") +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?query=domain.com") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname, +                   "roles" => %{"admin" => false, "moderator" => false}, +                   "local" => true, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "search by full nickname", %{conn: conn} do +      user = insert(:user, nickname: "nickname@domain.com") +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?query=nickname@domain.com") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname, +                   "roles" => %{"admin" => false, "moderator" => false}, +                   "local" => true, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "search by display name", %{conn: conn} do +      user = insert(:user, name: "Display name") +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?name=display") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname, +                   "roles" => %{"admin" => false, "moderator" => false}, +                   "local" => true, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "search by email", %{conn: conn} do +      user = insert(:user, email: "email@example.com") +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?email=email@example.com") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => user.info.deactivated, +                   "id" => user.id, +                   "nickname" => user.nickname, +                   "roles" => %{"admin" => false, "moderator" => false}, +                   "local" => true, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "regular search with page size", %{conn: conn} do        user = insert(:user, nickname: "aalice")        user2 = insert(:user, nickname: "alice") -      conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/users?query=a&page_size=1&page=1") +      conn1 = get(conn, "/api/pleroma/admin/users?query=a&page_size=1&page=1") -      assert json_response(conn, 200) == %{ +      assert json_response(conn1, 200) == %{                 "count" => 2,                 "page_size" => 1,                 "users" => [ @@ -518,12 +599,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 ]               } -      conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/users?query=a&page_size=1&page=2") +      conn2 = get(conn, "/api/pleroma/admin/users?query=a&page_size=1&page=2") -      assert json_response(conn, 200) == %{ +      assert json_response(conn2, 200) == %{                 "count" => 2,                 "page_size" => 1,                 "users" => [ @@ -566,7 +644,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }      end -    test "only local users with no query" do +    test "only local users with no query", %{admin: old_admin} do        admin = insert(:user, info: %{is_admin: true}, nickname: "john")        user = insert(:user, nickname: "bob") @@ -578,7 +656,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          |> get("/api/pleroma/admin/users?filters=local")        assert json_response(conn, 200) == %{ -               "count" => 2, +               "count" => 3,                 "page_size" => 50,                 "users" => [                   %{ @@ -596,6 +674,100 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                     "roles" => %{"admin" => true, "moderator" => false},                     "local" => true,                     "tags" => [] +                 }, +                 %{ +                   "deactivated" => false, +                   "id" => old_admin.id, +                   "local" => true, +                   "nickname" => old_admin.nickname, +                   "roles" => %{"admin" => true, "moderator" => false}, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "load only admins", %{conn: conn, admin: admin} do +      second_admin = insert(:user, info: %{is_admin: true}) +      insert(:user) +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?filters=is_admin") + +      assert json_response(conn, 200) == %{ +               "count" => 2, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => false, +                   "id" => admin.id, +                   "nickname" => admin.nickname, +                   "roles" => %{"admin" => true, "moderator" => false}, +                   "local" => admin.local, +                   "tags" => [] +                 }, +                 %{ +                   "deactivated" => false, +                   "id" => second_admin.id, +                   "nickname" => second_admin.nickname, +                   "roles" => %{"admin" => true, "moderator" => false}, +                   "local" => second_admin.local, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "load only moderators", %{conn: conn} do +      moderator = insert(:user, info: %{is_moderator: true}) +      insert(:user) +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?filters=is_moderator") + +      assert json_response(conn, 200) == %{ +               "count" => 1, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => false, +                   "id" => moderator.id, +                   "nickname" => moderator.nickname, +                   "roles" => %{"admin" => false, "moderator" => true}, +                   "local" => moderator.local, +                   "tags" => [] +                 } +               ] +             } +    end + +    test "load users with tags list", %{conn: conn} do +      user1 = insert(:user, tags: ["first"]) +      user2 = insert(:user, tags: ["second"]) +      insert(:user) +      insert(:user) + +      conn = get(conn, "/api/pleroma/admin/users?tags[]=first&tags[]=second") + +      assert json_response(conn, 200) == %{ +               "count" => 2, +               "page_size" => 50, +               "users" => [ +                 %{ +                   "deactivated" => false, +                   "id" => user1.id, +                   "nickname" => user1.nickname, +                   "roles" => %{"admin" => false, "moderator" => false}, +                   "local" => user1.local, +                   "tags" => ["first"] +                 }, +                 %{ +                   "deactivated" => false, +                   "id" => user2.id, +                   "nickname" => user2.nickname, +                   "roles" => %{"admin" => false, "moderator" => false}, +                   "local" => user2.local, +                   "tags" => ["second"]                   }                 ]               } @@ -651,13 +823,18 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    end    describe "GET /api/pleroma/admin/invite_token" do -    test "without options" do +    setup do        admin = insert(:user, info: %{is_admin: true})        conn =          build_conn()          |> assign(:user, admin) -        |> get("/api/pleroma/admin/invite_token") + +      {:ok, conn: conn} +    end + +    test "without options", %{conn: conn} do +      conn = get(conn, "/api/pleroma/admin/invite_token")        token = json_response(conn, 200)        invite = UserInviteToken.find_by_token!(token) @@ -667,13 +844,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert invite.invite_type == "one_time"      end -    test "with expires_at" do -      admin = insert(:user, info: %{is_admin: true}) - +    test "with expires_at", %{conn: conn} do        conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/invite_token", %{ +        get(conn, "/api/pleroma/admin/invite_token", %{            "invite" => %{"expires_at" => Date.to_string(Date.utc_today())}          }) @@ -686,13 +859,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert invite.invite_type == "date_limited"      end -    test "with max_use" do -      admin = insert(:user, info: %{is_admin: true}) - +    test "with max_use", %{conn: conn} do        conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/invite_token", %{ +        get(conn, "/api/pleroma/admin/invite_token", %{            "invite" => %{"max_use" => 150}          }) @@ -704,13 +873,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        assert invite.invite_type == "reusable"      end -    test "with max use and expires_at" do -      admin = insert(:user, info: %{is_admin: true}) - +    test "with max use and expires_at", %{conn: conn} do        conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/invite_token", %{ +        get(conn, "/api/pleroma/admin/invite_token", %{            "invite" => %{"max_use" => 150, "expires_at" => Date.to_string(Date.utc_today())}          }) @@ -724,25 +889,26 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    end    describe "GET /api/pleroma/admin/invites" do -    test "no invites" do +    setup do        admin = insert(:user, info: %{is_admin: true})        conn =          build_conn()          |> assign(:user, admin) -        |> get("/api/pleroma/admin/invites") + +      {:ok, conn: conn} +    end + +    test "no invites", %{conn: conn} do +      conn = get(conn, "/api/pleroma/admin/invites")        assert json_response(conn, 200) == %{"invites" => []}      end -    test "with invite" do -      admin = insert(:user, info: %{is_admin: true}) +    test "with invite", %{conn: conn} do        {:ok, invite} = UserInviteToken.create_invite() -      conn = -        build_conn() -        |> assign(:user, admin) -        |> get("/api/pleroma/admin/invites") +      conn = get(conn, "/api/pleroma/admin/invites")        assert json_response(conn, 200) == %{                 "invites" => [ diff --git a/test/web/admin_api/search_test.exs b/test/web/admin_api/search_test.exs index 3950996ed..501a8d007 100644 --- a/test/web/admin_api/search_test.exs +++ b/test/web/admin_api/search_test.exs @@ -70,11 +70,11 @@ defmodule Pleroma.Web.AdminAPI.SearchTest do      test "it returns specific user" do        insert(:user)        insert(:user) -      insert(:user, nickname: "bob", local: true, info: %{deactivated: false}) +      user = insert(:user, nickname: "bob", local: true, info: %{deactivated: false})        {:ok, _results, total_count} = Search.user(%{query: ""}) -      {:ok, _results, count} = +      {:ok, [^user], count} =          Search.user(%{            query: "Bo",            active: true, @@ -84,5 +84,87 @@ defmodule Pleroma.Web.AdminAPI.SearchTest do        assert total_count == 3        assert count == 1      end + +    test "it returns user by domain" do +      insert(:user) +      insert(:user) +      user = insert(:user, nickname: "some@domain.com") + +      {:ok, _results, total} = Search.user() +      {:ok, [^user], count} = Search.user(%{query: "domain.com"}) +      assert total == 3 +      assert count == 1 +    end + +    test "it return user by full nickname" do +      insert(:user) +      insert(:user) +      user = insert(:user, nickname: "some@domain.com") + +      {:ok, _results, total} = Search.user() +      {:ok, [^user], count} = Search.user(%{query: "some@domain.com"}) +      assert total == 3 +      assert count == 1 +    end + +    test "it returns admin user" do +      admin = insert(:user, info: %{is_admin: true}) +      insert(:user) +      insert(:user) + +      {:ok, _results, total} = Search.user() +      {:ok, [^admin], count} = Search.user(%{is_admin: true}) +      assert total == 3 +      assert count == 1 +    end + +    test "it returns moderator user" do +      moderator = insert(:user, info: %{is_moderator: true}) +      insert(:user) +      insert(:user) + +      {:ok, _results, total} = Search.user() +      {:ok, [^moderator], count} = Search.user(%{is_moderator: true}) +      assert total == 3 +      assert count == 1 +    end + +    test "it returns users with tags" do +      user1 = insert(:user, tags: ["first"]) +      user2 = insert(:user, tags: ["second"]) +      insert(:user) +      insert(:user) + +      {:ok, _results, total} = Search.user() +      {:ok, users, count} = Search.user(%{tags: ["first", "second"]}) +      assert total == 4 +      assert count == 2 +      assert user1 in users +      assert user2 in users +    end + +    test "it returns user by display name" do +      user = insert(:user, name: "Display name") +      insert(:user) +      insert(:user) + +      {:ok, _results, total} = Search.user() +      {:ok, [^user], count} = Search.user(%{name: "display"}) + +      assert total == 3 +      assert count == 1 +    end + +    test "it returns user by email" do +      user = insert(:user, email: "some@example.com") +      insert(:user) +      insert(:user) + +      {:ok, _results, total} = Search.user() +      {:ok, [^user], count} = Search.user(%{email: "some@example.com"}) + +      assert total == 3 +      assert count == 1 +    end    end  end  | 
