chiya/test/chiya_web/live/user_forgot_password_live_test.exs

64 lines
1.8 KiB
Elixir
Raw Normal View History

2023-03-05 16:13:00 +01:00
defmodule ChiyaWeb.UserForgotPasswordLiveTest do
use ChiyaWeb.ConnCase
import Phoenix.LiveViewTest
import Chiya.AccountsFixtures
alias Chiya.Accounts
alias Chiya.Repo
describe "Forgot password page" do
test "renders email page", %{conn: conn} do
2023-03-07 21:15:26 +01:00
{:ok, lv, html} = live(conn, ~p"/user/reset_password")
2023-03-05 16:13:00 +01:00
assert html =~ "Forgot your password?"
2023-03-07 21:15:26 +01:00
assert has_element?(lv, ~s|a[href="#{~p"/user/register"}"]|, "Register")
assert has_element?(lv, ~s|a[href="#{~p"/user/log_in"}"]|, "Log in")
2023-03-05 16:13:00 +01:00
end
test "redirects if already logged in", %{conn: conn} do
result =
conn
|> log_in_user(user_fixture())
2023-03-07 21:15:26 +01:00
|> live(~p"/user/reset_password")
2023-03-05 16:13:00 +01:00
|> follow_redirect(conn, ~p"/")
assert {:ok, _conn} = result
end
end
describe "Reset link" do
setup do
%{user: user_fixture()}
end
test "sends a new reset password token", %{conn: conn, user: user} do
2023-03-07 21:15:26 +01:00
{:ok, lv, _html} = live(conn, ~p"/user/reset_password")
2023-03-05 16:13:00 +01:00
{:ok, conn} =
lv
|> form("#reset_password_form", user: %{"email" => user.email})
|> render_submit()
|> follow_redirect(conn, "/")
assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "If your email is in our system"
assert Repo.get_by!(Accounts.UserToken, user_id: user.id).context ==
"reset_password"
end
test "does not send reset password token if email is invalid", %{conn: conn} do
2023-03-07 21:15:26 +01:00
{:ok, lv, _html} = live(conn, ~p"/user/reset_password")
2023-03-05 16:13:00 +01:00
{:ok, conn} =
lv
|> form("#reset_password_form", user: %{"email" => "unknown@example.com"})
|> render_submit()
|> follow_redirect(conn, "/")
assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "If your email is in our system"
assert Repo.all(Accounts.UserToken) == []
end
end
end