Initial commit on Forgejo
All checks were successful
CI and deploy / Test (push) Successful in 4m52s
CI and deploy / Deploy production (push) Successful in 23s

Fresh repository history for elektrine/tarakan hosted at
https://git.elektrine.com/elektrine/tarakan.
This commit is contained in:
Maxfield Luke 2026-07-29 04:43:40 -04:00
commit af6077b9c3
455 changed files with 78366 additions and 0 deletions

View file

@ -0,0 +1,125 @@
defmodule TarakanWeb.AccountLive.ConfirmationTest do
use TarakanWeb.ConnCase, async: true
import Phoenix.LiveViewTest
import Tarakan.AccountsFixtures
alias Tarakan.Accounts
setup do
%{unconfirmed_account: unconfirmed_account_fixture(), confirmed_account: account_fixture()}
end
describe "Magic-link login" do
test "renders login page for a legacy unconfirmed account", %{
conn: conn,
unconfirmed_account: account
} do
token =
extract_account_token(fn url ->
Accounts.deliver_login_instructions(account, url)
end)
{:ok, _lv, html} = live(conn, ~p"/accounts/log-in/#{token}")
refute html =~ "Confirm"
assert html =~ "Log in"
end
test "renders login page for confirmed account", %{conn: conn, confirmed_account: account} do
token =
extract_account_token(fn url ->
Accounts.deliver_login_instructions(account, url)
end)
{:ok, _lv, html} = live(conn, ~p"/accounts/log-in/#{token}")
assert html =~ "Stay logged in on this device"
end
test "renders login page for already logged in account", %{
conn: conn,
confirmed_account: account
} do
conn = log_in_account(conn, account)
token =
extract_account_token(fn url ->
Accounts.deliver_login_instructions(account, url)
end)
{:ok, _lv, html} = live(conn, ~p"/accounts/log-in/#{token}")
assert html =~ "Log in"
end
test "logs in a legacy unconfirmed account with the given token once", %{
conn: conn,
unconfirmed_account: account
} do
token =
extract_account_token(fn url ->
Accounts.deliver_login_instructions(account, url)
end)
{:ok, lv, _html} = live(conn, ~p"/accounts/log-in/#{token}")
form = form(lv, "#login_form", %{"account" => %{"token" => token}})
render_submit(form)
conn = follow_trigger_action(form, conn)
assert Phoenix.Flash.get(conn.assigns.flash, :info) =~ "Welcome back!"
assert Accounts.get_account!(account.id).confirmed_at
# we are logged in now
assert get_session(conn, :account_token)
assert redirected_to(conn) == ~p"/"
# log out, new conn
conn = build_conn()
{:ok, _lv, html} =
live(conn, ~p"/accounts/log-in/#{token}")
|> follow_redirect(conn, ~p"/accounts/log-in")
assert html =~ "Magic link is invalid or it has expired"
end
test "logs confirmed account in without changing confirmed_at", %{
conn: conn,
confirmed_account: account
} do
token =
extract_account_token(fn url ->
Accounts.deliver_login_instructions(account, url)
end)
{:ok, lv, _html} = live(conn, ~p"/accounts/log-in/#{token}")
form = form(lv, "#login_form", %{"account" => %{"token" => token}})
render_submit(form)
conn = follow_trigger_action(form, conn)
assert Phoenix.Flash.get(conn.assigns.flash, :info) =~
"Welcome back!"
assert Accounts.get_account!(account.id).confirmed_at == account.confirmed_at
# log out, new conn
conn = build_conn()
{:ok, _lv, html} =
live(conn, ~p"/accounts/log-in/#{token}")
|> follow_redirect(conn, ~p"/accounts/log-in")
assert html =~ "Magic link is invalid or it has expired"
end
test "raises error for invalid token", %{conn: conn} do
{:ok, _lv, html} =
live(conn, ~p"/accounts/log-in/invalid-token")
|> follow_redirect(conn, ~p"/accounts/log-in")
assert html =~ "Magic link is invalid or it has expired"
end
end
end