import importlib import pytest server_app_module = importlib.import_module("server.app") app = server_app_module.app @pytest.fixture def client(): with app.test_client() as client: yield client def login(client): return client.post('/auth/login', data={'username': 'admin', 'password': 'admin'}) def test_email_template_list_requires_auth(client): resp = client.get('/admin/api/email-templates') assert resp.status_code == 302 assert resp.headers['Location'] == '/auth/login' def test_list_email_templates_returns_metadata(client): login(client) resp = client.get('/admin/api/email-templates') assert resp.status_code == 200 payload = resp.get_json() assert payload['status'] == 'ok' assert isinstance(payload['templates'], list) assert payload['templates'][0]['id'] == 'newsletter_confirmation' def test_get_email_template_returns_content(client): login(client) resp = client.get('/admin/api/email-templates/newsletter_confirmation') assert resp.status_code == 200 payload = resp.get_json() assert payload['status'] == 'ok' template = payload['template'] assert template['id'] == 'newsletter_confirmation' assert 'content' in template def test_update_email_template_persists_content(client): login(client) new_content = '
Updated template {{email}}
' resp = client.put( '/admin/api/email-templates/newsletter_confirmation', json={'content': new_content}, ) assert resp.status_code == 200 payload = resp.get_json() assert payload['status'] == 'ok' assert payload['template']['content'] == new_content # Fetch again to ensure persistence resp_get = client.get('/admin/api/email-templates/newsletter_confirmation') assert resp_get.status_code == 200 template = resp_get.get_json()['template'] assert template['content'] == new_content def test_update_email_template_requires_content(client): login(client) resp = client.put( '/admin/api/email-templates/newsletter_confirmation', json={'content': ' '}, ) assert resp.status_code == 400 payload = resp.get_json() assert payload['status'] == 'error'