- Timestamp:
- 10/26/08 09:03:50 (2 months ago)
- Location:
- trunk
- Files:
-
- 3 modified
-
tests/test_custom_provider_injection.py (modified) (1 diff)
-
tests/test_message.py (modified) (3 diffs)
-
turbomail/message.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/test_custom_provider_injection.py
r103 r108 29 29 self.manager = DummyManager() 30 30 self.provider = DummyProvider() 31 self.message = Message( from_=("Author", "author@example.com"),31 self.message = Message(author=("Author", "author@example.com"), 32 32 to=("Recipient", "recipient@example.com"), 33 33 subject="Test message subject.", -
trunk/tests/test_message.py
r107 r108 1 1 #!/usr/bin/env python 2 2 # encoding: utf-8 3 4 3 """Test the TurboMail Message class.""" 5 4 … … 12 11 from email.MIMEText import MIMEText 13 12 import logging 13 import re 14 14 import unittest 15 15 … … 90 90 91 91 msg = email.message_from_string(str(self.message)) 92 encoded_name = "%s <%s>" % ( str(Header(from_name, "ISO-8859-1")), from_email)92 encoded_name = "%s <%s>" % (str(Header(from_name, "ISO-8859-1")), from_email) 93 93 self.assertEqual(encoded_name, msg['From']) 94 95 def test_multiple_authors(self): 96 """For better readability, provide a property 'authors' (alias for 97 author).""" 98 self.message.authors = 'foo@example.com' 99 self.assertEqual(self.message.authors, self.message.author) 100 101 self.message.authors = ['bar@example.com', 'baz@example.com'] 102 self.message.sender = 'foo@example.com' 103 msg = email.message_from_string(str(self.message)) 104 from_addresses = re.split(r",\n?\s+", msg['From']) 105 self.assertEqual(['bar@example.com', 'baz@example.com'], from_addresses) 106 107 def test_multiple_authors_require_sender(self): 108 self.message.authors = ['bar@example.com', 'baz@example.com'] 109 self.assertRaises(ValueError, str, self.message) 110 111 self.message.sender = 'bar@example.com' 112 str(self.message) 113 114 def test_permit_one_sender_at_most(self): 115 self.message.sender = ['bar@example.com', 'baz@example.com'] 116 self.assertRaises(ValueError, str, self.message) 117 118 self.message.sender = 'bar@example.com' 119 str(self.message) 120 121 def test_raise_error_for_unknown_kwargs_at_class_instantiation(self): 122 self.assertRaises(TypeError, Message, invalid_argument=True) 123 124 -
trunk/turbomail/message.py
r107 r108 4 4 __version__ = "$Revision$" 5 5 6 from turbomail import release7 from turbomail.util import AddressList8 from turbomail.control import interface9 6 import os 7 import logging 10 8 11 9 import email.Message … … 18 16 from email.Header import Header 19 17 20 import logging 18 from turbomail import release 19 from turbomail.util import AddressList 20 from turbomail.control import interface 21 22 23 __all__ = ['WrappedMessage', 'Message'] 24 21 25 log = logging.getLogger("turbomail.message") 22 26 23 24 __all__ = ['WrappedMessage', 'Message']25 27 26 28 … … 55 57 """ 56 58 super(Message, self).__init__() 57 # if sender != None and author == None -> warning, sender -> author, sender=None58 # if recipient != None and to == None -> warning, recipient -> to59 # recipients support later60 59 61 60 def kwpop(name, configkey=None, default=None): 62 61 value = None 63 62 if configkey != None: 64 value = kw. get(name, interface.config.get(configkey, default))63 value = kw.pop(name, interface.config.get(configkey, default)) 65 64 else: 66 value = kw. get(name, default)65 value = kw.pop(name, default) 67 66 return value 68 67 … … 95 94 self._processed = False 96 95 self._dirty = False 97 96 if len(kw) > 0: 97 parameter_name = kw.keys()[0] 98 error_msg = "__init__() got an unexpected keyword argument '%s'" 99 raise TypeError(error_msg % parameter_name) 98 100 99 101 author = AddressList.protected('_author') … … 105 107 disposition = AddressList.protected('_disposition') 106 108 109 # just for better readability if you have multiple authors 110 authors = author 107 111 108 112 def __setattr__(self, name, value): … … 169 173 assert self.to or self.cc or self.bcc, "You must specify at least one recipient." 170 174 assert self.plain, "You must provide plain text content." 171 175 176 if len(self.author) > 1 and len(self.sender) == 0: 177 raise ValueError('If there are multiple authors of message, you must specify a sender!') 178 if len(self.sender) > 1: 179 raise ValueError('You must not specify more than one sender!') 180 172 181 if not self._dirty and self._processed and not interface.config.get("mail.debug", False): 173 182 return self._mime
