Aller au contenu

Comment marche l'environnement de test

Cette page explique comment le test est construit, pourquoi il est totalement séparé de la production, et comment lui donner une copie des vraies données.

Ce qui rend le test 100 % sûr

Aspect En test Pourquoi c'est sûr
Conteneurs transaction_test_* noms différents de la prod (transaction_*)
Base de données transaction_test_db séparée de la base de prod
Lecture des emails bancaires désactivée le test ne traite jamais de vrais emails
Services externes (recharge, souscription) version test (apigateway.boaz-study.tech) n'agit jamais sur un vrai portefeuille client
Fichiers stockés (S3) dossier séparé ...-DEV-TEST ne touche pas aux fichiers de prod

Résultat : quoi qu'on fasse en test, la production n'est jamais impactée.

Les fichiers qui décrivent le test (dans le projet)

Fichier Rôle
docker-compose.test.yml la recette de la stack de test
.env.test (sur le serveur, non versionné) les réglages/mots de passe du test
.github/workflows/deploy-test.yml l'ordre « quand on pousse sur dev, déploie le test »
scripts/deploy/deploy_test.sh les étapes exactes du déploiement

Le fichier de réglages .env.test est rangé sur le serveur dans : /home/ubuntu/Projet_boaz_bank_transaction_fullstack/secrets/.env.test

Donner au test une copie des vraies données (optionnel)

Utile pour tester avec des données réalistes. Sans danger : on lit la prod, on écrit dans le test.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1) Copier la base de prod dans un fichier
docker exec transaction_db pg_dump -U postgres -d transaction_db --no-owner > copie_prod.sql

# 2) Charger cette copie dans la base de test (remet le test a neuf)
docker exec transaction_test_db psql -U postgres -d postgres \
  -c "DROP DATABASE IF EXISTS transaction_test_db WITH (FORCE);" \
  -c "CREATE DATABASE transaction_test_db;"
docker exec -i transaction_test_db psql -U postgres -d transaction_test_db < copie_prod.sql

# 3) Redemarrer l'API de test
docker restart transaction_test_backend

Vérifier

1
docker exec transaction_test_db psql -U postgres -d transaction_test_db -c "select count(*) from transactions;"
→ le nombre doit correspondre à celui de la prod.

Voir la base de test avec pgAdmin