This commit is contained in:
@@ -64,6 +64,45 @@ defmodule LinkShortenerWeb.Api.V1.AccountsControllerTest do
|
||||
end
|
||||
end
|
||||
|
||||
describe "user signs out" do
|
||||
setup [:create_user]
|
||||
|
||||
setup %{conn: conn} do
|
||||
%{token: token} = create_user_token()
|
||||
|
||||
conn = conn
|
||||
|> put_req_header("accept", "application/json")
|
||||
|> put_req_header("authorization", "Bearer #{token}")
|
||||
|
||||
{:ok, conn: conn, token: token}
|
||||
end
|
||||
|
||||
test "renders the message and the token if successfully sign out", %{conn: conn, token: token} do
|
||||
conn = post(conn, ~p"/api/v1/users/sign_out", %{})
|
||||
|
||||
assert %{
|
||||
"message" => "Successfully sign out",
|
||||
"token" => token,
|
||||
} = json_response(conn, 200)
|
||||
end
|
||||
|
||||
test "renders errors if the token is invalid after revoke", %{conn: conn, token: token} do
|
||||
# revoking
|
||||
conn = post(conn, ~p"/api/v1/users/sign_out", %{})
|
||||
# second revoking
|
||||
conn = post(conn, ~p"/api/v1/users/sign_out", %{})
|
||||
|
||||
assert %{
|
||||
"error" => "invalid_token"
|
||||
} = json_response(conn, 401)
|
||||
end
|
||||
end
|
||||
|
||||
defp create_user_token() do
|
||||
token = user_token_fixture()
|
||||
%{token: token}
|
||||
end
|
||||
|
||||
defp create_user(_) do
|
||||
user = user_fixture(@create_attrs)
|
||||
%{user: user}
|
||||
|
||||
@@ -2,6 +2,7 @@ defmodule LinkShortenerWeb.Api.V1.LinkControllerTest do
|
||||
use LinkShortenerWeb.ConnCase
|
||||
|
||||
import LinkShortener.LinksFixtures
|
||||
import LinkShortener.AccountsFixtures
|
||||
|
||||
alias LinkShortener.Links.Link
|
||||
alias LinkShortener.Links
|
||||
@@ -25,7 +26,13 @@ defmodule LinkShortenerWeb.Api.V1.LinkControllerTest do
|
||||
}
|
||||
|
||||
setup %{conn: conn} do
|
||||
{:ok, conn: put_req_header(conn, "accept", "application/json")}
|
||||
%{token: token} = create_user_token()
|
||||
|
||||
conn = conn
|
||||
|> put_req_header("accept", "application/json")
|
||||
|> put_req_header("authorization", "Bearer #{token}")
|
||||
|
||||
{:ok, conn: conn}
|
||||
end
|
||||
|
||||
describe "index" do
|
||||
@@ -92,6 +99,11 @@ defmodule LinkShortenerWeb.Api.V1.LinkControllerTest do
|
||||
end
|
||||
end
|
||||
|
||||
defp create_user_token() do
|
||||
token = user_token_fixture()
|
||||
%{token: token}
|
||||
end
|
||||
|
||||
defp create_link(_) do
|
||||
link = link_fixture()
|
||||
%{link: link}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
defmodule LinkShortener.Factories.UserFactory do
|
||||
use ExMachina
|
||||
|
||||
def user_factory do
|
||||
%{
|
||||
email: sequence(:email, &"user-#{&1}@mail.com"),
|
||||
password: "some password"
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -7,6 +7,7 @@ defmodule LinkShortener.AccountsFixtures do
|
||||
alias LinkShortener.Accounts
|
||||
alias LinkShortener.Accounts.User
|
||||
alias LinkShortenerWeb.Auth.Guardian
|
||||
alias LinkShortener.Factories.UserFactory
|
||||
|
||||
@doc """
|
||||
Generate a unique user email.
|
||||
@@ -31,10 +32,7 @@ defmodule LinkShortener.AccountsFixtures do
|
||||
end
|
||||
|
||||
def user_token_fixture(attrs \\ %{}) do
|
||||
user_params = %{
|
||||
email: "user@mail.com",
|
||||
password: "some password"
|
||||
}
|
||||
user_params = UserFactory.user_factory()
|
||||
|
||||
{:ok, %User{} = user} = Accounts.register_user(user_params)
|
||||
{:ok, token, _claims} = Guardian.encode_and_sign(user)
|
||||
|
||||
Reference in New Issue
Block a user