postland/test/postland_web/live/user_login_live_test.exs
2024-09-25 20:45:10 -05:00

53 lines
1.4 KiB
Elixir

defmodule PostlandWeb.UserLoginLiveTest do
use PostlandWeb.ConnCase
import Phoenix.LiveViewTest
import Postland.AccountsFixtures
describe "Log in page" do
test "redirects if already logged in", %{conn: conn} do
result =
conn
|> log_in_user(user_fixture())
|> live(~p"/users/log_in")
|> follow_redirect(conn, "/")
assert {:ok, _conn} = result
end
end
describe "user login" do
test "redirects if user login with valid credentials", %{conn: conn} do
password = "123456789abcd"
user = user_fixture(%{password: password})
{:ok, lv, _html} = live(conn, ~p"/users/log_in")
form =
form(lv, "#login_form",
user: %{username: user.username, password: password, remember_me: true}
)
conn = submit_form(form, conn)
assert redirected_to(conn) == ~p"/"
end
test "redirects to login page with a flash error if there are no valid credentials", %{
conn: conn
} do
{:ok, lv, _html} = live(conn, ~p"/users/log_in")
form =
form(lv, "#login_form",
user: %{username: "test@username.com", password: "123456", remember_me: true}
)
conn = submit_form(form, conn)
assert Phoenix.Flash.get(conn.assigns.flash, :error) == "Invalid username or password"
assert redirected_to(conn) == "/users/log_in"
end
end
end