**Performance improvement: 52s → 33.2s test suite (35% faster)** Changes: - Disable TOTP by default in user_fixture (was enabled for all 7400+ tests) - Enable TOTP only where needed (auth flows, TOTP-specific tests) - Update ConnCase helpers to enable TOTP (required for authenticated sessions) - Update test setups that need TOTP for LiveView authentication Impact: - Eliminates unnecessary TOTP secret generation + DB writes for most tests - Reduces Argon2 password hashing overhead across test suite - 281 tests now properly handle TOTP requirements Files updated: - test/support/fixtures/accounts_fixtures.ex: enable_totp default false → true only when needed - test/support/conn_case.ex: register_and_log_in_user helpers enable TOTP - test/towerops/accounts_test.exs: TOTP-related describe blocks enable TOTP - test/towerops_web/user_auth_test.exs: setup enables TOTP - test/towerops_web/live/admin/*: admin LiveView tests enable TOTP - test/towerops_web/live/org/preseem_devices_live_test.exs: enable TOTP
52 lines
1.5 KiB
Elixir
52 lines
1.5 KiB
Elixir
defmodule ToweropsWeb.Admin.DashboardLiveTest do
|
|
use ToweropsWeb.ConnCase, async: true
|
|
|
|
import Phoenix.LiveViewTest
|
|
|
|
setup do
|
|
user = Towerops.AccountsFixtures.user_fixture(enable_totp: true)
|
|
user = user |> Ecto.Changeset.change(%{is_superuser: true}) |> Towerops.Repo.update!()
|
|
{:ok, _organization} = Towerops.Organizations.create_organization(%{name: "Test Org"}, user.id)
|
|
|
|
token = Towerops.Accounts.generate_user_session_token(user)
|
|
|
|
conn =
|
|
build_conn()
|
|
|> Phoenix.ConnTest.init_test_session(%{})
|
|
|> Plug.Conn.put_session(:user_token, token)
|
|
|
|
%{conn: conn, user: user}
|
|
end
|
|
|
|
describe "mount" do
|
|
test "renders admin dashboard for superuser", %{conn: conn} do
|
|
{:ok, _view, html} = live(conn, ~p"/admin")
|
|
|
|
assert html =~ "Admin Dashboard"
|
|
end
|
|
|
|
test "shows user and org counts", %{conn: conn} do
|
|
{:ok, _view, html} = live(conn, ~p"/admin")
|
|
|
|
assert html =~ "Users"
|
|
assert html =~ "Organizations"
|
|
end
|
|
|
|
test "redirects non-superuser to /orgs", %{user: user} do
|
|
# Use existing user from setup but remove superuser flag
|
|
regular_user =
|
|
user
|
|
|> Ecto.Changeset.change(%{is_superuser: false})
|
|
|> Towerops.Repo.update!()
|
|
|
|
token = Towerops.Accounts.generate_user_session_token(regular_user)
|
|
|
|
conn =
|
|
build_conn()
|
|
|> Phoenix.ConnTest.init_test_session(%{})
|
|
|> Plug.Conn.put_session(:user_token, token)
|
|
|
|
assert {:error, {:redirect, %{to: "/orgs"}}} = live(conn, ~p"/admin")
|
|
end
|
|
end
|
|
end
|