A Python port of the Invisible Internet Project (I2P)
at main 81 lines 2.4 kB view raw
1"""Tests for SusiMail — TDD: tests before implementation.""" 2 3import pytest 4from i2p_apps.susimail.config import MailConfig 5from i2p_apps.susimail.message import MailMessage, parse_email 6from i2p_apps.susimail.folder import MailFolder 7 8 9class TestMailConfig: 10 def test_defaults(self): 11 cfg = MailConfig() 12 assert cfg.pop3_host == "127.0.0.1" 13 assert cfg.pop3_port == 7660 14 assert cfg.smtp_host == "127.0.0.1" 15 assert cfg.smtp_port == 7659 16 17 def test_custom(self): 18 cfg = MailConfig(pop3_port=1110, smtp_port=2525) 19 assert cfg.pop3_port == 1110 20 assert cfg.smtp_port == 2525 21 22 def test_identity(self): 23 cfg = MailConfig(identity="user@mail.i2p") 24 assert cfg.identity == "user@mail.i2p" 25 26 27class TestMailMessage: 28 def test_creation(self): 29 msg = MailMessage( 30 sender="alice@mail.i2p", 31 recipient="bob@mail.i2p", 32 subject="Hello", 33 body="Test message", 34 ) 35 assert msg.sender == "alice@mail.i2p" 36 assert msg.subject == "Hello" 37 38 def test_parse_email(self): 39 raw = ( 40 "From: alice@mail.i2p\r\n" 41 "To: bob@mail.i2p\r\n" 42 "Subject: Test\r\n" 43 "\r\n" 44 "Hello world\r\n" 45 ) 46 msg = parse_email(raw) 47 assert msg.sender == "alice@mail.i2p" 48 assert msg.recipient == "bob@mail.i2p" 49 assert msg.subject == "Test" 50 assert "Hello world" in msg.body 51 52 def test_parse_minimal(self): 53 raw = "From: x@y\r\nTo: a@b\r\nSubject: s\r\n\r\nbody" 54 msg = parse_email(raw) 55 assert msg.sender == "x@y" 56 assert msg.body == "body" 57 58 59class TestMailFolder: 60 def test_creation(self): 61 folder = MailFolder(name="Inbox") 62 assert folder.name == "Inbox" 63 assert len(folder.messages) == 0 64 65 def test_add_message(self): 66 folder = MailFolder(name="Inbox") 67 msg = MailMessage("a@b", "c@d", "Test", "body") 68 folder.add(msg) 69 assert len(folder.messages) == 1 70 71 def test_delete_message(self): 72 folder = MailFolder(name="Inbox") 73 msg = MailMessage("a@b", "c@d", "Test", "body") 74 folder.add(msg) 75 folder.delete(0) 76 assert len(folder.messages) == 0 77 78 def test_delete_out_of_range(self): 79 folder = MailFolder(name="Inbox") 80 with pytest.raises(IndexError): 81 folder.delete(0)