Rimuove link al portale Stripe in area cliente, aggiunge flusso admin per PDF fattura e email, blocca checkout senza dati di fatturazione, allinea prezzi a €4,90/€39,90 e €9,90/€69,90, locale italiano e documentazione deploy. Co-authored-by: Cursor <cursoragent@cursor.com>
62 lines
2.5 KiB
Bash
Executable File
62 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Smoke test pagamenti: pagina billing + redirect Checkout (+ opzionale profilo completo).
|
|
set -euo pipefail
|
|
|
|
BASE="${BASE_URL:-https://www.matchlivetv.it}"
|
|
EMAIL="${TEST_EMAIL:-coach@matchlivetv.test}"
|
|
PASSWORD="${TEST_PASSWORD:-password123}"
|
|
PLAN="${TEST_PLAN:-premium_light}"
|
|
COOKIES=$(mktemp)
|
|
trap 'rm -f "$COOKIES"' EXIT
|
|
|
|
pass=0
|
|
fail=0
|
|
ok() { echo "OK $1"; pass=$((pass+1)); }
|
|
ko() { echo "FAIL $1"; fail=$((fail+1)); }
|
|
|
|
echo "== Stripe E2E smoke @ $BASE =="
|
|
|
|
curl -sf "$BASE/up" >/dev/null && ok "health /up" || ko "health /up"
|
|
|
|
curl -sf -c "$COOKIES" "$BASE/login" -o /tmp/mltv_login.html
|
|
T=$(grep -oP 'name="authenticity_token" value="\K[^"]+' /tmp/mltv_login.html | head -1 || true)
|
|
if [[ -z "$T" ]]; then
|
|
ko "login page (token CSRF)"
|
|
else
|
|
CODE=$(curl -s -o /dev/null -w "%{http_code}" -c "$COOKIES" -b "$COOKIES" -X POST "$BASE/login" \
|
|
-d "authenticity_token=$T" -d "email=$EMAIL" -d "password=$PASSWORD")
|
|
[[ "$CODE" == "302" || "$CODE" == "303" ]] && ok "login $EMAIL" || ko "login ($CODE)"
|
|
fi
|
|
|
|
CLUB_LINK=$(curl -sf -b "$COOKIES" "$BASE/" | grep -oP 'href="/clubs/[^"]+/billing"' | head -1 || true)
|
|
if [[ -z "$CLUB_LINK" ]]; then
|
|
# prova da pagina clubs
|
|
CLUB_ID=$(curl -sf -b "$COOKIES" "$BASE/" | grep -oP '/clubs/[0-9a-f-]{36}' | head -1 | sed 's|/clubs/||' || true)
|
|
CLUB_LINK="/clubs/${CLUB_ID}/billing"
|
|
fi
|
|
|
|
if [[ -z "${CLUB_LINK:-}" || "$CLUB_LINK" == "/clubs//billing" ]]; then
|
|
ko "trova link billing club"
|
|
else
|
|
ok "billing path $CLUB_LINK"
|
|
BODY=$(curl -sf -b "$COOKIES" "$BASE$CLUB_LINK")
|
|
echo "$BODY" | grep -qi "stripe non configurato" && ko "Stripe abilitato in UI" || ok "Stripe abilitato in UI"
|
|
echo "$BODY" | grep -q "Attiva Premium" && ok "pulsante Attiva Premium" || ko "pulsante Attiva Premium"
|
|
echo "$BODY" | grep -q "Dati di fatturazione" && ok "link profilo fatturazione" || ko "link profilo fatturazione"
|
|
|
|
CHECKOUT_URL="${CLUB_LINK%/billing}/checkout?plan=${PLAN}"
|
|
HEADERS=$(curl -s -D - -o /dev/null -b "$COOKIES" "$BASE$CHECKOUT_URL" | tr -d '\r')
|
|
if echo "$HEADERS" | grep -qi "location:.*checkout\.stripe\.com"; then
|
|
ok "redirect Stripe Checkout"
|
|
elif echo "$HEADERS" | grep -qi "location:.*billing/profile"; then
|
|
ok "redirect profilo fatturazione (dati incompleti — completa prima del pagamento)"
|
|
else
|
|
ko "redirect checkout (atteso checkout.stripe.com o billing/profile)"
|
|
echo "$HEADERS" | grep -i "^location:" | head -3 || true
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "Risultato: $pass OK, $fail FAIL"
|
|
[[ "$fail" -eq 0 ]]
|