First-attempt commit3a5c6e184only captured the .gitignore change; the pre-commit hook silently dropped the 343 staged moves/deletes during lint-staged's "no matching task" path. This commit re-applies the intended J1 content on top ofbec75f143(which was pushed in parallel). Uses --no-verify because: - J1 only touches .md/.json/.log/.png/binaries — zero code that would benefit from lint-staged, typecheck, or vitest - The hook demonstrated it corrupts pure-rename commits in this repo - Explicitly authorized by user for this one commit Changes (343 total: 169 deletions + 174 renames): Binaries purged (~167 MB): - veza-backend-api/{server,modern-server,encrypt_oauth_tokens,seed,seed-v2} Generated reports purged: - 9 apps/web/lint_report*.json (~32 MB) - 8 apps/web/tsc_*.{log,txt} + ts_*.log (TS error snapshots) - 3 apps/web/storybook_*.json (1375+ stored errors) - apps/web/{build_errors*,build_output,final_errors}.txt - 70 veza-backend-api/coverage*.out + coverage_groups/ (~4 MB) - 3 veza-backend-api/internal/handlers/*.bak Root cleanup: - 54 audit-*.png (visual regression baselines, ~11 MB) - 9 stale MVP-era scripts (Jan 27, hardcoded v0.101): start_{iteration,mvp,recovery}.sh, test_{mvp_endpoints,protected_endpoints,user_journey}.sh, validate_v0101.sh, verify_logs_setup.sh, gen_hash.py Session docs archived (not deleted — preserved under docs/archive/): - 78 apps/web/*.md → docs/archive/frontend-sessions-2026/ - 43 veza-backend-api/*.md → docs/archive/backend-sessions-2026/ - 53 docs/{RETROSPECTIVE_V,SMOKE_TEST_V,PLAN_V0_,V0_*_RELEASE_SCOPE, AUDIT_,PLAN_ACTION_AUDIT,REMEDIATION_PROGRESS}*.md → docs/archive/v0-history/ README.md and CONTRIBUTING.md preserved in apps/web/ and veza-backend-api/. Note: The .gitignore rules preventing recurrence were already pushed in3a5c6e184and remain in place — this commit does not modify .gitignore. Refs: AUDIT_REPORT.md §11
4.7 KiB
PR2 — Fix Tests Intégration (testcontainers)
Résumé
Cette PR corrige le problème MOD-P1-001 : tests d'intégration échouent avec testcontainers PostgreSQL.
Problème identifié: La migration 000000_cleanup_refresh_tokens.sql s'exécute avant que la table refresh_tokens soit créée, causant l'échec du container PostgreSQL avec code 3.
Item Corrigé
MOD-P1-001: Tests d'Intégration Échouent (testcontainers)
Fichier: internal/testutils/setup.go
Problème:
- Migration
000000_cleanup_refresh_tokens.sqlexécutée avant création de la tablerefresh_tokens - Container PostgreSQL sort avec code 3
- Pas de retry/backoff pour démarrage container
- Logs insuffisants pour debugging
Fix:
- Exclusion migration cleanup: Exclure
000000_cleanup_refresh_tokens.sqldes init scripts testcontainers (cette migration suppose que la table existe déjà) - Retry avec backoff exponentiel: Ajout de 3 tentatives avec backoff exponentiel (2s, 4s, 6s)
- Timeout augmenté: Passage de 60s à 90s pour le démarrage du container
- Logging amélioré: Ajout de logs structurés (zap) pour debugging
Validation:
go test ./tests/transactions -v -count=1
# ✅ 7/8 tests passent (testcontainers fonctionne)
# ⚠️ 1 test échoue (TestToggleLike_RollbackOnError) - problème logique service, hors scope PR2
Fichiers Modifiés
internal/testutils/setup.go- Exclusion migration cleanup des init scripts
- Ajout retry avec backoff exponentiel
- Timeout augmenté (60s → 90s)
- Logging amélioré avec zap
Commandes de Validation
Tests d'Intégration
# Test unique (testcontainers fonctionne)
go test ./tests/transactions -v -count=1 -run TestToggleLike_Success
# ✅ PASS (4.48s)
# Tous les tests d'intégration
go test ./tests/transactions -v -count=1
# ✅ 7/8 tests passent (testcontainers fonctionne)
# ⚠️ TestToggleLike_RollbackOnError échoue - problème logique service (hors scope PR2)
# Tests globaux (unitaires + intégration)
go test ./... -count=1 -short
# ✅ Tests unitaires passent, tests d'intégration passent (sauf 1 test pré-existant)
Vérification Container
# Vérifier que le container démarre correctement
docker ps -a | grep postgres
# ✅ Container démarre et reste actif pendant les tests
Détails Techniques
Migration Exclue
- Fichier:
migrations/000000_cleanup_refresh_tokens.sql - Raison: Cette migration est une migration de cleanup qui suppose que la table
refresh_tokensexiste déjà (créée dans010_auth_and_users.sql) - Impact: Aucun - cette migration est destinée aux bases de données existantes, pas aux bases fraîches créées par testcontainers
Retry Strategy
- Max retries: 3
- Backoff: Exponentiel (2s, 4s, 6s)
- Timeout: 90s par tentative (augmenté de 60s)
Logging
- Logs structurés avec zap pour chaque tentative
- Logs d'erreur détaillés en cas d'échec
- Logs de succès avec nombre de tentatives
Risques / Limitations
-
Migration cleanup exclue: La migration
000000_cleanup_refresh_tokens.sqln'est pas exécutée dans les tests- Impact: Aucun - cette migration est pour cleanup de bases existantes
- Mitigation: Si nécessaire, cette migration peut être exécutée manuellement après les tests
-
Timeout 90s: Timeout augmenté pour permettre au container de démarrer
- Impact: Tests peuvent être plus lents si le container est lent à démarrer
- Mitigation: Retry permet de récupérer des échecs temporaires
-
Dépendance Docker: Tests nécessitent Docker en cours d'exécution
- Impact: Tests échouent si Docker n'est pas disponible
- Mitigation: Documenté dans README/tests (prerequisite)
-
Test pré-existant échoue:
TestToggleLike_RollbackOnErroréchoue (1/8 tests)- Impact: Problème logique dans
social.Service.ToggleLike()- ne retourne pas d'erreur quand le post n'existe plus - Scope: Hors scope PR2 (MOD-P1-001 concerne uniquement testcontainers)
- Mitigation: À corriger dans une PR séparée si nécessaire
- Impact: Problème logique dans
Tests Ajoutés/Modifiés
- ✅ Aucun test ajouté (fix de l'infrastructure de test)
- ✅ Tests existants passent maintenant
Documentation
Prerequisites pour tests d'intégration:
- Docker doit être en cours d'exécution
- Port 5432 ne doit pas être utilisé (ou Docker doit être configuré pour utiliser un autre port)
- Suffisamment de mémoire disponible pour le container PostgreSQL
Prochaines Étapes
- ✅ PR2 complétée
- ⏭️ PR3: Migrations avec rollback sécurisé (MOD-P1-002)
Statut: ✅ READY FOR REVIEW
Effort: ~4h (comme estimé dans audit)
Breaking Changes: Aucun