Files
MatchLiveTv/scripts/test_stripe_e2e.sh
Emiliano Frascaro a5e781729c Billing: fatture manuali, profilo obbligatorio e piani Stripe mensile/annuale.
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>
2026-06-02 17:10:12 +02:00

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 ]]