Réorganise la documentation du projet selon les principes du Domain-Driven Design (DDD) pour améliorer la cohésion, la maintenabilité et l'alignement avec l'architecture modulaire du backend. **Structure cible:** ``` docs/domains/ ├── README.md (Context Map) ├── _shared/ (Core Domain) ├── recommendation/ (Supporting Subdomain) ├── content/ (Supporting Subdomain) ├── moderation/ (Supporting Subdomain) ├── advertising/ (Generic Subdomain) ├── premium/ (Generic Subdomain) └── monetization/ (Generic Subdomain) ``` **Changements effectués:** Phase 1: Création de l'arborescence des 7 bounded contexts Phase 2: Déplacement des règles métier (01-19) vers domains/*/rules/ Phase 3: Déplacement des diagrammes d'entités vers domains/*/entities/ Phase 4: Déplacement des diagrammes flux/états/séquences vers domains/*/ Phase 5: Création des README.md pour chaque domaine Phase 6: Déplacement des features Gherkin vers domains/*/features/ Phase 7: Création du Context Map (domains/README.md) Phase 8: Mise à jour de mkdocs.yml pour la nouvelle navigation Phase 9: Correction automatique des liens internes (script fix-markdown-links.sh) Phase 10: Nettoyage de l'ancienne structure (regles-metier/, diagrammes/, features/) **Configuration des tests:** - Makefile: godog run docs/domains/*/features/ - scripts/generate-bdd-docs.py: features_dir → docs/domains **Avantages:** ✅ Cohésion forte: toute la doc d'un domaine au même endroit ✅ Couplage faible: domaines indépendants, dépendances explicites ✅ Navigabilité améliorée: README par domaine = entrée claire ✅ Alignement code/docs: miroir de backend/internal/ ✅ Onboarding facilité: exploration domaine par domaine ✅ Tests BDD intégrés: features au plus près des règles métier Voir docs/REFACTOR-DDD.md pour le plan complet.
85 lines
3.7 KiB
Gherkin
85 lines
3.7 KiB
Gherkin
# language: fr
|
|
Fonctionnalité: Connexion utilisateur
|
|
En tant qu'utilisateur existant
|
|
Je veux me connecter à mon compte
|
|
Afin d'accéder à mes contenus et paramètres
|
|
|
|
Contexte:
|
|
Étant donné que l'API RoadWave est disponible
|
|
Et qu'un utilisateur existe avec:
|
|
| email | mot_de_passe |
|
|
| user@test.fr | Password123 |
|
|
|
|
Scénario: Connexion réussie avec identifiants valides
|
|
Quand je me connecte avec:
|
|
| email | mot_de_passe |
|
|
| user@test.fr | Password123 |
|
|
Alors je suis connecté avec succès
|
|
Et je reçois un access token valide pour 15 minutes
|
|
Et je reçois un refresh token valide pour 30 jours
|
|
|
|
Scénario: Connexion échouée avec email inexistant
|
|
Quand je me connecte avec l'email "inexistant@test.fr"
|
|
Alors la connexion échoue
|
|
Et je vois le message "Email ou mot de passe incorrect"
|
|
|
|
Scénario: Connexion échouée avec mot de passe incorrect
|
|
Quand je me connecte avec:
|
|
| email | mot_de_passe |
|
|
| user@test.fr | MauvaisPass1 |
|
|
Alors la connexion échoue
|
|
Et je vois le message "Email ou mot de passe incorrect"
|
|
|
|
Scénario: Blocage après 5 tentatives échouées
|
|
Étant donné que j'ai échoué 4 tentatives de connexion
|
|
Quand j'échoue une 5ème tentative de connexion
|
|
Alors mon compte est temporairement bloqué
|
|
Et je vois le message "Compte bloqué pour 15 minutes après 5 tentatives échouées"
|
|
Et je reçois un email de notification de blocage
|
|
|
|
Scénario: Tentative de connexion pendant le blocage
|
|
Étant donné que mon compte est bloqué suite à 5 tentatives échouées
|
|
Et que seulement 5 minutes se sont écoulées
|
|
Quand j'essaie de me connecter avec les bons identifiants
|
|
Alors la connexion échoue
|
|
Et je vois le message "Compte bloqué. Réessayez dans 10 minutes"
|
|
|
|
Scénario: Déblocage automatique après 15 minutes
|
|
Étant donné que mon compte est bloqué suite à 5 tentatives échouées
|
|
Et que 15 minutes se sont écoulées
|
|
Quand je me connecte avec les bons identifiants
|
|
Alors je suis connecté avec succès
|
|
Et le compteur de tentatives est réinitialisé
|
|
|
|
Scénario: Reset du compteur après connexion réussie
|
|
Étant donné que j'ai échoué 3 tentatives de connexion
|
|
Quand je me connecte avec les bons identifiants
|
|
Alors je suis connecté avec succès
|
|
Et le compteur de tentatives est remis à 0
|
|
|
|
Scénario: Reset automatique du compteur après 15 minutes sans blocage
|
|
Étant donné que j'ai échoué 3 tentatives de connexion
|
|
Et que 15 minutes se sont écoulées sans nouvelle tentative
|
|
Quand je consulte mon compteur de tentatives
|
|
Alors le compteur est réinitialisé à 0
|
|
|
|
Scénario: Déblocage via lien "Mot de passe oublié"
|
|
Étant donné que mon compte est bloqué suite à 5 tentatives échouées
|
|
Quand j'utilise la fonction "Mot de passe oublié"
|
|
Et que je réinitialise mon mot de passe
|
|
Alors le blocage est levé immédiatement
|
|
Et je peux me connecter avec le nouveau mot de passe
|
|
|
|
Scénario: Email de notification lors d'un blocage
|
|
Étant donné que j'ai échoué 5 tentatives de connexion
|
|
Alors je reçois un email avec:
|
|
| sujet | Tentatives de connexion suspectes détectées |
|
|
| contenu_contient | Votre compte a été temporairement bloqué |
|
|
| lien_mot_de_passe | présent |
|
|
|
|
Scénario: Connexion multi-device simultanée autorisée
|
|
Étant donné que je suis connecté sur un appareil iOS
|
|
Quand je me connecte également sur un appareil Android
|
|
Alors les deux sessions sont actives simultanément
|
|
Et je peux utiliser l'application sur les deux appareils
|