From 96ef569720dd6249732c98375820ed43b749380b Mon Sep 17 00:00:00 2001 From: ZGaetano Date: Wed, 20 May 2026 13:54:30 -0400 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20test-api.sh=20=E2=80=94=20fix=20?= =?UTF-8?q?login=20POST,=20sequences=20400,=20settings/ampp=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/test-api.sh | 62 +++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/deploy/test-api.sh b/deploy/test-api.sh index 5c899ae..7e09019 100644 --- a/deploy/test-api.sh +++ b/deploy/test-api.sh @@ -26,7 +26,7 @@ header() { echo -e "\n${BLD}$1${NC}"; } AUTH_ARGS=() [[ -n "$TOKEN" ]] && AUTH_ARGS+=(-H "Authorization: Bearer $TOKEN") -# GET — check HTTP status code (no -f so 4xx/5xx are visible) +# GET — check HTTP status code (no -f so 4xx/5xx are visible as their real code) check_status() { local label="$1" path="$2" want="$3" local got @@ -88,38 +88,43 @@ fi # ── Auth ───────────────────────────────────────────────────────────────────── header "Auth" -check_status "GET /auth/me" "/api/v1/auth/me" 200 -check_body "GET /auth/me returns username" "/api/v1/auth/me" '"username"' -check_status "POST /auth/login (bad creds → 400)" "/api/v1/auth/login" 400 +check_status "GET /auth/me" "/api/v1/auth/me" 200 +check_body "GET /auth/me returns username" "/api/v1/auth/me" '"username"' +check_post "POST /auth/login (missing body → 400)" "/api/v1/auth/login" '{}' 400 # ── Assets ─────────────────────────────────────────────────────────────────── header "Assets" -check_status "GET /assets" "/api/v1/assets" 200 -check_body "GET /assets returns assets key" "/api/v1/assets" '"assets"' -check_status "GET /assets bogus id → 404" "/api/v1/assets/00000000-0000-0000-0000-000000000000" 404 +check_status "GET /assets" "/api/v1/assets" 200 +check_body "GET /assets returns assets key" "/api/v1/assets" '"assets"' +check_status "GET /assets bogus id → 404" "/api/v1/assets/00000000-0000-0000-0000-000000000000" 404 # ── Projects ───────────────────────────────────────────────────────────────── header "Projects" -check_status "GET /projects" "/api/v1/projects" 200 -check_body "GET /projects returns array" "/api/v1/projects" '[' +check_status "GET /projects" "/api/v1/projects" 200 +check_body "GET /projects returns array" "/api/v1/projects" '[' # ── Jobs ───────────────────────────────────────────────────────────────────── header "Jobs" -check_status "GET /jobs" "/api/v1/jobs" 200 -check_body "GET /jobs returns array" "/api/v1/jobs" '[' +check_status "GET /jobs" "/api/v1/jobs" 200 +check_body "GET /jobs returns array" "/api/v1/jobs" '[' # ── Recorders ──────────────────────────────────────────────────────────────── header "Recorders" -check_status "GET /recorders" "/api/v1/recorders" 200 +check_status "GET /recorders" "/api/v1/recorders" 200 -# ── Sequences (Editor) ─────────────────────────────────────────────────────── +# ── Sequences (requires project_id param) ──────────────────────────────────── header "Sequences" -check_status "GET /sequences" "/api/v1/sequences" 200 +check_status "GET /sequences (no project_id → 400)" "/api/v1/sequences" 400 +check_status "GET /sequences bogus project_id → 200" "/api/v1/sequences?project_id=00000000-0000-0000-0000-000000000000" 200 + +# ── Settings ───────────────────────────────────────────────────────────────── +header "Settings" +check_status "GET /settings/ampp" "/api/v1/settings/ampp" 200 # ── Cluster ────────────────────────────────────────────────────────────────── header "Cluster" -check_status "GET /cluster" "/api/v1/cluster" 200 -check_body "GET /cluster returns array" "/api/v1/cluster" '[' +check_status "GET /cluster" "/api/v1/cluster" 200 +check_body "GET /cluster returns array" "/api/v1/cluster" '[' # Heartbeat: register a temporary smoke-test node, verify it appears, remove it TEST_HOST="smoke-test-$(date +%s)" @@ -127,9 +132,9 @@ check_post "POST /cluster/heartbeat" "/api/v1/cluster/heartbeat" \ "{\"hostname\":\"$TEST_HOST\",\"role\":\"smoketest\",\"cpu_usage\":0,\"mem_used_mb\":512,\"mem_total_mb\":4096}" \ 200 -# Find the node we just created (match by hostname) +# Find the node we just registered (grab first UUID from array) NODE_ID=$(curl -s "${AUTH_ARGS[@]}" "$BASE/api/v1/cluster" 2>/dev/null \ - | grep -o "\"id\":\"[^\"]*\"" | head -1 | grep -o '[0-9a-f-]\{36\}' || true) + | grep -o '"id":"[^"]*"' | head -1 | grep -o '[0-9a-f-]\{36\}' || true) if [[ -n "$NODE_ID" ]]; then pass "Cluster node visible in registry" @@ -143,30 +148,25 @@ fi # ── System / Containers ─────────────────────────────────────────────────────── header "System" -check_status "GET /system/containers" "/api/v1/system/containers" 200 -check_body "Containers returns array" "/api/v1/system/containers" '[' +check_status "GET /system/containers" "/api/v1/system/containers" 200 +check_body "Containers returns array" "/api/v1/system/containers" '[' -# ── Capture (proxies to capture service) ───────────────────────────────────── +# ── Capture (proxies to capture service — 500 if container is down) ─────────── header "Capture" -# /capture/status proxies to the capture container; 200 = service up, 5xx = capture unreachable CAPTURE_CODE=$(curl -s -o /dev/null -w "%{http_code}" "${AUTH_ARGS[@]}" \ "$BASE/api/v1/capture/status" 2>/dev/null) if [[ "$CAPTURE_CODE" == "200" ]]; then pass "GET /capture/status [HTTP 200]" -elif [[ "$CAPTURE_CODE" == "500" || "$CAPTURE_CODE" == "502" || "$CAPTURE_CODE" == "503" ]]; then - skip "GET /capture/status [HTTP $CAPTURE_CODE]" "capture service unreachable (container down?)" +elif [[ "$CAPTURE_CODE" =~ ^5 ]]; then + skip "GET /capture/status [HTTP $CAPTURE_CODE]" "capture service proxy error (container down?)" else - fail "GET /capture/status [HTTP $CAPTURE_CODE]" "expected 200 or 5xx proxy error" + fail "GET /capture/status [HTTP $CAPTURE_CODE]" "expected 200 or 5xx" fi -# ── Settings ───────────────────────────────────────────────────────────────── -header "Settings" -check_status "GET /settings" "/api/v1/settings" 200 - # ── Users / Tokens ─────────────────────────────────────────────────────────── header "Users / Tokens" -check_status "GET /users" "/api/v1/users" 200 -check_status "GET /tokens" "/api/v1/tokens" 200 +check_status "GET /users" "/api/v1/users" 200 +check_status "GET /tokens" "/api/v1/tokens" 200 # ── Summary ─────────────────────────────────────────────────────────────────── TOTAL=$((PASS + FAIL + SKIP))