root / trunk / tests / test_address_list.py

Revision 120, 3.6 kB (checked in by fs, 4 weeks ago)

re-added the SMTP from functionality which was not honored by the SMTPTransport
renamed the envelope method in Message because an envelope normally has a sender and a recipient but this method was only about the SMTP from so I renamed it to envelope_sender.

Line 
1#!/usr/bin/env python
2# encoding: utf-8
3
4"""Test the TurboMail Message class."""
5
6
7import unittest
8from turbomail.util import Address, AddressList
9try:
10    from email.mime.text import MIMEText
11except ImportError:
12    # Python < 2.5 has no email.mime module
13    from email.MIMEText import MIMEText
14
15import logging
16logging.disable(logging.WARNING)
17
18
19class 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
48class 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    # Helper function to avoid repetition.
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        # A single address.
65        addresses = "user@example.com"
66        self.addresses = addresses
67        self.check([addresses], addresses)
68       
69        # A list of addresses.
70        addresses = ["user1@example.com", "user2@example.com"]
71        self.addresses = addresses
72        self.check(addresses, ",\n ".join(addresses))
73       
74        # A single named address.
75        addresses = ("Test User", "user@example.com")
76        self.addresses = addresses
77        self.check([addresses], "%s <%s>" % addresses)
78       
79        # A list of named addresses.
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        # Clean up our changes.
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        # Double-at symbols automatically strip from the second at on.
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        # Domains without TLDs are now supported.
100        self.addresses.append("user@company")
101        self.assertEqual(str(self.addresses[-1]), "user@company")
102       
103        del self.addresses
Note: See TracBrowser for help on using the browser.