diff options
| author | Egor Kislitsyn <egor@kislitsyn.com> | 2019-05-14 19:00:07 +0700 | 
|---|---|---|
| committer | Egor Kislitsyn <egor@kislitsyn.com> | 2019-05-14 19:00:07 +0700 | 
| commit | e82e73478e577782407bc8452d17925675d99d10 (patch) | |
| tree | 0784beff0a57cbeb239215314e0436b7f0a5253f /test/web/admin_api | |
| parent | 23276e8d6848fa8eae390c16b6e0619c12546e4a (diff) | |
| parent | cdcdbd88da76f18c21da7f6f15a29883044902c8 (diff) | |
| download | pleroma-e82e73478e577782407bc8452d17925675d99d10.tar.gz pleroma-e82e73478e577782407bc8452d17925675d99d10.zip | |
Merge remote-tracking branch 'pleroma/develop' into feature/addressable-lists
Diffstat (limited to 'test/web/admin_api')
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 334 | ||||
| -rw-r--r-- | test/web/admin_api/search_test.exs | 86 | 
2 files changed, 335 insertions, 85 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..6c1897b5a 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -9,7 +9,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do    alias Pleroma.UserInviteToken    import Pleroma.Factory -  describe "/api/pleroma/admin/user" do +  describe "/api/pleroma/admin/users" do      test "Delete" do        admin = insert(:user, info: %{is_admin: true})        user = insert(:user) @@ -18,7 +18,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          build_conn()          |> assign(:user, admin)          |> put_req_header("accept", "application/json") -        |> delete("/api/pleroma/admin/user?nickname=#{user.nickname}") +        |> delete("/api/pleroma/admin/users?nickname=#{user.nickname}")        assert json_response(conn, 200) == user.nickname      end @@ -30,7 +30,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          build_conn()          |> assign(:user, admin)          |> put_req_header("accept", "application/json") -        |> post("/api/pleroma/admin/user", %{ +        |> post("/api/pleroma/admin/users", %{            "nickname" => "lain",            "email" => "lain@example.org",            "password" => "test" @@ -75,7 +75,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "/api/pleroma/admin/user/follow" do +  describe "/api/pleroma/admin/users/follow" do      test "allows to force-follow another user" do        admin = insert(:user, info: %{is_admin: true})        user = insert(:user) @@ -84,7 +84,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        build_conn()        |> assign(:user, admin)        |> put_req_header("accept", "application/json") -      |> post("/api/pleroma/admin/user/follow", %{ +      |> post("/api/pleroma/admin/users/follow", %{          "follower" => follower.nickname,          "followed" => user.nickname        }) @@ -96,7 +96,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "/api/pleroma/admin/user/unfollow" do +  describe "/api/pleroma/admin/users/unfollow" do      test "allows to force-unfollow another user" do        admin = insert(:user, info: %{is_admin: true})        user = insert(:user) @@ -107,7 +107,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        build_conn()        |> assign(:user, admin)        |> put_req_header("accept", "application/json") -      |> post("/api/pleroma/admin/user/unfollow", %{ +      |> post("/api/pleroma/admin/users/unfollow", %{          "follower" => follower.nickname,          "followed" => user.nickname        }) @@ -191,7 +191,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "/api/pleroma/admin/permission_group" do +  describe "/api/pleroma/admin/users/:nickname/permission_group" do      test "GET is giving user_info" do        admin = insert(:user, info: %{is_admin: true}) @@ -199,7 +199,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          build_conn()          |> assign(:user, admin)          |> put_req_header("accept", "application/json") -        |> get("/api/pleroma/admin/permission_group/#{admin.nickname}") +        |> get("/api/pleroma/admin/users/#{admin.nickname}/permission_group/")        assert json_response(conn, 200) == %{                 "is_admin" => true, @@ -215,7 +215,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          build_conn()          |> assign(:user, admin)          |> put_req_header("accept", "application/json") -        |> post("/api/pleroma/admin/permission_group/#{user.nickname}/admin") +        |> post("/api/pleroma/admin/users/#{user.nickname}/permission_group/admin")        assert json_response(conn, 200) == %{                 "is_admin" => true @@ -230,7 +230,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do          build_conn()          |> assign(:user, admin)          |> put_req_header("accept", "application/json") -        |> delete("/api/pleroma/admin/permission_group/#{user.nickname}/admin") +        |> delete("/api/pleroma/admin/users/#{user.nickname}/permission_group/admin")        assert json_response(conn, 200) == %{                 "is_admin" => false @@ -238,7 +238,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "PUT /api/pleroma/admin/activation_status" do +  describe "PUT /api/pleroma/admin/users/:nickname/activation_status" do      setup %{conn: conn} do        admin = insert(:user, info: %{is_admin: true}) @@ -255,7 +255,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn -        |> put("/api/pleroma/admin/activation_status/#{user.nickname}", %{status: false}) +        |> put("/api/pleroma/admin/users/#{user.nickname}/activation_status", %{status: false})        user = User.get_cached_by_id(user.id)        assert user.info.deactivated == true @@ -267,7 +267,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn -        |> put("/api/pleroma/admin/activation_status/#{user.nickname}", %{status: true}) +        |> put("/api/pleroma/admin/users/#{user.nickname}/activation_status", %{status: true})        user = User.get_cached_by_id(user.id)        assert user.info.deactivated == false @@ -280,7 +280,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn          |> assign(:user, user) -        |> put("/api/pleroma/admin/activation_status/#{user.nickname}", %{status: false}) +        |> put("/api/pleroma/admin/users/#{user.nickname}/activation_status", %{status: false})        assert json_response(conn, :forbidden)      end @@ -309,7 +309,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn          |> assign(:user, user) -        |> post("/api/pleroma/admin/email_invite?email=#{recipient_email}&name=#{recipient_name}") +        |> post( +          "/api/pleroma/admin/users/email_invite?email=#{recipient_email}&name=#{recipient_name}" +        )        assert json_response(conn, :no_content) @@ -341,13 +343,13 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn          |> assign(:user, non_admin_user) -        |> post("/api/pleroma/admin/email_invite?email=foo@bar.com&name=JD") +        |> post("/api/pleroma/admin/users/email_invite?email=foo@bar.com&name=JD")        assert json_response(conn, :forbidden)      end    end -  describe "POST /api/pleroma/admin/email_invite, with invalid config" do +  describe "POST /api/pleroma/admin/users/email_invite, with invalid config" do      setup do        [user: insert(:user, info: %{is_admin: true})]      end @@ -367,7 +369,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn          |> assign(:user, user) -        |> post("/api/pleroma/admin/email_invite?email=foo@bar.com&name=JD") +        |> post("/api/pleroma/admin/users/email_invite?email=foo@bar.com&name=JD")        assert json_response(conn, :internal_server_error)      end @@ -387,7 +389,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          conn          |> assign(:user, user) -        |> post("/api/pleroma/admin/email_invite?email=foo@bar.com&name=JD") +        |> post("/api/pleroma/admin/users/email_invite?email=foo@bar.com&name=JD")        assert json_response(conn, :internal_server_error)      end @@ -405,7 +407,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      assert conn.status == 200    end -  test "/api/pleroma/admin/password_reset" do +  test "/api/pleroma/admin/users/:nickname/password_reset" do      admin = insert(:user, info: %{is_admin: true})      user = insert(:user) @@ -413,20 +415,25 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        build_conn()        |> assign(:user, admin)        |> put_req_header("accept", "application/json") -      |> get("/api/pleroma/admin/password_reset?nickname=#{user.nickname}") +      |> get("/api/pleroma/admin/users/#{user.nickname}/password_reset")      assert conn.status == 200    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 +459,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 +471,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 +492,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 +601,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 +646,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 +658,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 +676,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"]                   }                 ]               } @@ -650,14 +824,19 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do               }    end -  describe "GET /api/pleroma/admin/invite_token" do -    test "without options" do +  describe "GET /api/pleroma/admin/users/invite_token" 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/users/invite_token")        token = json_response(conn, 200)        invite = UserInviteToken.find_by_token!(token) @@ -667,13 +846,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/users/invite_token", %{            "invite" => %{"expires_at" => Date.to_string(Date.utc_today())}          }) @@ -686,13 +861,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/users/invite_token", %{            "invite" => %{"max_use" => 150}          }) @@ -704,13 +875,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/users/invite_token", %{            "invite" => %{"max_use" => 150, "expires_at" => Date.to_string(Date.utc_today())}          }) @@ -723,26 +890,27 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "GET /api/pleroma/admin/invites" do -    test "no invites" do +  describe "GET /api/pleroma/admin/users/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/users/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/users/invites")        assert json_response(conn, 200) == %{                 "invites" => [ @@ -760,7 +928,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do      end    end -  describe "POST /api/pleroma/admin/revoke_invite" do +  describe "POST /api/pleroma/admin/users/revoke_invite" do      test "with token" do        admin = insert(:user, info: %{is_admin: true})        {:ok, invite} = UserInviteToken.create_invite() @@ -768,7 +936,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do        conn =          build_conn()          |> assign(:user, admin) -        |> post("/api/pleroma/admin/revoke_invite", %{"token" => invite.token}) +        |> post("/api/pleroma/admin/users/revoke_invite", %{"token" => invite.token})        assert json_response(conn, 200) == %{                 "expires_at" => nil, 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 | 
