Adds tests across previously-uncovered or under-covered modules: - Mix tasks: backfill_checks, copy_mibs, import_mibs (new test files) - Status pages: StatusIncident changeset (new file) - Webhook signature verification on AgentReleaseWebhookController - CloudflareBanWorker: HTTP-stubbed success / 5xx / transport-error paths - FirmwareVersionFetcherWorker: stubbed perform/0 success + non-200 + tx error - Geoip.Import: production --production code path (HTTP-stubbed) - AgentLive.Show: superuser restart_agent + update_agent + non-superuser paths - NetworkMapLive: node_clicked, deep-link node, topology_updated PubSub - PreseemInsightsLive: toggle_select, deselect_all, filter, dismiss-twice - AlertQuery: 1-arity defaults variants - ProfileWatcher: yaml + reload-trigger event passthrough - MobileAuthController: verify_qr_token success + get/revoke session - HealthController: redis-configured branch - RedisHealthCheck: un-tag :integration tests now that Redis is local - FourOhFourTracker: un-skip module (Redis available) - PingExecutor: un-tag local-only tests + KeyError surface + clamp branch - CheckExecutorWorker: dispatch tcp/dns/ssl/ping branches - UserResetPasswordController: drop dead edit/update + their template Also removes dead code: edit/update actions on UserResetPasswordController and the unused edit.html.heex template — both routed via LiveView.
52 lines
1.7 KiB
Elixir
52 lines
1.7 KiB
Elixir
defmodule ToweropsWeb.HealthControllerTest do
|
|
use ToweropsWeb.ConnCase, async: false
|
|
|
|
describe "GET /health" do
|
|
test "returns 200 when database is connected", %{conn: conn} do
|
|
conn = get(conn, "/health")
|
|
body = response(conn, 200)
|
|
result = Jason.decode!(body)
|
|
assert result["status"] == "ok"
|
|
assert result["database"] == "connected"
|
|
assert result["version"]
|
|
end
|
|
|
|
test "reports redis status as not_configured when redis is not configured", %{conn: conn} do
|
|
previous = Application.get_env(:towerops, :redis)
|
|
Application.put_env(:towerops, :redis, [])
|
|
|
|
try do
|
|
conn = get(conn, "/health")
|
|
result = Jason.decode!(response(conn, 200))
|
|
assert result["redis"] == "not_configured"
|
|
after
|
|
if previous do
|
|
Application.put_env(:towerops, :redis, previous)
|
|
else
|
|
Application.delete_env(:towerops, :redis)
|
|
end
|
|
end
|
|
end
|
|
|
|
test "reports redis as connected when configured to a real instance", %{conn: conn} do
|
|
previous = Application.get_env(:towerops, :redis)
|
|
Application.put_env(:towerops, :redis, host: "localhost", port: 6379)
|
|
|
|
try do
|
|
conn = get(conn, "/health")
|
|
# Either 200 (redis up) or 503 (redis unreachable in CI) — both branches
|
|
# exercise the configured-redis code path. We just assert the response
|
|
# is well-formed JSON with a redis field.
|
|
body = response(conn, conn.status)
|
|
result = Jason.decode!(body)
|
|
assert result["redis"] in ["connected", "disconnected"]
|
|
after
|
|
if previous do
|
|
Application.put_env(:towerops, :redis, previous)
|
|
else
|
|
Application.delete_env(:towerops, :redis)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|