Files
colibre/tests/auth/test_mailer.py
T
Colin Maudry c228f7be55 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>
2026-06-24 03:55:52 +02:00

43 lines
1.4 KiB
Python

import pytest
from flask import Flask
from flask_mail import Mail
from src.auth import mailer
@pytest.fixture
def mail_app(monkeypatch, tmp_path):
app = Flask(
__name__,
template_folder=str(
(__import__("pathlib").Path(mailer.__file__).parent / "templates").resolve()
),
)
app.config["MAIL_SUPPRESS_SEND"] = True
app.config["MAIL_DEFAULT_SENDER"] = "noreply@decp.info"
app.config["TESTING"] = True
mail = Mail(app)
monkeypatch.setattr(mailer, "_mail", mail)
monkeypatch.setenv("APP_BASE_URL", "http://localhost:8050")
return app
def test_send_verification_email(mail_app):
with mail_app.app_context(), mail_app.test_request_context():
with mail_app.extensions["mail"].record_messages() as outbox:
mailer.send_verification_email("a@b.c", "TOKEN123")
assert len(outbox) == 1
msg = outbox[0]
assert msg.recipients == ["a@b.c"]
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):
with mail_app.app_context(), mail_app.test_request_context():
with mail_app.extensions["mail"].record_messages() as outbox:
mailer.send_reset_email("a@b.c", "RESET456")
assert len(outbox) == 1
msg = outbox[0]
assert "reinitialiser-mot-de-passe?token=RESET456" in msg.body