44 lines
1.1 KiB
Elixir
44 lines
1.1 KiB
Elixir
defmodule MusicLibraryWeb.AuthTest do
|
|
use ExUnit.Case, async: true
|
|
use Plug.Test
|
|
|
|
alias MusicLibraryWeb.Auth
|
|
|
|
defp setup_conn(_config) do
|
|
conn =
|
|
conn(:get, "/any-path")
|
|
|> Phoenix.ConnTest.init_test_session(%{})
|
|
|> Phoenix.ConnTest.fetch_flash()
|
|
|
|
%{conn: conn}
|
|
end
|
|
|
|
describe "require_logged_in/2" do
|
|
setup [:setup_conn]
|
|
|
|
test "when logged out, it redirects to /login", %{conn: conn} do
|
|
conn = Auth.require_logged_in(conn, [])
|
|
|
|
{"location", location} =
|
|
conn.resp_headers
|
|
|> List.keyfind("location", 0)
|
|
|
|
assert conn.status == 302
|
|
assert conn.state == :sent
|
|
assert conn.halted
|
|
assert location == "/login"
|
|
assert conn.assigns.flash == %{"error" => "You must be logged in to access this page"}
|
|
end
|
|
|
|
test "when logged in, it passes through", %{conn: conn} do
|
|
conn =
|
|
conn
|
|
|> Phoenix.ConnTest.init_test_session(%{logged_in: true})
|
|
|> Auth.require_logged_in([])
|
|
|
|
assert conn.status == nil
|
|
assert conn.state == :unset
|
|
end
|
|
end
|
|
end
|