diff --git a/scripts/payment-e2e-walkthrough.sh b/scripts/payment-e2e-walkthrough.sh index 8de3ce22e..b924ee5b8 100755 --- a/scripts/payment-e2e-walkthrough.sh +++ b/scripts/payment-e2e-walkthrough.sh @@ -42,6 +42,17 @@ OPERATOR_EMAIL=${OPERATOR_EMAIL:-?} OPERATOR_PASSWORD=${OPERATOR_PASSWORD:-?} ORDER_POLL_TIMEOUT=${ORDER_POLL_TIMEOUT:-300} ORDER_POLL_INTERVAL=${ORDER_POLL_INTERVAL:-5} +# v1.0.10 polish safety guards: +# DRY_RUN=1 — skip the POST /orders + payment steps; rehearse +# the login + product-listing + license-poll path +# end-to-end on staging without spending a euro. +# CONFIRM_PRODUCTION=1 — required when STAGING_URL points at the live +# environment. Without it the script refuses to +# run, so a typo (`STAGING_URL=https://veza.fr` +# on a sandbox-targeted command) can't accidentally +# charge a real card. +DRY_RUN=${DRY_RUN:-0} +CONFIRM_PRODUCTION=${CONFIRM_PRODUCTION:-0} SESSION_DATE="$(date +%Y%m%d-%H%M)" SESSION_LOG="${REPO_ROOT}/docs/PAYMENT_E2E_LIVE_REPORT.md.session-${SESSION_DATE}.log" @@ -64,6 +75,43 @@ require jq [ "$OPERATOR_EMAIL" = "?" ] && fail "OPERATOR_EMAIL env var required" 3 [ "$OPERATOR_PASSWORD" = "?" ] && fail "OPERATOR_PASSWORD env var required" 3 +# Heuristic: any URL that doesn't include the substring "staging" is +# treated as production. Operators on a non-veza-domain (custom env) +# can still run the script; they just have to pass CONFIRM_PRODUCTION=1. +TARGET_LOOKS_LIKE_PROD=0 +if [[ ! "$STAGING_URL" =~ staging ]] && [[ ! "$STAGING_URL" =~ localhost ]] && [[ ! "$STAGING_URL" =~ 127\.0\.0\.1 ]]; then + TARGET_LOOKS_LIKE_PROD=1 +fi + +if [ "$TARGET_LOOKS_LIKE_PROD" = "1" ] && [ "$CONFIRM_PRODUCTION" != "1" ]; then + cat >&2 </dev/null) ORDER_ID=$(echo "$order_resp" | jq -r '.data.order.id // .data.id // .id // ""')