auto-confirm admin during setup, skip email verification
Some checks failed
deploy / deploy (push) Has been cancelled
Some checks failed
deploy / deploy (push) Has been cancelled
Setup wizard no longer requires email delivery. Admin account is auto-confirmed and auto-logged-in via token redirect. Adds setup secret gate for prod (logged on boot), SMTP env var config in runtime.exs, email_configured? helper, and admin warning banner when email isn't set up. Includes plan files for this task and the follow-up email settings UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
40
test/berrypod_web/controllers/setup_controller_test.exs
Normal file
40
test/berrypod_web/controllers/setup_controller_test.exs
Normal file
@@ -0,0 +1,40 @@
|
||||
defmodule BerrypodWeb.SetupControllerTest do
|
||||
use BerrypodWeb.ConnCase, async: true
|
||||
|
||||
import Berrypod.AccountsFixtures
|
||||
|
||||
alias Berrypod.Accounts
|
||||
|
||||
describe "GET /setup/login/:token" do
|
||||
test "logs in with a valid token and redirects to /setup", %{conn: conn} do
|
||||
user = user_fixture()
|
||||
token = Accounts.generate_login_token(user)
|
||||
|
||||
conn = get(conn, ~p"/setup/login/#{token}")
|
||||
|
||||
assert redirected_to(conn) == ~p"/setup"
|
||||
assert get_session(conn, :user_token)
|
||||
end
|
||||
|
||||
test "redirects to /setup with error for invalid token", %{conn: conn} do
|
||||
conn = get(conn, ~p"/setup/login/invalid-token")
|
||||
|
||||
assert redirected_to(conn) == ~p"/setup"
|
||||
assert Phoenix.Flash.get(conn.assigns.flash, :error) =~ "Login failed"
|
||||
end
|
||||
|
||||
test "token is consumed after use", %{conn: conn} do
|
||||
user = user_fixture()
|
||||
token = Accounts.generate_login_token(user)
|
||||
|
||||
# First use succeeds
|
||||
conn1 = get(conn, ~p"/setup/login/#{token}")
|
||||
assert redirected_to(conn1) == ~p"/setup"
|
||||
|
||||
# Second use fails (token consumed)
|
||||
conn2 = get(conn, ~p"/setup/login/#{token}")
|
||||
assert redirected_to(conn2) == ~p"/setup"
|
||||
assert Phoenix.Flash.get(conn2.assigns.flash, :error) =~ "Login failed"
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user