62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from govoplan_core.mail.config import ImapServerConfig, normalize_split_transport_credentials
|
|
|
|
|
|
class MailConfigTests(unittest.TestCase):
|
|
def test_legacy_sent_folder_populates_standard_mapping(self) -> None:
|
|
config = ImapServerConfig.model_validate(
|
|
{"host": "imap.example.test", "sent_folder": " Sent Items "}
|
|
)
|
|
|
|
self.assertEqual("Sent Items", config.sent_folder)
|
|
self.assertIsNotNone(config.folder_mappings)
|
|
assert config.folder_mappings is not None
|
|
self.assertEqual("Sent Items", config.folder_mappings.sent)
|
|
|
|
def test_standard_sent_mapping_remains_legacy_append_default(self) -> None:
|
|
config = ImapServerConfig.model_validate(
|
|
{
|
|
"host": "imap.example.test",
|
|
"sent_folder": "Old Sent",
|
|
"folder_mappings": {
|
|
"inbox": " INBOX ",
|
|
"sent": "Sent Items",
|
|
"junk": " ",
|
|
},
|
|
}
|
|
)
|
|
|
|
self.assertEqual("Sent Items", config.sent_folder)
|
|
assert config.folder_mappings is not None
|
|
self.assertEqual("INBOX", config.folder_mappings.inbox)
|
|
self.assertEqual("Sent Items", config.folder_mappings.sent)
|
|
self.assertIsNone(config.folder_mappings.junk)
|
|
|
|
def test_normalize_split_transport_credentials_moves_legacy_auth_fields(self) -> None:
|
|
payload = normalize_split_transport_credentials(
|
|
{
|
|
"smtp": {"host": "smtp.example.test", "username": "smtp-user", "password": "smtp-secret"},
|
|
"imap": {"host": "imap.example.test", "enabled": True, "username": "imap-user"},
|
|
"credentials": {"smtp": {"username": "existing"}},
|
|
}
|
|
)
|
|
|
|
self.assertEqual(
|
|
{
|
|
"smtp": {"host": "smtp.example.test"},
|
|
"imap": {"host": "imap.example.test"},
|
|
"credentials": {
|
|
"smtp": {"username": "existing", "password": "smtp-secret"},
|
|
"imap": {"username": "imap-user"},
|
|
},
|
|
},
|
|
payload,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|