295 lines
7.4 KiB
Markdown
295 lines
7.4 KiB
Markdown
# Tests d'Intégration Finance Workflow - Guide Unique
|
|
|
|
**Date:** 2026-03-14
|
|
**Objectif:** Tester l'intégration mobile-backend avec les VRAIS utilisateurs Keycloak existants
|
|
|
|
---
|
|
|
|
## ✅ État Actuel Keycloak (Vérifié)
|
|
|
|
### Realm: `unionflow` ✓ Existe
|
|
### Client: `unionflow-mobile` ✓ Existe
|
|
### Utilisateurs: **11 utilisateurs** déjà créés
|
|
|
|
---
|
|
|
|
## 👥 Utilisateurs de Test Disponibles
|
|
|
|
### Pour les Tests Finance Workflow, utiliser:
|
|
|
|
#### 1. SUPER_ADMIN (tous les droits)
|
|
- **Email:** `superadmin@unionflow.test`
|
|
- **Mot de passe:** *(demander à l'équipe ou réinitialiser via Keycloak Admin)*
|
|
- **Rôles:** SUPER_ADMIN
|
|
- **Peut:** Approuver LEVEL1/2/3, créer budgets, tout consulter
|
|
|
|
#### 2. ADMIN_ORGANISATION (approbateur)
|
|
- **Email:** `admin.meska@unionflow.test` OU `admin.mukefi@unionflow.test`
|
|
- **Mot de passe:** *(idem)*
|
|
- **Rôles:** ADMIN_ORGANISATION, USER
|
|
- **Peut:** Approuver LEVEL1/2, créer budgets, consulter stats
|
|
|
|
#### 3. MEMBRE_ACTIF (demandeur)
|
|
- **Email:** `membre.meska@unionflow.test`
|
|
- **Mot de passe:** *(idem)*
|
|
- **Rôles:** MEMBRE, MEMBRE_ACTIF, USER
|
|
- **Peut:** Créer demandes de cotisation, consulter ses propres demandes
|
|
|
|
---
|
|
|
|
## 🚀 Démarrage Rapide
|
|
|
|
### 1. Services Backend (3 commandes)
|
|
|
|
```bash
|
|
# Terminal 1: Quarkus
|
|
cd unionflow/unionflow-server-impl-quarkus
|
|
mvn compile quarkus:dev -D"quarkus.http.port=8085"
|
|
|
|
# Terminal 2: Keycloak (si pas démarré)
|
|
cd unionflow
|
|
docker-compose up -d keycloak
|
|
|
|
# Terminal 3: PostgreSQL (si pas démarré)
|
|
docker-compose up -d postgres
|
|
```
|
|
|
|
**Vérifications:**
|
|
- ✓ Quarkus: http://localhost:8085/q/health
|
|
- ✓ Keycloak: http://localhost:8180
|
|
- ✓ PostgreSQL: port 5432
|
|
|
|
---
|
|
|
|
### 2. App Mobile Flutter
|
|
|
|
```bash
|
|
# Terminal 4: App mobile
|
|
cd unionflow/unionflow-mobile-apps
|
|
|
|
# Android
|
|
flutter run --dart-define=ENV=dev
|
|
|
|
# iOS
|
|
flutter run --dart-define=ENV=dev -d ios
|
|
|
|
# Chrome (debug rapide)
|
|
flutter run -d chrome --dart-define=ENV=dev
|
|
```
|
|
|
|
**Note:** L'URL backend (`http://localhost:8085` ou `http://10.0.2.2:8085`) est configurée automatiquement via `AppConfig` en mode dev.
|
|
|
|
---
|
|
|
|
## 🧪 Scénario de Test (15 minutes)
|
|
|
|
### Étape 1: Login Membre
|
|
|
|
1. **Dans l'app mobile:**
|
|
- Login: `membre.meska@unionflow.test`
|
|
- Password: *(voir avec l'équipe)*
|
|
|
|
2. **Créer une cotisation:**
|
|
- Menu → "Contributions" ou "Mes Cotisations"
|
|
- "+" → Nouvelle contribution
|
|
- Montant: 50,000 XOF
|
|
- Période: Mars 2026
|
|
- Soumettre
|
|
|
|
3. **Vérifier:**
|
|
- ✅ Message "Demande créée, en attente d'approbation"
|
|
- ✅ Menu "Finance Workflow" → Demande visible avec statut PENDING
|
|
|
|
---
|
|
|
|
### Étape 2: Login Admin → Approuver
|
|
|
|
4. **Se déconnecter et se reconnecter:**
|
|
- Login: `admin.meska@unionflow.test`
|
|
|
|
5. **Consulter les approbations:**
|
|
- Menu → "Finance Workflow" → "Approbations en attente"
|
|
- ✅ Badge avec nombre d'approbations
|
|
- ✅ La cotisation de membre.meska apparaît
|
|
|
|
6. **Approuver la transaction:**
|
|
- Cliquer sur la carte
|
|
- Bouton "Approuver"
|
|
- Commentaire (optionnel): "Cotisation conforme"
|
|
- Confirmer
|
|
|
|
7. **Vérifier:**
|
|
- ✅ Toast "Transaction approuvée avec succès"
|
|
- ✅ Statut = VALIDATED (car LEVEL1 = 1 approbation suffit)
|
|
- ✅ Badge vert "Approuvé"
|
|
|
|
---
|
|
|
|
### Étape 3: Créer un Budget (Admin)
|
|
|
|
8. **Toujours connecté en tant qu'admin:**
|
|
- Menu → "Finance Workflow" → "Budgets"
|
|
- "+" → Nouveau budget
|
|
|
|
9. **Remplir le formulaire:**
|
|
```
|
|
Nom: Budget Test Mobile Mars 2026
|
|
Période: Mensuel
|
|
Année: 2026
|
|
Mois: 3
|
|
Devise: XOF
|
|
```
|
|
|
|
10. **Ajouter 3 lignes budgétaires:**
|
|
- Cotisations: 2,000,000 XOF
|
|
- Épargne: 1,000,000 XOF
|
|
- Opérationnel: 500,000 XOF
|
|
|
|
11. **Valider et vérifier:**
|
|
- ✅ Budget créé (Total = 3,500,000 XOF)
|
|
- ✅ Détail visible avec les 3 lignes
|
|
- ✅ Tracking affiche 0% réalisé
|
|
|
|
---
|
|
|
|
## ✅ Checklist de Validation
|
|
|
|
### Authentification & Sécurité
|
|
- [ ] Login membre réussi avec JWT
|
|
- [ ] Login admin réussi avec JWT
|
|
- [ ] Endpoints protégés (401 sans token)
|
|
- [ ] Rôles respectés (membre ne peut pas approuver)
|
|
|
|
### Workflow Approbations
|
|
- [ ] Création demande via module Contributions
|
|
- [ ] Demande apparaît dans Finance Workflow (PENDING)
|
|
- [ ] Bouton "Approuver" visible uniquement pour admin
|
|
- [ ] Approbation fonctionne (POST → 200 OK)
|
|
- [ ] Statut mis à jour (VALIDATED)
|
|
- [ ] Toast de succès affiché
|
|
- [ ] Compteur approbations mis à jour
|
|
|
|
### Gestion Budgets
|
|
- [ ] Création budget via formulaire
|
|
- [ ] 3 lignes budgétaires ajoutées
|
|
- [ ] Total calculé automatiquement (3.5M)
|
|
- [ ] Détail budget affiché
|
|
- [ ] Tracking budgétaire accessible (0% initialement)
|
|
|
|
### Performance & UX
|
|
- [ ] Chargement < 2 secondes
|
|
- [ ] Aucun lag / freeze
|
|
- [ ] Animations fluides
|
|
- [ ] Pull to refresh fonctionne
|
|
|
|
---
|
|
|
|
## 📊 Logs à Vérifier
|
|
|
|
### Backend Quarkus (Terminal 1)
|
|
```
|
|
INFO ApprovalService - Approbation de la transaction ...
|
|
INFO BudgetService - Création d'un budget ...
|
|
```
|
|
|
|
### Mobile Flutter (Console)
|
|
```
|
|
[INFO] Loading approvals for organization ...
|
|
[SUCCESS] Transaction approved successfully
|
|
[INFO] Creating budget: Budget Test Mobile Mars 2026
|
|
```
|
|
|
|
---
|
|
|
|
## 🆘 Troubleshooting
|
|
|
|
**Problème:** "Mot de passe inconnu pour les utilisateurs de test"
|
|
|
|
→ **Solution:** Réinitialiser via Keycloak Admin
|
|
```
|
|
1. http://localhost:8180/admin/master/console
|
|
2. Login: admin / admin
|
|
3. Realm: unionflow → Users
|
|
4. Sélectionner utilisateur → Onglet Credentials
|
|
5. Set password (Temporary: OFF)
|
|
```
|
|
|
|
**Problème:** "App ne se connecte pas au backend"
|
|
|
|
→ **Solution:** Vérifier URL backend dans AppConfig
|
|
- Android émulateur: `http://10.0.2.2:8085`
|
|
- iOS/Chrome: `http://localhost:8085`
|
|
|
|
**Problème:** "Erreur 401 Unauthorized"
|
|
|
|
→ **Solution:** Vérifier que Keycloak tourne et token JWT valide
|
|
|
|
**Problème:** "Bouton Approuver invisible/grisé"
|
|
|
|
→ **Solution:** Se connecter avec `admin.meska@unionflow.test` ou `superadmin@unionflow.test`
|
|
|
|
---
|
|
|
|
## 📝 Rapport de Test
|
|
|
|
**Après les tests, compléter:**
|
|
|
|
```markdown
|
|
### Résultats
|
|
|
|
Date: ___________
|
|
Testeur: ___________
|
|
|
|
#### Scénario 1: Workflow Approbation
|
|
- Création demande: ☐ ✅ ☐ ❌
|
|
- Approbation réussie: ☐ ✅ ☐ ❌
|
|
- Statut mis à jour: ☐ ✅ ☐ ❌
|
|
|
|
#### Scénario 2: Gestion Budgets
|
|
- Création budget: ☐ ✅ ☐ ❌
|
|
- Lignes ajoutées: ☐ ✅ ☐ ❌
|
|
- Tracking affiché: ☐ ✅ ☐ ❌
|
|
|
|
#### Problèmes Identifiés
|
|
1. [Description]
|
|
- Gravité: Bloquant / Majeur / Mineur
|
|
- Étapes: ...
|
|
|
|
#### Conclusion
|
|
- ☐ ✅ Intégration VALIDÉE
|
|
- ☐ ⚠️ Problèmes mineurs
|
|
- ☐ ❌ Problèmes bloquants
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Fichiers de Documentation Consolidés
|
|
|
|
Après nettoyage, **4 fichiers** restants (DRY) :
|
|
|
|
1. **TESTS_INTEGRATION_FINANCE_WORKFLOW.md** (CE FICHIER)
|
|
- Guide unique de test intégration avec vrais utilisateurs
|
|
|
|
2. **FINANCE_WORKFLOW_BACKEND_COMPLETE.md**
|
|
- Documentation technique backend (architecture, code)
|
|
|
|
3. **FINANCE_WORKFLOW_TEST_CHECKLIST.md**
|
|
- Checklist détaillée P0 backend (migration, démarrage)
|
|
|
|
4. **FINANCE_WORKFLOW_TEST_REPORT.md**
|
|
- Rapport de tests backend (endpoints REST validés)
|
|
|
|
**Obsolètes (supprimés):**
|
|
- FINANCE_WORKFLOW_MANUAL_TEST_GUIDE.md (redondant)
|
|
- FINANCE_WORKFLOW_INTEGRATION_MOBILE.md (redondant)
|
|
- START_INTEGRATION_TEST.md (redondant)
|
|
- FINANCE_WORKFLOW_SESSION_SUMMARY.md (obsolète)
|
|
- FINANCE_WORKFLOW_FINAL_STATUS.md (obsolète)
|
|
- START_QUARKUS_DEV.md (redondant)
|
|
|
|
---
|
|
|
|
**Prêt à tester ! 🚀**
|
|
|
|
Utilisez les VRAIS utilisateurs Keycloak existants - pas besoin d'en créer de nouveaux.
|