Add the logout for the API.
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-08-31 14:52:56 +03:00
parent 2f4fc790be
commit 780652241f
9 changed files with 95 additions and 6 deletions
@@ -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}