# language: fr
Fonctionnalité: Authentification à deux facteurs (2FA)
  En tant qu'utilisateur soucieux de sécurité
  Je veux activer la 2FA sur mon compte
  Afin de protéger mon accès même si mon mot de passe est compromis

  Contexte:
    Étant donné que l'API RoadWave est disponible
    Et que je suis connecté à mon compte

  Scénario: Activer la 2FA TOTP (Time-based One-Time Password)
    Étant donné que la 2FA n'est pas activée sur mon compte
    Quand je choisis d'activer la 2FA TOTP
    Alors je vois un QR code à scanner
    Et je vois le secret partagé en texte clair (backup)
    Et je dois entrer un code de vérification depuis mon app authenticator
    Quand je saisis un code TOTP valide
    Alors la 2FA TOTP est activée avec succès
    Et je reçois des codes de backup (10 codes)

  Scénario: Connexion avec 2FA TOTP activée
    Étant donné que la 2FA TOTP est activée sur mon compte
    Quand je me connecte avec email/password
    Alors je suis redirigé vers la page de saisie du code 2FA
    Quand je saisis un code TOTP valide de mon authenticator
    Alors je suis connecté avec succès

  Scénario: Connexion échouée avec code TOTP invalide
    Étant donné que la 2FA TOTP est activée
    Quand je me connecte avec email/password
    Et que je saisis un code TOTP invalide "000000"
    Alors la connexion échoue
    Et je vois le message "Code d'authentification invalide"
    Et je peux réessayer

  Scénario: Utiliser un code de backup pour 2FA
    Étant donné que la 2FA TOTP est activée
    Et que j'ai perdu l'accès à mon authenticator
    Quand je me connecte avec email/password
    Et que je clique sur "Utiliser un code de backup"
    Et que je saisis un code de backup valide
    Alors je suis connecté avec succès
    Et le code de backup utilisé est invalidé
    Et il me reste 9 codes de backup

  Scénario: Activer la 2FA par email
    Étant donné que la 2FA n'est pas activée
    Quand je choisis d'activer la 2FA par email
    Alors la 2FA email est activée immédiatement
    Et je vois le message "2FA email activée. Vous recevrez un code à chaque connexion"

  Scénario: Connexion avec 2FA email
    Étant donné que la 2FA email est activée
    Quand je me connecte avec email/password
    Alors je reçois un email avec un code à 6 chiffres
    Et le code expire dans 10 minutes
    Et je dois saisir ce code pour terminer la connexion

  Scénario: Code 2FA email expiré
    Étant donné que la 2FA email est activée
    Et que je me suis connecté avec email/password
    Et que j'ai reçu un code 2FA par email il y a 11 minutes
    Quand je saisis ce code
    Alors la connexion échoue
    Et je vois le message "Code expiré. Demandez un nouveau code."

  Scénario: Renvoyer le code 2FA email
    Étant donné que la 2FA email est activée
    Et que je suis sur la page de saisie du code 2FA
    Quand je clique sur "Renvoyer le code"
    Alors je reçois un nouveau code par email
    Et l'ancien code est invalidé

  Scénario: Ajouter un appareil de confiance (skip 2FA pendant 30 jours)
    Étant donné que la 2FA TOTP est activée
    Quand je me connecte avec email/password et code TOTP
    Et que je coche "Ne plus demander sur cet appareil"
    Alors je suis connecté avec succès
    Et cet appareil est enregistré comme "appareil de confiance"
    Quand je me reconnecte dans les 30 jours suivants sur ce même appareil
    Alors je ne dois pas saisir de code 2FA

  Scénario: Appareil de confiance expire après 30 jours
    Étant donné que j'ai enregistré un appareil de confiance il y a 31 jours
    Quand je me connecte depuis cet appareil
    Alors je dois saisir un code 2FA
    Et je vois le message "Appareil de confiance expiré. Veuillez vous authentifier"

  Scénario: Voir la liste des appareils de confiance
    Étant donné que j'ai enregistré 3 appareils de confiance
    Quand je consulte mes paramètres de sécurité
    Alors je vois la liste de mes 3 appareils de confiance avec:
      | information    | exemple                  |
      | Nom            | iPhone 13 - Safari       |
      | Date ajout     | 15 janvier 2026          |
      | Dernière vue   | Il y a 2 heures          |
      | Expire le      | 14 février 2026          |

  Scénario: Révoquer un appareil de confiance
    Étant donné que j'ai un iPhone enregistré comme appareil de confiance
    Quand je révoque cet appareil depuis les paramètres
    Alors l'appareil est supprimé de la liste
    Quand je me reconnecte depuis cet iPhone
    Alors je dois saisir un code 2FA

  Scénario: Révoquer tous les appareils de confiance
    Étant donné que j'ai 5 appareils de confiance enregistrés
    Quand je clique sur "Révoquer tous les appareils de confiance"
    Alors tous les appareils sont révoqués
    Et je vois le message "Tous les appareils de confiance ont été révoqués"

  Scénario: 2FA forcée pour connexion suspecte malgré appareil de confiance
    Étant donné que j'ai un appareil de confiance enregistré en France
    Et que je me connecte depuis ce même appareil mais avec une IP américaine
    Quand je tente de me connecter
    Alors la 2FA est requise malgré l'appareil de confiance
    Et je vois le message "Connexion suspecte détectée. Authentification requise."

  Scénario: Désactiver la 2FA
    Étant donné que la 2FA TOTP est activée
    Quand je désactive la 2FA depuis mes paramètres
    Et que je confirme avec mon mot de passe
    Alors la 2FA est désactivée
    Et tous les codes de backup sont invalidés
    Et tous les appareils de confiance sont révoqués

  Scénario: Régénérer les codes de backup
    Étant donné que la 2FA est activée
    Et que j'ai utilisé 8 codes de backup sur 10
    Quand je demande à régénérer les codes de backup
    Alors je reçois 10 nouveaux codes
    Et tous les anciens codes (utilisés ou non) sont invalidés
