diff --git a/docs/regles-metier/01-authentification-inscription.md b/docs/regles-metier/01-authentification-inscription.md index 0a3d576..14654f8 100644 --- a/docs/regles-metier/01-authentification-inscription.md +++ b/docs/regles-metier/01-authentification-inscription.md @@ -94,9 +94,9 @@ - 🔴 **18+** : contenu adulte (langage explicite, sujets réservés) **Règles de diffusion** : -- Utilisateur 13-15 ans → contenus 🟢 uniquement -- Utilisateur 16-17 ans → contenus 🟢 🟡 -- Utilisateur 18+ → tous contenus +- Utilisateur 13-15 ans → contenus 🟢 🟡 (Tout public + 13+) +- Utilisateur 16-17 ans → contenus 🟢 🟡 🟠 (Tout public + 13+ + 16+) +- Utilisateur 18+ → tous contenus 🟢 🟡 🟠 🔴 **Modération** : - Vérification obligatoire de la classification lors de la validation diff --git a/features/api/authentication/classification-age.feature b/features/api/authentication/classification-age.feature index 28da8a7..d8dda2f 100644 --- a/features/api/authentication/classification-age.feature +++ b/features/api/authentication/classification-age.feature @@ -23,7 +23,7 @@ Fonctionnalité: Classification des contenus par âge Alors la publication échoue Et je vois le message "Vous devez sélectionner une classification d'âge" - Scénario: Utilisateur 13-15 ans voit uniquement du contenu "Tout public" + Scénario: Utilisateur 13-15 ans voit "Tout public" et "13+" Étant donné que je suis un utilisateur de 14 ans Et qu'il existe des contenus avec les classifications suivantes: | classification | nombre | @@ -32,10 +32,10 @@ Fonctionnalité: Classification des contenus par âge | 16+ | 10 | | 18+ | 5 | Quand je demande des recommandations - Alors je vois uniquement les 20 contenus "Tout public" - Et les autres contenus ne sont jamais proposés + Alors je vois 35 contenus (Tout public + 13+) + Et les contenus 16+ et 18+ ne sont jamais proposés - Scénario: Utilisateur 16-17 ans voit "Tout public" et "13+" + Scénario: Utilisateur 16-17 ans voit "Tout public", "13+" et "16+" Étant donné que je suis un utilisateur de 17 ans Et qu'il existe des contenus avec les classifications suivantes: | classification | nombre | @@ -44,8 +44,8 @@ Fonctionnalité: Classification des contenus par âge | 16+ | 10 | | 18+ | 5 | Quand je demande des recommandations - Alors je vois 35 contenus (Tout public + 13+) - Et les contenus 16+ et 18+ ne sont pas proposés + Alors je vois 45 contenus (Tout public + 13+ + 16+) + Et les contenus 18+ ne sont pas proposés Scénario: Utilisateur 18+ voit tous les contenus Étant donné que je suis un utilisateur de 25 ans @@ -54,11 +54,11 @@ Fonctionnalité: Classification des contenus par âge Alors je vois tous les contenus sans restriction Et aucun filtre d'âge n'est appliqué - Scénario: Mode Kids activé automatiquement pour les moins de 13 ans + Scénario: Inscription réussie à 13 ans pile - accès limité à "Tout public" et "13+" Étant donné que je m'inscris avec une date de naissance "2013-01-21" - Alors le mode Kids est activé automatiquement - Et je vois uniquement du contenu "Tout public" - Et des protections supplémentaires sont appliquées + Alors mon compte est créé avec succès + Et je peux voir les contenus "Tout public" et "13+" + Et les contenus 16+ et 18+ ne sont pas accessibles Scénario: Modérateur reclassifie un contenu mal catégorisé Étant donné qu'un contenu est publié avec la classification "Tout public" @@ -93,10 +93,11 @@ Fonctionnalité: Classification des contenus par âge | classification | | Tout public | | 13+ | - Et je ne vois pas les contenus 16+ et 18+ dans les résultats + | 16+ | + Et je ne vois pas les contenus 18+ dans les résultats Scénario: Notification si tentative d'accès à contenu non autorisé - Étant donné que je suis un utilisateur de 14 ans + Étant donné que je suis un utilisateur de 15 ans Et qu'un contenu "16+" est partagé avec moi via un lien direct Quand j'essaie d'accéder au contenu Alors l'accès est refusé diff --git a/features/api/authentication/gestion-compte.feature b/features/api/authentication/gestion-compte.feature new file mode 100644 index 0000000..984dfdf --- /dev/null +++ b/features/api/authentication/gestion-compte.feature @@ -0,0 +1,199 @@ +# language: fr +Fonctionnalité: Gestion de compte utilisateur + En tant qu'utilisateur connecté + Je veux gérer les paramètres de mon compte + Afin de maintenir la sécurité et l'exactitude de mes informations + + Contexte: + Étant donné que l'API RoadWave est disponible + Et que je suis connecté avec: + | email | user@test.fr | + | mot_de_passe | Password123 | + + # ========================================== + # Déconnexion + # ========================================== + + Scénario: Déconnexion volontaire de l'appareil actuel + Quand je clique sur "Se déconnecter" + Alors ma session est invalidée immédiatement + Et mon refresh token est révoqué + Et je suis redirigé vers l'écran de connexion + Et je dois me reconnecter pour accéder à l'application + + Scénario: Déconnexion ne révoque pas les autres appareils + Étant donné que je suis connecté sur mon iPhone et mon iPad + Quand je me déconnecte depuis mon iPhone + Alors la session iPhone est invalidée + Et ma session iPad reste active + Et je peux continuer à utiliser l'application sur iPad + + # ========================================== + # Changement de mot de passe + # ========================================== + + Scénario: Changement de mot de passe avec ancien mot de passe correct + Quand je change mon mot de passe depuis les paramètres avec: + | ancien_mot_de_passe | Password123 | + | nouveau_mot_de_passe | NewPass456 | + | confirmation | NewPass456 | + Alors mon mot de passe est modifié avec succès + Et je reste connecté sur cet appareil + Et tous les autres appareils sont déconnectés + Et je reçois un email de confirmation de changement + Et je vois le message "Mot de passe modifié avec succès" + + Scénario: Changement de mot de passe avec ancien mot de passe incorrect + Quand je change mon mot de passe avec un ancien mot de passe incorrect "WrongPass123" + Alors le changement échoue + Et je vois le message "Ancien mot de passe incorrect" + Et mon mot de passe actuel reste inchangé + + Scénario: Changement de mot de passe avec nouveau mot de passe invalide + Quand je change mon mot de passe avec un nouveau mot de passe "faible" + Alors le changement échoue + Et je vois le message "Le mot de passe doit contenir au moins 8 caractères, 1 majuscule et 1 chiffre" + + Scénario: Changement de mot de passe avec confirmation non correspondante + Quand je change mon mot de passe avec: + | ancien_mot_de_passe | Password123 | + | nouveau_mot_de_passe | NewPass456 | + | confirmation | DiffPass789 | + Alors le changement échoue + Et je vois le message "Les mots de passe ne correspondent pas" + + Scénario: Nouveau mot de passe identique à l'ancien + Quand je change mon mot de passe avec: + | ancien_mot_de_passe | Password123 | + | nouveau_mot_de_passe | Password123 | + | confirmation | Password123 | + Alors le changement échoue + Et je vois le message "Le nouveau mot de passe doit être différent de l'ancien" + + Scénario: Notification sur tous les appareils après changement de mot de passe + Étant donné que je suis connecté sur 3 appareils différents + Quand je change mon mot de passe depuis mon iPhone + Alors je reçois une notification push sur mes 2 autres appareils + Et je reçois un email de confirmation avec: + | sujet | Votre mot de passe a été modifié | + | appareil | iPhone 13 - Safari | + | localisation | Paris, France | + | action_urgence | Lien pour sécuriser le compte | + + # ========================================== + # Changement d'email + # ========================================== + + Scénario: Changement d'email avec vérification + Quand je change mon email pour "nouveau@test.fr" + Alors un email de vérification est envoyé à "nouveau@test.fr" + Et mon ancien email "user@test.fr" reste actif pour la connexion + Et je vois le message "Email de vérification envoyé à nouveau@test.fr" + Et le lien de vérification expire dans 7 jours + + Scénario: Validation du changement d'email + Étant donné que j'ai demandé un changement d'email pour "nouveau@test.fr" + Et que j'ai reçu le lien de vérification + Quand je clique sur le lien de vérification dans l'email + Alors mon email est changé pour "nouveau@test.fr" + Et je reçois une notification sur l'ancien email "user@test.fr" + Et je vois le message "Email modifié avec succès" + Et je dois utiliser "nouveau@test.fr" pour me connecter désormais + + Scénario: Changement d'email vers un email déjà utilisé + Étant donné qu'un utilisateur existe avec l'email "existant@test.fr" + Quand j'essaie de changer mon email pour "existant@test.fr" + Alors le changement échoue + Et je vois le message "Cet email est déjà utilisé par un autre compte" + + Scénario: Changement d'email avec format invalide + Quand j'essaie de changer mon email pour "email.invalide" + Alors le changement échoue + Et je vois le message "Format d'email invalide" + + Scénario: Expiration du lien de vérification de changement d'email + Étant donné que j'ai demandé un changement d'email il y a 8 jours + Quand j'essaie d'utiliser le lien de vérification + Alors la vérification échoue + Et je vois le message "Ce lien a expiré" + Et mon email reste inchangé à "user@test.fr" + Et je peux demander un nouveau changement d'email + + Scénario: Annulation du changement d'email avant vérification + Étant donné que j'ai demandé un changement d'email pour "nouveau@test.fr" + Et que je n'ai pas encore vérifié le nouveau email + Quand je demande à annuler le changement d'email + Alors la demande de changement est annulée + Et le lien de vérification est invalidé + Et mon email reste "user@test.fr" + + Scénario: Limite de changements d'email + Étant donné que j'ai déjà changé mon email 2 fois dans les 30 derniers jours + Quand j'essaie de changer mon email une 3ème fois + Alors le changement échoue + Et je vois le message "Maximum 2 changements d'email par mois" + + Scénario: Notification de sécurité sur l'ancien email + Étant donné que j'ai changé mon email de "ancien@test.fr" à "nouveau@test.fr" + Alors je reçois un email sur "ancien@test.fr" avec: + | sujet | Votre adresse email a été modifiée | + | contenu | Votre email de connexion est maintenant nouveau@test.fr | + | date_heure | présente | + | appareil | présent | + | action_urgence | Lien pour annuler si ce n'était pas vous | + + # ========================================== + # Changement de pseudo + # ========================================== + + Scénario: Changement de pseudo valide + Quand je change mon pseudo pour "nouveau_pseudo" + Alors mon pseudo est modifié avec succès + Et je vois le message "Pseudo modifié avec succès" + Et le nouveau pseudo apparaît sur mon profil + + Scénario: Changement de pseudo invalide - trop court + Quand j'essaie de changer mon pseudo pour "ab" + Alors le changement échoue + Et je vois le message "Le pseudo doit contenir entre 3 et 30 caractères" + + Scénario: Changement de pseudo invalide - caractères spéciaux + Quand j'essaie de changer mon pseudo pour "user@123" + Alors le changement échoue + Et je vois le message "Le pseudo ne peut contenir que des lettres, chiffres et underscores" + + Scénario: Changement de pseudo déjà utilisé + Étant donné qu'un utilisateur existe avec le pseudo "pseudo_existant" + Quand j'essaie de changer mon pseudo pour "pseudo_existant" + Alors le changement échoue + Et je vois le message "Ce pseudo est déjà utilisé" + + Scénario: Limite de changements de pseudo + Étant donné que j'ai changé mon pseudo il y a 15 jours + Quand j'essaie de changer mon pseudo à nouveau + Alors le changement échoue + Et je vois le message "Vous ne pouvez changer votre pseudo qu'une fois par mois" + + # ========================================== + # Consultation des informations de compte + # ========================================== + + Scénario: Consulter les informations de mon compte + Quand je consulte les paramètres de mon compte + Alors je vois les informations suivantes: + | champ | valeur | + | Email | user@test.fr | + | Pseudo | user_test | + | Date création | 15/01/2026 | + | Email vérifié | Oui | + | 2FA activée | Non | + | Abonnement | Gratuit | + + Scénario: Historique des changements de sécurité + Quand je consulte l'historique de sécurité de mon compte + Alors je vois la liste des événements suivants: + | événement | date | appareil | + | Changement mot de passe | 01/02/2026 | iPhone 13 | + | Activation 2FA | 25/01/2026 | iPad Pro | + | Changement email | 20/01/2026 | PC Windows | + | Création compte | 15/01/2026 | iPhone 13 | diff --git a/features/api/authentication/inscription.feature b/features/api/authentication/inscription.feature index 6b90006..a3e4f19 100644 --- a/features/api/authentication/inscription.feature +++ b/features/api/authentication/inscription.feature @@ -73,7 +73,7 @@ Fonctionnalité: Inscription utilisateur Étant donné la date du jour est "2026-01-21" Quand je m'inscris avec une date de naissance "2013-01-21" Alors mon compte est créé avec succès - Et le mode Kids est activé automatiquement + Et je peux accéder aux contenus "Tout public" et "13+" Scénario: Inscription avec âge supérieur à 18 ans Étant donné la date du jour est "2026-01-21"