Files
roadwave/features/api/authentication/connexion.feature
jpgiannetti 37c62206ad feat(bdd): réorganiser features en catégories api/ui/e2e et créer ADR-024
Résolution des incohérences #10, #11, et #12 de l'analyse d'architecture.

## Phase 1 : Réorganisation Features BDD (Point #10 - RÉSOLU)

- Créer structure features/{api,ui,e2e}
- Déplacer 83 features en 3 catégories via git mv (historique préservé)
  - features/api/ : 53 features (tests API backend)
  - features/ui/ : 22 features (tests UI mobile)
  - features/e2e/ : 8 features (tests end-to-end)

Domaines déplacés :
- API : authentication, recommendation, rgpd-compliance, content-creation,
  moderation, monetisation, premium, radio-live, publicites
- UI : audio-guides, navigation, interest-gauges, mode-offline,
  partage, profil, recherche
- E2E : abonnements, error-handling

## Phase 2 : Mise à jour Documentation

### ADR-007 - Tests BDD
- Ajouter section "Convention de Catégorisation des Features"
- Documenter règles api/ui/e2e avec exemples concrets
- Spécifier step definitions (backend Go, mobile Dart)

### ADR-024 - Stratégie CI/CD Monorepo (NOUVEAU)
- Créer ADR dédié pour stratégie CI/CD avec path filters
- Architecture workflows séparés (backend.yml, mobile.yml, shared.yml)
- Configuration path filters détaillée avec exemples YAML
- Matrice de déclenchement et optimisations (~70% gain temps CI)
- Plan d'implémentation (~2h, reporté jusqu'au développement)

### ADR-016 - Organisation Monorepo
- Simplifier en retirant section CI/CD détaillée
- Ajouter référence vers ADR-024 pour stratégie CI/CD

### INCONSISTENCIES-ANALYSIS.md
- Point #10 (Tests BDD synchronisés) :  RÉSOLU
  - Catégorisation features implémentée
  - ADR-007 mis à jour avec convention complète
- Point #11 (70/30 Split paiements) :  ANNULÉ (faux problème)
  - ADR-009 et Règle 18 parfaitement cohérents
  - Documentation exhaustive existante (formule, SQL, comparaisons)
- Point #12 (Monorepo path filters) : ⏸️ DOCUMENTÉ
  - Architecture CI/CD complète dans ADR-024
  - Implémentation reportée (projet en phase documentation)
- Métriques mises à jour :
  - MODERATE : 6/9 traités (4 résolus + 1 annulé + 1 documenté)
  - ADR à jour : 100% (19/19 avec ADR-024)

## Phase 3 : Validation

- Structure features validée (api/ui/e2e, aucun répertoire restant)
- Historique Git préservé (git mv, renommages détectés)
- 83 features total (API: 53, UI: 22, E2E: 8)

Closes: Point #10 (résolu), Point #11 (annulé), Point #12 (documenté)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-01 11:31:41 +01:00

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