"""Unit tests for SMTP settings helpers in app.api.v1.settings.""" from app.api.v1.settings import ( SMTPSettingsUpdate, _build_smtp_payload, _serialize_smtp_payload, ) def test_serialize_masks_password_and_reports_configured(): serialized = _serialize_smtp_payload( { "host": "smtp.example.com", "port": 587, "username": "noreply@example.com", "password": "super-secret", "from_address": "noreply@example.com", "from_name": "Planet", "use_tls": False, "use_starttls": True, "timeout_seconds": 20, } ) assert serialized["configured"] is True assert serialized["password"]["configured"] is True assert "secret" not in serialized["password"]["preview"] def test_serialize_marks_unconfigured_when_host_missing(): serialized = _serialize_smtp_payload( { "host": "", "port": 587, "from_address": "", } ) assert serialized["configured"] is False assert serialized["password"]["configured"] is False def test_build_payload_preserves_password_when_placeholder_submitted(): current = { "host": "smtp.example.com", "port": 587, "username": "noreply@example.com", "password": "super-secret", "from_address": "noreply@example.com", "from_name": "Planet", "use_tls": False, "use_starttls": True, "timeout_seconds": 20, } preview = _serialize_smtp_payload(current)["password"]["preview"] update = SMTPSettingsUpdate( host="smtp.example.com", port=587, username="noreply@example.com", password=preview, from_address="noreply@example.com", ) merged = _build_smtp_payload(current, update) assert merged["password"] == "super-secret" def test_build_payload_replaces_password_when_new_value_submitted(): current = {"password": "old", "host": "", "port": 587, "from_address": ""} update = SMTPSettingsUpdate( host="smtp.example.com", port=587, password="new-secret", from_address="noreply@example.com", ) merged = _build_smtp_payload(current, update) assert merged["password"] == "new-secret" def test_build_payload_clears_password_when_requested(): current = {"password": "old"} update = SMTPSettingsUpdate( host="smtp.example.com", port=587, from_address="noreply@example.com", clear_password=True, ) merged = _build_smtp_payload(current, update) assert merged["password"] == ""