mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-04 03:03:18 -05:00 
			
		
		
		
	* feat(frontend): 💄 add recipe title * fix(frontend): 🐛 fixes #722 side-bar issue * feat(frontend): ✨ Add page titles to all pages * minor cleanup * refactor(backend): ♻️ rewrite scheduler to be more modulare and work * feat(frontend): ✨ start password reset functionality * refactor(backend): ♻️ refactor application settings to facilitate dependency injection * refactor(backend): 🔥 remove RECIPE_SETTINGS env variables in favor of group settings * formatting * refactor(backend): ♻️ align naming convention * feat(backend): ✨ password reset * test(backend): ✅ password reset * feat(frontend): ✨ self-service password reset * purge password schedule * update user creation for tests Co-authored-by: Hayden <hay-kot@pm.me>
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import pytest
 | 
						|
 | 
						|
from mealie.core.config import get_app_settings
 | 
						|
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())
 | 
						|
    get_app_settings.cache_clear()
 | 
						|
    email_service.settings = get_app_settings()
 | 
						|
    return email_service
 | 
						|
 | 
						|
 | 
						|
def test_email_disabled():
 | 
						|
    email_service = EmailService(TestEmailSender())
 | 
						|
    get_app_settings.cache_clear()
 | 
						|
    email_service.settings = get_app_settings()
 | 
						|
    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
 |