Skip to content

🧪 Procédure de Test - Vérification d'Email

📋 Vue d'ensemble

Cette procédure teste l'implémentation de la vérification d'email étape par étape.


🚀 Préparation

1. Compiler et lancer l'application

cd /home/julien/Sources/yinshi
flutter pub get
flutter run -d chrome

2. Ouvrir la console de debug

  • Appuyez sur d dans le terminal pour ouvrir DevTools
  • Allez dans l'onglet "Console" pour voir les logs

3. Préparer les adresses email

  • Email 1 (test) : test.yinshi@gmail.com (Gmail - reçoit les emails)
  • Email 2 (test) : test.yinshi.free@free.fr (Free.fr - peut bloquer)
  • Email 3 (OAuth) : Votre compte Google personnel

✅ ÉTAPE 1 : Envoi automatique d'email (Étape 2)

Objectif

Vérifier que l'email de vérification est bien envoyé après l'inscription.

Procédure

  1. Lancer l'app et cliquer sur "Créer un compte"

  2. S'inscrire avec Gmail

  3. Email : test.yinshi@gmail.com
  4. Mot de passe : Test123!@#
  5. Confirmer le mot de passe

  6. Vérifier les logs

  7. Dans la console, chercher les logs :

    === DEBUG VÉRIFICATION EMAIL ===
    Email: test.yinshi@gmail.com
    Email verified: false
    Is email/password provider: true
    Has only one provider: true
    Tentative d'envoi d'email de vérification...
    ✅ Email de vérification envoyé avec succès à test.yinshi@gmail.com
    === FIN DEBUG ===
    

  8. Vérifier la réception de l'email

  9. Ouvrir Gmail : https://mail.google.com
  10. Chercher un email de noreply@yin-shi-1967c.firebaseapp.com
  11. Sujet : "Validation de l'adresse e-mail pour Yinshi"

✅ Validation

  • [ ] Les logs montrent "✅ Email de vérification envoyé"
  • [ ] L'email est reçu dans Gmail (pas dans les spams)
  • [ ] L'email contient un lien de vérification

Résultat : - ✅ SUCCÈS → Passer à l'ÉTAPE 2 - ❌ ÉCHEC → Vérifier les logs et les spams


✅ ÉTAPE 2 : Redirection vers VerifyEmailScreen (Étape 3)

Objectif

Vérifier que l'utilisateur est redirigé vers l'écran de vérification d'email.

Procédure

  1. Après l'inscription (ÉTAPE 1)
  2. L'app devrait afficher l'écran VerifyEmailScreen
  3. Vérifier que vous voyez :

    • Icône "Vérifiez votre boîte mail"
    • Message avec votre email
    • Bouton "Renvoyer l'email"
    • Lien "Se connecter avec un autre compte"
    • Message d'info "Cette page se rafraîchit automatiquement"
  4. Vérifier l'interface

  5. [ ] L'écran s'affiche correctement
  6. [ ] Le message affiche votre email
  7. [ ] Les boutons sont visibles et cliquables

✅ Validation

  • [ ] Vous êtes sur l'écran de vérification
  • [ ] L'interface s'affiche correctement
  • [ ] Les éléments sont visibles

Résultat : - ✅ SUCCÈS → Passer à l'ÉTAPE 3 - ❌ ÉCHEC → Vérifier que AuthWrapper est bien intégré dans main.dart


✅ ÉTAPE 3 : Vérification automatique et redirection (Étape 3)

Objectif

Vérifier que l'app détecte automatiquement la vérification d'email et redirige vers MainNavigation.

Procédure

  1. Depuis l'écran de vérification
  2. Ouvrir l'email reçu dans Gmail
  3. Cliquer sur le lien "https://yin-shi-1967c.firebaseapp.com/__/auth/action?..."
  4. Vous serez redirigé vers une page Firebase
  5. Cliquer sur "Retourner à l'application" ou fermer cette page

  6. Revenir à l'app Flutter

  7. L'app devrait détecter la vérification automatiquement
  8. Un dialog devrait apparaître : "Email vérifié !"
  9. Cliquer sur "Continuer"

  10. Vérifier la redirection

  11. Vous devriez être redirigé vers MainNavigation (écran d'accueil)
  12. L'écran d'accueil devrait afficher normalement

✅ Validation

  • [ ] Le lien de vérification fonctionne
  • [ ] Le dialog "Email vérifié !" apparaît
  • [ ] Vous êtes redirigé vers MainNavigation
  • [ ] L'app fonctionne normalement après

Résultat : - ✅ SUCCÈS → Passer à l'ÉTAPE 4 - ❌ ÉCHEC → Vérifier les logs pour les erreurs


✅ ÉTAPE 4 : Bouton "Renvoyer l'email" (Étape 3)

Objectif

Vérifier que le bouton "Renvoyer l'email" fonctionne correctement.

Procédure

  1. S'inscrire à nouveau avec un nouvel email
  2. Email : test.yinshi2@gmail.com
  3. Mot de passe : Test123!@#
  4. Vous êtes redirigé vers VerifyEmailScreen

  5. Cliquer sur "Renvoyer l'email"

  6. Vérifier les logs : "✅ Email de vérification renvoyé"
  7. Un message vert devrait apparaître : "Email renvoyé avec succès !"

  8. Vérifier la réception

  9. Ouvrir Gmail
  10. Chercher un nouvel email de vérification
  11. Vérifier que c'est un nouvel email (timestamp différent)

  12. Tester la limite de 3 tentatives

  13. Cliquer sur "Renvoyer l'email" 2 fois de plus
  14. À la 4ème tentative, le bouton devrait être désactivé
  15. Message : "Nombre maximum de tentatives atteint"

✅ Validation

  • [ ] Le bouton "Renvoyer l'email" fonctionne
  • [ ] Un nouvel email est reçu
  • [ ] Le compteur affiche "Tentatives: X/3"
  • [ ] Le bouton est désactivé après 3 tentatives
  • [ ] Un message d'erreur s'affiche

Résultat : - ✅ SUCCÈS → Passer à l'ÉTAPE 5 - ❌ ÉCHEC → Vérifier les logs et la limite de tentatives


✅ ÉTAPE 5 : OAuth (Google/Apple) - Pas de vérification (Étape 4)

Objectif

Vérifier que les utilisateurs OAuth accèdent directement à l'app sans vérification.

Procédure

  1. Déconnexion
  2. Cliquer sur "Se connecter avec un autre compte"
  3. Vous êtes redirigé vers l'écran d'authentification

  4. Se connecter avec Google

  5. Cliquer sur "Continuer avec Google"
  6. Utiliser votre compte Google personnel
  7. Vous devriez être redirigé directement vers MainNavigation
  8. PAS d'écran de vérification d'email

  9. Vérifier les logs

  10. Chercher les logs pour voir que c'est un provider Google
  11. Pas de message "Tentative d'envoi d'email de vérification"

✅ Validation

  • [ ] Connexion Google fonctionne
  • [ ] Pas d'écran de vérification pour Google
  • [ ] Accès direct à MainNavigation
  • [ ] Les logs montrent "Google" comme provider

Résultat : - ✅ SUCCÈS → Passer à l'ÉTAPE 6 - ❌ ÉCHEC → Vérifier la logique OAuth dans AuthWrapper


✅ ÉTAPE 6 : Déconnexion et reconnexion (Étape 4)

Objectif

Vérifier que la déconnexion fonctionne et que la reconnexion respecte les règles.

Procédure

  1. Depuis MainNavigation (connecté avec Google)
  2. Cliquer sur l'avatar profil (coin haut droit)
  3. Cliquer sur "Déconnexion"
  4. Vous devriez être redirigé vers l'écran d'authentification

  5. Se reconnecter avec email/mot de passe

  6. Cliquer sur "Créer un compte"
  7. S'inscrire avec un nouvel email : test.yinshi3@gmail.com
  8. Vous devriez être redirigé vers VerifyEmailScreen

  9. Vérifier la logique

  10. [ ] La déconnexion fonctionne
  11. [ ] Vous êtes redirigé vers l'écran d'authentification
  12. [ ] La reconnexion respecte les règles (email → vérification, Google → direct)

✅ Validation

  • [ ] Déconnexion fonctionne
  • [ ] Reconnexion avec email → VerifyEmailScreen
  • [ ] Reconnexion avec Google → MainNavigation direct

Résultat : - ✅ SUCCÈS → Tous les tests sont PASSÉS ! 🎉 - ❌ ÉCHEC → Vérifier les logs et la logique d'authentification


📊 Résumé des Tests

Étape Test Statut
1 Envoi automatique d'email [ ]
2 Redirection vers VerifyEmailScreen [ ]
3 Vérification automatique et redirection [ ]
4 Bouton "Renvoyer l'email" [ ]
5 OAuth (Google) - Pas de vérification [ ]
6 Déconnexion et reconnexion [ ]

🐛 Troubleshooting

L'email n'est pas reçu

  • Vérifier les spams/indésirables
  • Vérifier que l'adresse email est correcte
  • Vérifier les logs pour les erreurs d'envoi
  • Essayer avec une adresse Gmail

L'écran de vérification ne s'affiche pas

  • Vérifier que AuthWrapper est bien dans main.dart
  • Vérifier les logs pour les erreurs de redirection
  • Vérifier que VerifyEmailScreen est bien importé

La vérification automatique ne fonctionne pas

  • Vérifier que le Timer est bien lancé (logs)
  • Vérifier que checkEmailVerified() est appelé
  • Vérifier les logs pour les erreurs

Le bouton "Renvoyer l'email" ne fonctionne pas

  • Vérifier les logs pour les erreurs
  • Vérifier que resendVerificationEmail() est bien implémenté
  • Vérifier la limite de tentatives

📝 Notes

  • Utilisez des adresses Gmail pour les tests (Free.fr peut bloquer)
  • Vérifiez toujours les logs dans la console
  • Attendez quelques secondes entre chaque action
  • Nettoyez le cache si vous avez des problèmes : flutter clean