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