From ae25bfdf71ca733ddd0d8b04100ae3e857a9d3c2 Mon Sep 17 00:00:00 2001 From: alexpaynex <55271826-alexpaynex@users.noreply.replit.com> Date: Thu, 19 Mar 2026 04:08:01 +0000 Subject: [PATCH] Improve test reliability by adding explicit checks for bootstrap process Update testkit.ts to add explicit failure conditions for missing payment hash in stub mode and to assert that the bootstrapJobId returned in the poll response matches the created ID. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 418bf6f8-212b-4bb0-a7a5-8231a061da4e Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 9114d92d-daf7-42ae-a3f7-be296300efa5 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/9f85e954-647c-46a5-90a7-396e495a805a/418bf6f8-212b-4bb0-a7a5-8231a061da4e/Q83Uqvu Replit-Helium-Checkpoint-Created: true --- artifacts/api-server/src/routes/testkit.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/artifacts/api-server/src/routes/testkit.ts b/artifacts/api-server/src/routes/testkit.ts index f21b9d7..6c2a6ee 100644 --- a/artifacts/api-server/src/routes/testkit.ts +++ b/artifacts/api-server/src/routes/testkit.ts @@ -667,17 +667,19 @@ if [[ "\$T23_CODE" != "201" || -z "\$BOOTSTRAP_ID" || "\$BOOTSTRAP_ID" == "null" elif [[ "\$T23_STUB" != "true" ]]; then note SKIP "stubMode=false — skipping (requires DO_API_TOKEN for real provisioning)" SKIP=\$((SKIP+1)) +elif [[ -z "\$BOOTSTRAP_HASH" || "\$BOOTSTRAP_HASH" == "null" ]]; then + note FAIL "stubMode=true but invoice.paymentHash missing — cannot stub-pay: body=\$T23_BODY" + FAIL=\$((FAIL+1)) else - if [[ -n "\$BOOTSTRAP_HASH" && "\$BOOTSTRAP_HASH" != "null" ]]; then - curl -s -X POST "\$BASE/api/dev/stub/pay/\$BOOTSTRAP_HASH" >/dev/null - fi + curl -s -X POST "\$BASE/api/dev/stub/pay/\$BOOTSTRAP_HASH" >/dev/null START_T23=\$(date +%s); T23_TIMEOUT=20 - T23_STATE=""; T23_MSG=""; T23_POLL_CODE="" + T23_STATE=""; T23_MSG=""; T23_POLL_CODE=""; T23_POLL_ID="" while :; do T23_POLL=\$(curl -s -w "\\n%{http_code}" "\$BASE/api/bootstrap/\$BOOTSTRAP_ID") T23_POLL_BODY=\$(body_of "\$T23_POLL"); T23_POLL_CODE=\$(code_of "\$T23_POLL") T23_STATE=\$(echo "\$T23_POLL_BODY" | jq -r '.state' 2>/dev/null || echo "") T23_MSG=\$(echo "\$T23_POLL_BODY" | jq -r '.message' 2>/dev/null || echo "") + T23_POLL_ID=\$(echo "\$T23_POLL_BODY" | jq -r '.bootstrapJobId' 2>/dev/null || echo "") NOW_T23=\$(date +%s); ELAPSED_T23=\$((NOW_T23 - START_T23)) if [[ "\$T23_STATE" == "provisioning" || "\$T23_STATE" == "ready" ]]; then break; fi if (( ELAPSED_T23 > T23_TIMEOUT )); then break; fi @@ -685,11 +687,12 @@ else done if [[ "\$T23_POLL_CODE" == "200" \\ && ("\$T23_STATE" == "provisioning" || "\$T23_STATE" == "ready") \\ - && -n "\$T23_MSG" && "\$T23_MSG" != "null" ]]; then - note PASS "state=\$T23_STATE in \$ELAPSED_T23 s, message present, bootstrapJobId=\$BOOTSTRAP_ID" + && -n "\$T23_MSG" && "\$T23_MSG" != "null" \\ + && "\$T23_POLL_ID" == "\$BOOTSTRAP_ID" ]]; then + note PASS "state=\$T23_STATE in \$ELAPSED_T23 s, message present, bootstrapJobId=\$BOOTSTRAP_ID (echoed in poll)" PASS=\$((PASS+1)) else - note FAIL "code=\$T23_POLL_CODE state=\$T23_STATE elapsed=\${ELAPSED_T23}s body=\$T23_POLL_BODY" + note FAIL "code=\$T23_POLL_CODE state=\$T23_STATE elapsed=\${ELAPSED_T23}s pollId=\$T23_POLL_ID (expected \$BOOTSTRAP_ID) body=\$T23_POLL_BODY" FAIL=\$((FAIL+1)) fi fi