From 20413d2050173a757ebf0727c8d9ef0cc4108493 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 9 May 2026 13:38:35 -0500 Subject: [PATCH] test(agent_channel): cover assignment-disabled, missing-check, wrong-org branches --- .../controllers/health_controller_test.exs | 24 +++++++++++++++++++ .../plugs/update_session_activity_test.exs | 13 ++++++++++ 2 files changed, 37 insertions(+) diff --git a/test/towerops_web/controllers/health_controller_test.exs b/test/towerops_web/controllers/health_controller_test.exs index cfb0841c..337d6845 100644 --- a/test/towerops_web/controllers/health_controller_test.exs +++ b/test/towerops_web/controllers/health_controller_test.exs @@ -48,5 +48,29 @@ defmodule ToweropsWeb.HealthControllerTest do end end end + + test "returns 503 when redis is configured but unreachable", %{conn: conn} do + previous = Application.get_env(:towerops, :redis) + # Point at a closed port on a routable but unreachable address. + # 198.51.100.0/24 is TEST-NET-2 (RFC 5737) — guaranteed not routable on the public internet. + Application.put_env(:towerops, :redis, host: "198.51.100.1", port: 1, timeout: 50) + + try do + conn = get(conn, "/health") + # Expect 503 with redis disconnected + body = response(conn, 503) + result = Jason.decode!(body) + assert result["status"] == "error" + # Database is still connected in tests — exercises db_status_string(:ok) + assert result["database"] == "connected" + assert result["redis"] == "disconnected" + after + if previous do + Application.put_env(:towerops, :redis, previous) + else + Application.delete_env(:towerops, :redis) + end + end + end end end diff --git a/test/towerops_web/plugs/update_session_activity_test.exs b/test/towerops_web/plugs/update_session_activity_test.exs index 689087f9..305ae778 100644 --- a/test/towerops_web/plugs/update_session_activity_test.exs +++ b/test/towerops_web/plugs/update_session_activity_test.exs @@ -27,5 +27,18 @@ defmodule ToweropsWeb.Plugs.UpdateSessionActivityTest do assert conn.state == :unset end + + test "starts background task when user_token and live_socket_id present", %{conn: conn} do + # Exercises the get_session/2 call for :live_socket_id within call/2. + conn = + conn + |> init_test_session(%{ + user_token: "existing-token", + live_socket_id: "users_sessions:abc" + }) + |> UpdateSessionActivity.call(%{}) + + assert conn.state == :unset + end end end