class MailAccount_TestCase(PresenceAccount_TestCase): def setUp(self): PresenceAccount_TestCase.setUp(self, tables=[MailAccount]) self.account = MailAccount(user=User(jid="*****@*****.**"), name="account1", jid="*****@*****.**") self.account_class = MailAccount def make_test(email_type, tested_func, expected_res): def inner(self): encoded, multipart, header = email_type email = email_generator.generate(encoded, multipart, header) part = tested_func(self, email) self.assertEquals(part, expected_res) return inner test_get_decoded_part_not_encoded = make_test( (False, False, False), lambda self, email: self.account.get_decoded_part(email, None), u"Not encoded single part", ) test_get_decoded_part_encoded = make_test( (True, False, False), lambda self, email: self.account.get_decoded_part(email, None), u"Encoded single part with 'iso-8859-15' charset (éàê)", ) test_format_message_summary_not_encoded = make_test( (False, False, True), lambda self, email: self.account.format_message_summary(email), (u"From : not encoded from\nSubject : not encoded subject\n\n", u"not encoded from"), ) test_format_message_summary_encoded = make_test( (True, False, True), lambda self, email: self.account.format_message_summary(email), (u"From : encoded from (éàê)\nSubject : encoded subject " + u"(éàê)\n\n", u"encoded from (éàê)"), ) test_format_message_summary_partial_encoded = make_test( (True, False, True), lambda self, email: email.replace_header("Subject", '" ' + str(email["Subject"]) + ' " not encoded part') or email.replace_header("From", '" ' + str(email["From"]) + ' " not encoded part') or self.account.format_message_summary(email), ( u'From : "encoded from (éàê)" not encoded part\nSubject ' + u': "encoded subject (éàê)" not encoded part\n\n', u'"encoded from (éàê)" not encoded part', ), ) test_format_message_single_not_encoded = make_test( (False, False, True), lambda self, email: self.account.format_message(email), ( u"From : not encoded from\nSubject : not encoded subject" + u"\n\nNot encoded single part\n", u"not encoded from", ), ) test_format_message_single_encoded = make_test( (True, False, True), lambda self, email: self.account.format_message(email), ( u"From : encoded from (éàê)\nSubject : encoded subject " + u"(éàê)\n\nEncoded single part with 'iso-8859-15' charset" + u" (éàê)\n", u"encoded from (éàê)", ), ) test_format_message_multi_not_encoded = make_test( (False, True, True), lambda self, email: self.account.format_message(email), ( u"From : not encoded from\nSubject : not encoded subject" + u"\n\nNot encoded multipart1\nNot encoded multipart2\n", u"not encoded from", ), ) test_format_message_multi_encoded = make_test( (True, True, True), lambda self, email: self.account.format_message(email), ( u"From : encoded from (éàê)\nSubject : encoded subject (éà" + u"ê)\n\nutf-8 multipart1 with no charset (éàê)" + u"\nEncoded multipart2 with 'iso-8859-15' charset (éàê)\n" + u"Encoded multipart3 with no charset (éàê)\n", u"encoded from (éàê)", ), ) def test_get_default_status_msg(self): """ Get default status message for MailAccount. Should raise NotImplementedError because get_type() method is not implemented """ try: self.account.get_default_status_msg(Lang.en) except NotImplementedError: return fail("No NotImplementedError raised")