| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | """Test the TurboMail Message class.""" |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | import unittest |
|---|
| 8 | from turbomail.util import Address, AddressList |
|---|
| 9 | try: |
|---|
| 10 | from email.mime.text import MIMEText |
|---|
| 11 | except ImportError: |
|---|
| 12 | |
|---|
| 13 | from email.MIMEText import MIMEText |
|---|
| 14 | |
|---|
| 15 | import logging |
|---|
| 16 | logging.disable(logging.WARNING) |
|---|
| 17 | |
|---|
| 18 | |
|---|
| 19 | class TestAddress(unittest.TestCase): |
|---|
| 20 | def test_punycode(self): |
|---|
| 21 | addr = Address("Foo", u"foo@exámple.test") |
|---|
| 22 | self.assertEqual("Foo <foo@xn--exmple-qta.test>", str(addr)) |
|---|
| 23 | |
|---|
| 24 | def test_initialization_with_addresslist_which_contains_only_email(self): |
|---|
| 25 | emailaddress = 'foo@example.com' |
|---|
| 26 | address = Address(AddressList(emailaddress)) |
|---|
| 27 | self.assertEqual(emailaddress, str(address)) |
|---|
| 28 | |
|---|
| 29 | def test_initialization_with_addresslist_which_contains_tuple(self): |
|---|
| 30 | name = 'Foo' |
|---|
| 31 | emailaddress = 'foo@example.com' |
|---|
| 32 | address = Address(AddressList((name, emailaddress))) |
|---|
| 33 | self.assertEqual('%s <%s>' % (name, emailaddress), str(address)) |
|---|
| 34 | |
|---|
| 35 | def test_initialization_with_tuple(self): |
|---|
| 36 | name = 'Foo' |
|---|
| 37 | emailaddress = 'foo@example.com' |
|---|
| 38 | address = Address((name, emailaddress)) |
|---|
| 39 | self.assertEqual('%s <%s>' % (name, emailaddress), str(address)) |
|---|
| 40 | |
|---|
| 41 | def test_initialization_with_string(self): |
|---|
| 42 | emailaddress = 'foo@example.com' |
|---|
| 43 | address = Address(emailaddress) |
|---|
| 44 | self.assertEqual('%s' % emailaddress, str(address)) |
|---|
| 45 | |
|---|
| 46 | |
|---|
| 47 | |
|---|
| 48 | class TestAddressList(unittest.TestCase): |
|---|
| 49 | """Test the AddressList helper class.""" |
|---|
| 50 | |
|---|
| 51 | addresses = AddressList.protected('_addresses') |
|---|
| 52 | |
|---|
| 53 | def setUp(self): |
|---|
| 54 | self._addresses = AddressList() |
|---|
| 55 | |
|---|
| 56 | |
|---|
| 57 | def check(self, addresses, string): |
|---|
| 58 | self.assertEqual(self.addresses, addresses) |
|---|
| 59 | self.assertEqual(str(self.addresses), string) |
|---|
| 60 | |
|---|
| 61 | def test_assignment(self): |
|---|
| 62 | self.assertEqual(self.addresses, []) |
|---|
| 63 | |
|---|
| 64 | |
|---|
| 65 | addresses = "user@example.com" |
|---|
| 66 | self.addresses = addresses |
|---|
| 67 | self.check([addresses], addresses) |
|---|
| 68 | |
|---|
| 69 | |
|---|
| 70 | addresses = ["user1@example.com", "user2@example.com"] |
|---|
| 71 | self.addresses = addresses |
|---|
| 72 | self.check(addresses, ",\n ".join(addresses)) |
|---|
| 73 | |
|---|
| 74 | |
|---|
| 75 | addresses = ("Test User", "user@example.com") |
|---|
| 76 | self.addresses = addresses |
|---|
| 77 | self.check([addresses], "%s <%s>" % addresses) |
|---|
| 78 | |
|---|
| 79 | |
|---|
| 80 | addresses = [("Test User 1", "user1@example.com"), ("Test User 2", "user2@example.com")] |
|---|
| 81 | self.addresses = addresses |
|---|
| 82 | self.check(addresses, ",\n ".join(["%s <%s>" % i for i in addresses])) |
|---|
| 83 | |
|---|
| 84 | |
|---|
| 85 | del self.addresses |
|---|
| 86 | |
|---|
| 87 | def test_validation(self): |
|---|
| 88 | self.addresses.append("user.name+test@example.com.info") |
|---|
| 89 | self.addresses.append("eviluser@example.com\nTo: spammeduser@example.com\nFrom: spammeduser@example.com") |
|---|
| 90 | self.assertEqual(str(self.addresses[-1]), "eviluser@example.com") |
|---|
| 91 | |
|---|
| 92 | |
|---|
| 93 | self.addresses.append("bad@user@example.com") |
|---|
| 94 | self.assertEqual(str(self.addresses[-1]), "bad@user") |
|---|
| 95 | |
|---|
| 96 | self.assertRaises(ValueError, lambda: self.addresses.append("baduser.example.com")) |
|---|
| 97 | self.assertRaises(ValueError, lambda: self.addresses.append("bad-u+s+er@example.com")) |
|---|
| 98 | |
|---|
| 99 | |
|---|
| 100 | self.addresses.append("user@company") |
|---|
| 101 | self.assertEqual(str(self.addresses[-1]), "user@company") |
|---|
| 102 | |
|---|
| 103 | del self.addresses |
|---|