fix(auth): corriger le lien de validation email et l'isolation des tests

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 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-06-24 03:55:52 +02:00
parent 4e1c610405
commit c228f7be55
3 changed files with 4 additions and 3 deletions
+1
View File
@@ -53,6 +53,7 @@ env = [
"USERS_DB_PATH=tests/users.test.sqlite", "USERS_DB_PATH=tests/users.test.sqlite",
"SECRET_KEY=test-secret-do-not-use-in-prod", "SECRET_KEY=test-secret-do-not-use-in-prod",
"MAIL_FROM=test@decp.info", "MAIL_FROM=test@decp.info",
"MAIL_SUPPRESS_SEND=true",
"APP_BASE_URL=http://localhost:8050", "APP_BASE_URL=http://localhost:8050",
"SMTP_HOST=localhost", "SMTP_HOST=localhost",
"SMTP_PORT=25", "SMTP_PORT=25",
+1 -1
View File
@@ -66,7 +66,7 @@ def _send(
def send_verification_email(email: str, token: str) -> None: 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( _send(
"Vérification de votre adresse email — decp.info", "Vérification de votre adresse email — decp.info",
email, email,
+2 -2
View File
@@ -29,8 +29,8 @@ def test_send_verification_email(mail_app):
assert len(outbox) == 1 assert len(outbox) == 1
msg = outbox[0] msg = outbox[0]
assert msg.recipients == ["a@b.c"] assert msg.recipients == ["a@b.c"]
assert "verification-email?token=TOKEN123" in msg.body assert "/auth/verify-email?token=TOKEN123" in msg.body
assert "verification-email?token=TOKEN123" in msg.html assert "/auth/verify-email?token=TOKEN123" in msg.html
def test_send_reset_email(mail_app): def test_send_reset_email(mail_app):