48 lines
1.3 KiB
Elixir
48 lines
1.3 KiB
Elixir
defmodule MvWeb.AuthControllerTest do
|
|
use MvWeb.ConnCase, async: true
|
|
|
|
test "GET /sign-in shows sign in form", %{conn: conn} do
|
|
conn = get(conn, ~p"/sign-in")
|
|
assert html_response(conn, 200) =~ "Sign in"
|
|
end
|
|
|
|
test "POST /sign-in with valid credentials redirects to home", %{conn: conn} do
|
|
# Create a test user first
|
|
conn = conn_with_oidc_user(conn)
|
|
conn = get(conn, ~p"/sign-in")
|
|
|
|
assert redirected_to(conn) == ~p"/"
|
|
end
|
|
|
|
test "POST /sign-in with invalid credentials shows error", %{conn: conn} do
|
|
conn =
|
|
post(conn, ~p"/auth/sign_in", %{
|
|
"user" => %{
|
|
"email" => "wrong@example.com",
|
|
"password" => "wrongpassword"
|
|
}
|
|
})
|
|
|
|
assert conn.status == 404
|
|
end
|
|
|
|
test "GET /sign-out redirects to home", %{conn: conn} do
|
|
# First sign in a user
|
|
conn = conn_with_oidc_user(conn)
|
|
|
|
# Then sign out
|
|
conn = get(conn, ~p"/sign-out")
|
|
assert redirected_to(conn) == ~p"/"
|
|
end
|
|
|
|
test "unauthenticated user accessing protected route gets redirected to sign-in", %{conn: conn} do
|
|
conn = get(conn, ~p"/members")
|
|
assert redirected_to(conn) == ~p"/sign-in"
|
|
end
|
|
|
|
test "authenticated user can access protected route", %{conn: conn} do
|
|
conn = conn_with_oidc_user(conn)
|
|
conn = get(conn, ~p"/members")
|
|
assert conn.status == 200
|
|
end
|
|
end
|