From 8bc4f120c6d5cface75cc3a5b13064c93d031316 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 9 May 2026 10:27:53 -0500 Subject: [PATCH] test: UserSettingsLive delete_api_token + revoke_session/mobile_device events --- .../live/user_settings_live_test.exs | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/test/towerops_web/live/user_settings_live_test.exs b/test/towerops_web/live/user_settings_live_test.exs index bcb098e5..e5bfb198 100644 --- a/test/towerops_web/live/user_settings_live_test.exs +++ b/test/towerops_web/live/user_settings_live_test.exs @@ -295,6 +295,56 @@ defmodule ToweropsWeb.UserSettingsLiveTest do end end + describe "UserSettingsLive delete_api_token / revoke_session events" do + setup :register_and_log_in_user_with_sudo + + test "delete_api_token with a real token deletes it", %{conn: conn, user: user} do + org = Towerops.OrganizationsFixtures.organization_fixture(user.id) + + {:ok, {token, _raw}} = + Towerops.ApiTokens.create_api_token(%{ + organization_id: org.id, + user_id: user.id, + name: "ToBeDeleted" + }) + + {:ok, view, _html} = live(conn, ~p"/users/settings?tab=api") + + html = render_click(view, "delete_api_token", %{"token-id" => token.id}) + assert is_binary(html) + end + + test "revoke_session with unknown id flashes 'Session not found'", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/users/settings?tab=sessions") + + html = + render_click(view, "revoke_session", %{"session-id" => Ecto.UUID.generate()}) + + assert html =~ "not found" or html =~ "User Settings" + end + + test "revoke_mobile_device with unknown id stays alive", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/users/settings?tab=notifications") + + html = + render_click(view, "revoke_mobile_device", %{"session-id" => Ecto.UUID.generate()}) + + assert is_binary(html) + end + + test "toggle_device_alerts with unknown id stays alive", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/users/settings?tab=notifications") + + html = + render_click(view, "toggle_device_alerts", %{ + "session-id" => Ecto.UUID.generate(), + "enabled" => "true" + }) + + assert is_binary(html) + end + end + describe "UserSettingsLive TOTP add device flow with sudo mode" do setup :register_and_log_in_user_with_sudo