mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-06-03 13:44:55 -04:00
* feat(frontend): ✨ add UI for testing email configuration * feat(backend): ✨ add email service with common templates (WIP) * test(backend): ✅ add basic tests for email configuration * set defaults * add email variables Co-authored-by: Hayden <hay-kot@pm.me>
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
import pytest
|
|
|
|
from mealie.core.config import AppSettings
|
|
from mealie.services.email import EmailService
|
|
from mealie.services.email.email_senders import ABCEmailSender
|
|
|
|
FAKE_ADDRESS = "my_secret_email@email.com"
|
|
|
|
SUBJECTS = {"Mealie Forgot Password", "Invitation to join Mealie", "Test Email"}
|
|
|
|
|
|
class TestEmailSender(ABCEmailSender):
|
|
def send(self, email_to: str, subject: str, html: str) -> bool:
|
|
|
|
# check email_to:
|
|
assert email_to == FAKE_ADDRESS
|
|
|
|
# check subject:
|
|
assert subject in SUBJECTS
|
|
|
|
# check html is rendered:
|
|
assert "{{" not in html
|
|
assert "}}" not in html
|
|
|
|
return True
|
|
|
|
|
|
def patch_env(monkeypatch):
|
|
monkeypatch.setenv("SMTP_HOST", "email.mealie.io")
|
|
monkeypatch.setenv("SMTP_PORT", 587)
|
|
monkeypatch.setenv("SMTP_TLS", True)
|
|
monkeypatch.setenv("SMTP_FROM_NAME", "Mealie")
|
|
monkeypatch.setenv("SMTP_FROM_EMAIL", "mealie@mealie.io")
|
|
monkeypatch.setenv("SMTP_USER", "mealie@mealie.io")
|
|
monkeypatch.setenv("SMTP_PASSWORD", "mealie-password")
|
|
|
|
|
|
@pytest.fixture()
|
|
def email_service(monkeypatch) -> EmailService:
|
|
patch_env(monkeypatch)
|
|
email_service = EmailService(TestEmailSender())
|
|
email_service.settings = AppSettings()
|
|
return email_service
|
|
|
|
|
|
def test_email_disabled():
|
|
email_service = EmailService(TestEmailSender())
|
|
email_service.settings = AppSettings()
|
|
success = email_service.send_test_email(FAKE_ADDRESS)
|
|
assert not success
|
|
|
|
|
|
def test_test_email(email_service):
|
|
success = email_service.send_test_email(FAKE_ADDRESS)
|
|
assert success
|
|
|
|
|
|
def test_forgot_password_email(email_service):
|
|
success = email_service.send_forgot_password(FAKE_ADDRESS, "https://password-url.com")
|
|
assert success
|
|
|
|
|
|
def test_invitation_email(email_service):
|
|
success = email_service.send_invitation(FAKE_ADDRESS, "https://invitie-url.com")
|
|
assert success
|