From c228f7be550a73f57bdc328ff7fe6ce8a767d78e Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Wed, 24 Jun 2026 03:55:52 +0200 Subject: [PATCH] fix(auth): corriger le lien de validation email et l'isolation des tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le lien de vérification pointait vers la page Dash /verification-email (qui se contente de rediriger vers /connexion) au lieu de la route backend /auth/verify-email qui consomme réellement le token et marque l'email comme vérifié. Conséquence : l'email n'était jamais validé et le login renvoyait email_not_verified en boucle. Ajoute aussi MAIL_SUPPRESS_SEND=true au bloc env de pytest : sans cela, le load_dotenv() de src.app injectait MAIL_SUPPRESS_SEND=false depuis le .env local, désactivant la suppression d'envoi et faisant échouer les tests d'auth qui envoient un email (selon l'ordre d'import). Co-Authored-By: Claude Opus 4.8 --- pyproject.toml | 1 + src/auth/mailer.py | 2 +- tests/auth/test_mailer.py | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1b5c028..3575dd8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,6 +53,7 @@ env = [ "USERS_DB_PATH=tests/users.test.sqlite", "SECRET_KEY=test-secret-do-not-use-in-prod", "MAIL_FROM=test@decp.info", + "MAIL_SUPPRESS_SEND=true", "APP_BASE_URL=http://localhost:8050", "SMTP_HOST=localhost", "SMTP_PORT=25", diff --git a/src/auth/mailer.py b/src/auth/mailer.py index c5fc0e0..dce0f57 100644 --- a/src/auth/mailer.py +++ b/src/auth/mailer.py @@ -66,7 +66,7 @@ def _send( def send_verification_email(email: str, token: str) -> None: - link = f"{_base_url()}/verification-email?token={token}" + link = f"{_base_url()}/auth/verify-email?token={token}" _send( "Vérification de votre adresse email — decp.info", email, diff --git a/tests/auth/test_mailer.py b/tests/auth/test_mailer.py index 37a74a3..75ac897 100644 --- a/tests/auth/test_mailer.py +++ b/tests/auth/test_mailer.py @@ -29,8 +29,8 @@ def test_send_verification_email(mail_app): assert len(outbox) == 1 msg = outbox[0] assert msg.recipients == ["a@b.c"] - assert "verification-email?token=TOKEN123" in msg.body - assert "verification-email?token=TOKEN123" in msg.html + assert "/auth/verify-email?token=TOKEN123" in msg.body + assert "/auth/verify-email?token=TOKEN123" in msg.html def test_send_reset_email(mail_app):