Files
contact.allucanget.biz/tests/test_email_templates_api.py
zwitschi e192086833
All checks were successful
CI / test (3.11) (push) Successful in 1m36s
CI / build-image (push) Successful in 1m27s
feat: Add email settings management and templates functionality
- Implemented email settings configuration in the admin panel, allowing for SMTP settings and notification preferences.
- Created a new template for email settings with fields for SMTP host, port, username, password, sender address, and recipients.
- Added JavaScript functionality to handle loading, saving, and validating email settings.
- Introduced email templates management, enabling the listing, editing, and saving of email templates.
- Updated navigation to include links to email settings and templates.
- Added tests for email settings and templates to ensure proper functionality and validation.
2025-11-15 11:12:23 +01:00

77 lines
2.2 KiB
Python

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 = '<p>Updated template {{email}}</p>'
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'