Décision — pour valider les e-mails de connexion Magic Link d’Auth.js, utilisez une adresse de test dont vous pouvez réellement lire les messages et vérifiez tout le parcours jusqu’à la session. Une demande d’envoi acceptée ne prouve pas que le message a été reçu, que son lien vise le bon environnement ni que l’utilisateur est connecté.
Ce guide s’adresse aux développeurs qui intègrent l’Email Provider dans leur propre application et aux équipes QA qui vérifient les courriels de connexion.
Il convient aussi aux petites équipes qui souhaitent séparer les essais de leurs boîtes personnelles et professionnelles.
Les contrôles ci-dessous sont réservés à votre application ou à un environnement pour lequel vous avez reçu une autorisation.
Cadre de validation avant le premier envoi
Une validation utile distingue des résultats que les journaux d’application tendent parfois à confondre. La requête de connexion peut avoir été traitée par l’application ; le système d’envoi peut avoir accepté le message ; pourtant, le message peut manquer dans la boîte consultée. Même si vous le recevez, le lien peut ouvrir un autre environnement ou échouer avant que la session soit créée. Notez ces étapes séparément, sans assimiler l’une à l’autre.
Avant l’essai, choisissez votre cible : environnement de développement, préproduction ou autre déploiement contrôlé. Relevez le nom de l’environnement et les paramètres de connexion actifs, puis définissez le résultat attendu : quelle page doit s’ouvrir, quel compte doit être identifié et quelle action devrait être accessible après la connexion. Vous pourrez alors comparer le résultat observé à une attente explicite, plutôt que de conclure à partir d’une simple redirection.
L’Email Provider d’Auth.js sert à l’authentification par lien envoyé par courrier ; les modalités concrètes dépendent toutefois de la version, du fournisseur, de l’adaptateur et de la configuration du projet. Consultez le guide officiel de l’Email Provider pour les principes du parcours, puis vérifiez les options dans la référence officielle de l’API Email Provider. N’extrapolez pas le comportement d’un projet d’exemple à votre déploiement.
Pour l’expiration, la référence de l’API indique une valeur par défaut de maxAge de 24 * 60 * 60, soit 86 400 secondes, lorsque cette option n’est pas remplacée. C’est un paramètre documenté, pas une promesse sur la configuration effective de votre application : vérifiez la version utilisée, les options déclarées et le comportement de votre propre environnement avant d’établir un test d’expiration (référence de l’API Email Provider).
Un destinataire maîtrisé est essentiel si vous devez ouvrir le message, copier son lien ou refaire l’essai. Si vous hésitez entre une adresse jetable et une adresse masquée durable, comparez leur usage dans ce guide sur les adresses masquées et temporaires : le choix dépend notamment de la possibilité de relire les messages et de retrouver un compte plus tard.
Préparation de l’environnement et de l’adresse
Utilisez une adresse de test que vous contrôlez et qui n’est pas rattachée à un compte réel dont la récupération serait importante. Évitez de faire entrer les messages d’essai dans une boîte personnelle partagée par toute l’équipe : cela complique l’attribution de l’e-mail et expose le contenu à des personnes qui n’en ont pas besoin. La séparation des données de test et des données personnelles relève aussi de l’hygiène de confidentialité ; la page consacrée à la protection de la vie privée peut vous aider à examiner les risques liés au choix du destinataire.
Avant de déclencher l’authentification, préparez une trace légère pour relier l’action à son résultat. Enregistrez l’identifiant de test utilisé, l’environnement, l’heure de la demande et un identifiant d’exécution si votre outil de test en fournit un. N’ajoutez pas de données personnelles réelles dans le nom du compte, les journaux ou les captures d’écran. Pour un essai de rendu de courriel destiné à une démonstration audio, vidéo ou design, un profil fictif et cohérent évite que des informations de production apparaissent dans les aperçus.
- [ ] Confirmez que vous testez votre application ou un environnement autorisé.
- [ ] Notez l’environnement et l’adresse de base réellement configurés.
- [ ] Choisissez un destinataire contrôlé, accessible pendant toute la vérification.
- [ ] Définissez la page et l’état de compte attendus après connexion.
- [ ] Vérifiez que les journaux et captures ne contiennent pas de données personnelles inutiles.
- [ ] Préparez un moyen de consulter le message et d’ouvrir son lien sans le transférer à une personne non autorisée.
Cette liste est également un outil de décision : si vous ne pouvez ni lire le message ni ouvrir le lien, votre dispositif peut vérifier une requête d’envoi, mais pas l’acceptation complète du parcours. Dans ce cas, complétez le test avec une boîte contrôlée ou un mécanisme de capture de courriels adapté à votre environnement.
Déclenchement et corrélation de la demande
Lancez la connexion depuis le formulaire de votre application, comme le ferait un utilisateur, au lieu de fabriquer une demande parallèle qui contournerait l’interface. Saisissez l’adresse de test prévue et observez le retour de l’application. Une confirmation visuelle signifie généralement que la demande a été prise en charge par le parcours applicatif ; elle ne constitue pas la preuve que l’e-mail est arrivé.
Reliez cette action à la trace préparée : environnement, adresse de test et identifiant d’exécution. Si vous examinez les journaux serveur, recherchez l’événement associé à cette demande et vérifiez s’il existe une erreur de génération ou d’expédition. Gardez toutefois une séparation nette entre les preuves : le journal confirme ce que votre application a exécuté ou tenté, tandis que la boîte contrôlée confirme ce qu’elle a reçu.
La configuration de l’Email Provider peut inclure des options telles que from, maxAge, sendVerificationRequest et generateVerificationToken. La référence Auth.js décrit ces points d’extension ; leur présence et leur valeur dans votre installation doivent être vérifiées dans votre propre configuration, et non recopiées comme des constantes universelles (référence de l’API Email Provider). Si vous utilisez un adaptateur, vérifiez aussi les exigences du guide correspondant : par exemple, le guide officiel de l’adaptateur Drizzle documente les éléments propres à cette intégration.
Une réponse favorable du service d’envoi est une preuve de transmission à une étape du système, pas une preuve de réception dans la boîte de test. Gardez ces deux observations dans des champs distincts de votre compte rendu.
Inspection du message et de sa destination
Consultez la boîte contrôlée après la demande, sans supposer que le message apparaîtra dans l’onglet principal. Vérifiez les courriers indésirables et les autres catégories pertinentes, puis cherchez le message en tenant compte de l’objet, de l’adresse d’expédition et de l’heure de déclenchement. Si plusieurs essais se ressemblent, la trace d’exécution vous aidera à éviter d’attribuer au test courant un message ancien.
Ouvrez le message et contrôlez l’adresse du destinataire, le texte utile, la présence du lien et sa destination. Comparez l’hôte et le chemin du lien avec ceux attendus pour l’environnement visé. Ne vous contentez pas d’un libellé de bouton qui semble correct : le lien réellement intégré au message est celui qui décide de la cible.
| Élément vérifié | Résultat attendu | Si le résultat diffère |
|---|---|---|
| Destinataire | Adresse de test qui a lancé la demande | Vérifiez la valeur soumise et les journaux associés à la requête |
| Destination du lien | Domaine et chemin correspondant à l’environnement choisi | Examinez la configuration du site, le rappel et le modèle d’e-mail |
| Contenu du message | Informations cohérentes avec le parcours de connexion | Vérifiez la personnalisation du modèle et les variables injectées |
| Présence dans la boîte | Message consultable dans le destinataire contrôlé | Distinguez l’échec d’envoi, la remise et le classement dans la boîte |
Si le lien pointe vers le mauvais environnement, commencez par les variables et paramètres qui déterminent l’adresse publique de l’application dans le déploiement concerné. Comparez ensuite l’URL construite, le chemin de rappel et le contenu du modèle. Les routes et la configuration d’installation sont propres au projet ; la documentation officielle d’installation et de configuration des routes est un point de contrôle, mais elle ne remplace pas l’examen des valeurs effectivement déployées.
N’effectuez pas la correction en remplaçant une URL dans le message reçu puis en déclarant le test réussi. Cela pourrait masquer une mauvaise configuration qui affecterait les utilisateurs. Corrigez la source dans votre environnement autorisé, déclenchez une nouvelle demande et vérifiez le nouveau message de bout en bout. Conservez l’ancien courriel comme élément de diagnostic, sans réutiliser son lien comme preuve du fonctionnement corrigé.
Ouverture du lien et vérification de la session
Ouvrez le lien reçu dans un contexte correspondant à votre scénario : navigateur de test, profil dédié ou environnement automatisé. Évitez d’utiliser un navigateur déjà authentifié avec un autre compte, car une session existante peut fausser l’observation. Si le rappel renvoie une erreur, notez l’URL de destination, le message d’erreur visible et les événements serveur disponibles, en masquant tout jeton d’authentification dans les captures et les rapports.
Après le rappel, vérifiez séparément l’état de la session. Une redirection vers la page d’accueil ne suffit pas : cette page peut être publique et accessible sans authentification. Utilisez plutôt un indicateur propre à votre application, comme l’accès à une route protégée, l’affichage de l’identité de test attendue ou une vérification côté serveur. La documentation Auth.js sur la protection des ressources décrit le principe à contrôler ; les mécanismes exacts dépendent de la stratégie de session et de votre code.
| Observation | Ce qu’elle établit | Ce qu’elle n’établit pas |
|---|---|---|
| L’application confirme la demande | Le parcours applicatif a accepté la requête de connexion | Que le message est arrivé |
| Le message est visible dans la boîte contrôlée | Le destinataire a reçu un e-mail consultable | Que son lien est valide ou correctement routé |
| Le lien termine le rappel | Le traitement du lien a abouti à une réponse de l’application | Que la session donne accès au compte attendu |
| Une ressource protégée reconnaît le bon compte | La session et l’identité attendues sont utilisables dans ce parcours | Que la livraison sera identique pour chaque boîte en production |
Cette distinction est particulièrement utile en automatisation. Un test peut attendre l’apparition du message, extraire le lien, l’ouvrir, puis interroger une page protégée ou un état applicatif vérifiable. Toutefois, la façon de lire l’e-mail et de fournir le lien dépend de votre infrastructure de test ; ne laissez pas l’automatisation enregistrer le jeton dans des journaux accessibles au-delà de l’équipe autorisée.
Réutilisation, demandes répétées et preuves de clôture
Dans votre environnement de test, examinez ce qui se passe si vous déclenchez une nouvelle demande, si vous rouvrez un lien déjà utilisé ou si vous ouvrez un lien que votre application considère comme invalide. L’objectif n’est pas de vérifier une règle supposée commune à toutes les installations d’Auth.js, mais de confirmer le comportement réel de votre projet et de veiller à ce que l’échec soit compréhensible sans exposer d’informations sensibles.
| Essai de régression | Point à observer | Conclusion à consigner |
|---|---|---|
| Nouvelle demande pour le compte de test | Le message attendu est-il généré et reçu ? | Le parcours accepte-t-il une nouvelle tentative ? |
| Réouverture d’un ancien lien | L’application refuse-t-elle, poursuit-elle ou demande-t-elle une nouvelle connexion ? | Le résultat correspond-il à la configuration et aux exigences du projet ? |
| Ouverture d’un lien invalide | L’application affiche-t-elle un retour maîtrisé ? | L’erreur aide-t-elle l’utilisateur sans divulguer de détail sensible ? |
| Demande avec une mauvaise cible d’environnement | Le lien indique-t-il clairement une destination inattendue ? | Les paramètres de déploiement et le modèle sont-ils cohérents ? |
Ne concluez pas qu’un lien doit toujours être utilisable une seule fois, ni qu’il doit expirer après une durée précise, sans avoir établi cette règle dans votre propre configuration et l’avoir testée. La valeur documentée par défaut de maxAge n’indique pas à elle seule comment votre application traite un lien déjà consommé, une nouvelle demande ou les erreurs du rappel. L’adaptateur, le stockage du jeton et la logique du projet peuvent aussi compter ; consultez la référence des adaptateurs Auth.js et la documentation correspondant à votre implémentation.
Pour fermer le test, conservez des preuves proportionnées : la trace de la demande, le message reçu avec les données sensibles masquées, la destination du lien, le résultat du rappel et une observation de la session. Indiquez également ce qui n’a pas été vérifié. Par exemple, une réception dans une boîte de test ne garantit pas que les messages de production seront remis dans toutes les boîtes visées. Si vous n’avez pas effectué l’essai sur l’environnement de préproduction ou sur le destinataire cible, signalez cette limite au lieu de transformer un test local en garantie de délivrabilité.
Cette discipline évite deux coûts fréquents : déclarer une fonctionnalité opérationnelle alors que la session n’est jamais établie, ou retester à l’aveugle parce que le message reçu ne peut pas être rattaché à la demande initiale. Pour les comptes de démonstration, les essais d’interface ou les tests d’acceptation, une adresse contrôlée peut aussi réduire la circulation de données personnelles dans les boîtes de l’équipe. Pour un compte bancaire, administratif ou autrement important, ou si vous devez recevoir des messages à long terme et répondre, choisissez plutôt une adresse durable que vous maîtrisez.
Questions fréquentes sur la réception et les liens
Comment confirmer la réception dans l’adresse de test ?
Consultez directement la boîte contrôlée et rapprochez le message de la demande enregistrée : destinataire, heure, environnement et contenu. Vérifiez aussi les dossiers où le service classe les messages automatiquement. Une trace d’envoi indique qu’une étape a accepté la requête ; seule l’inspection du message permet d’attester qu’il est arrivé dans cette boîte. Gardez ensuite la destination du lien comme une vérification distincte.
Comment vérifier que l’utilisateur est vraiment connecté ?
Après ouverture du lien, contrôlez une ressource ou un état de votre application qui exige l’authentification et confirme l’identité du compte de test. Une simple page chargée ou une redirection réussie peut aussi se produire sans session valide. Comparez le compte observé à celui qui a demandé le lien, et consignez séparément le résultat du rappel et la preuve que la session est utilisable.
Que tester lors d’une réutilisation du Magic Link ?
Dans un environnement que vous contrôlez, réessayez le lien et observez le résultat défini par votre application : refus, nouvelle demande de connexion ou autre comportement prévu. Vérifiez aussi les erreurs et leur contenu visible. La durée de validité et le traitement d’un jeton réutilisé ne doivent pas être supposés identiques d’un projet à l’autre ; confrontez le résultat à votre configuration et à votre version d’Auth.js.
Comment corriger un lien dirigé vers le mauvais environnement ?
Comparez le domaine et le chemin du lien avec l’environnement choisi, puis vérifiez la configuration publique du site, la route de rappel et les variables de déploiement utilisées par le modèle. Après correction, déclenchez une nouvelle demande depuis l’application et ouvrez le nouveau message. Modifier le lien manuellement ne valide pas la configuration et risque de cacher le défaut qui affecterait les prochains utilisateurs.
Pour vos essais de connexion, une boîte temporaire n’est utile que si vous pouvez réellement consulter le message et ouvrir le lien pendant la validation ; elle ne remplace pas une adresse durable pour les comptes à récupérer ou les échanges suivis. Si votre test consiste à inscrire un compte de démonstration et à vérifier un message sans exposer votre boîte principale, vous pouvez examiner les capacités de réception de TMPFox et confirmer qu’elles correspondent à votre scénario avant de l’adopter.
Questions fréquentes
Comment savoir si l’adresse de test a réellement reçu le message ?
Vérifiez la présence du message dans la boîte de réception contrôlée, puis comparez son destinataire, son heure d’arrivée et son contenu avec la demande que vous venez de déclencher. Un journal d’envoi ou une réponse positive du service d’expédition prouve seulement qu’une étape d’envoi a été acceptée ; il ne confirme ni la remise dans la boîte, ni l’accès au lien.
Comment distinguer une redirection réussie d’une session ouverte ?
Après avoir suivi le lien, contrôlez un état réellement lié à l’utilisateur authentifié : par exemple, une page protégée accessible ou une information de session visible côté application. Une page d’accueil affichée après le rappel ne suffit pas si elle est aussi accessible sans connexion. Consignez séparément le résultat du rappel et celui de la vérification de session.
Que faut-il examiner après plusieurs clics sur un même lien ?
Rejouez le lien uniquement dans votre environnement de test, puis notez si l’application ouvre une session, affiche un refus ou demande une nouvelle connexion. Comparez le comportement avec celui de votre implémentation et de sa configuration : durée de validité, stockage du jeton et traitement des erreurs ne doivent pas être déduits d’un comportement observé dans un autre projet.
Que vérifier si le lien reçu ouvre le mauvais environnement ?
Comparez l’adresse du site configurée pour l’environnement, l’URL contenue dans le message et le chemin de rappel effectivement utilisé par votre application. Vérifiez aussi le modèle d’e-mail et les paramètres propres au déploiement. N’appliquez pas une valeur supposée universelle : la configuration et les routes réellement actives dans votre projet déterminent la destination.