All checks were successful
Build & Deploy API / build-and-deploy (push) Successful in 1m18s
Ajoute 16 tests E2E qui hit les vraies routes `/api/v1/billing/*` à
travers le middleware auth, les validators et la persistance DB.
Complémentaire des 60 tests unitaires sur les services.
Suites couvertes :
- POST /start-trial : 200 happy path, customer Stripe réutilisé,
409 trial déjà consommé (2 garde-fous), 401 sans Bearer
- GET /subscription : expose inTrial + trialEndsAt, garde-fou
trial_ends_at passé
- POST /webhook : checkout.completed, subscription.updated trialing→active,
trial_will_end → enqueue recap (avec spy), payment_failed → past_due,
subscription.deleted → free + trial_ends_at conservé
- Idempotence : 2× le même event = même état final
- Event type inconnu → 200 silencieux (pas de DB write)
- 400 si stripe-signature absent / signature invalide
Helpers de test :
- installFullStripeMock(opts) → mock complet : customers, prices,
checkout, billingPortal, subscriptions, webhooks. Avec
passThroughWebhook qui bypass la vérif signature pour tester
le routing applicatif sans signer manuellement chaque payload.
env.test : STRIPE_SECRET_KEY + STRIPE_WEBHOOK_SECRET dummy +
WEB_URL/LANDING_URL.
Documentation : docs/tech/stripe-trial-e2e-playbook.md — playbook
manuel pour valider en mode Stripe test (5 scénarios : happy path
3DS, carte refusée au prélèvement, annulation Customer Portal,
re-trial bloqué, fallback Free). Utilise Stripe Test Clocks pour
fast-forward sans attendre 14 jours réels.
Total après ce commit : 76 tests sur la chaîne billing (60 unit + 16 E2E).
Les cas Stripe-side (3DS UI réel, prélèvement effectif J+14) restent
à valider manuellement via le playbook avant le go-live.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
22 lines
874 B
Plaintext
22 lines
874 B
Plaintext
NODE_ENV=test
|
|
SESSION_DRIVER=memory
|
|
# Désactive les vraies connexions Redis/MinIO/SMTP pendant les tests.
|
|
# Les schedulers détectent NODE_ENV=test et skip BullMQ.add.
|
|
DRIVE_DISK=fs
|
|
MAIL_DRIVER=smtp
|
|
SMTP_HOST=localhost
|
|
SMTP_PORT=1025
|
|
OCR_PROVIDER=mock
|
|
# Utilise la même DB que dev avec global transactions par test (rollback).
|
|
# Si tu veux une DB séparée : crée `rubis_test` dans Postgres et override
|
|
# PG_DB_NAME=rubis_test ici.
|
|
|
|
# Stripe — clés factices. Le SDK est mocké au niveau singleton via
|
|
# __setStripeForTests() (cf. tests/helpers/stripe_mock.ts), donc ces
|
|
# valeurs ne touchent jamais Stripe. STRIPE_WEBHOOK_SECRET sert aux
|
|
# tests E2E qui signent eux-mêmes les payloads via crypto HMAC.
|
|
STRIPE_SECRET_KEY=sk_test_dummy_for_unit_tests
|
|
STRIPE_WEBHOOK_SECRET=whsec_test_dummy_for_unit_tests
|
|
WEB_URL=http://localhost:5173
|
|
LANDING_URL=http://localhost:5174
|