annotate test/test_rfc2822.py @ 3945:1dd64778bc45

Mail improvements: - Implement new config option in mail-section "ignore_alternatives" to ignore alternatives in a multipart/alternative mail. The *last* text/plain part of the *first* multipart/alternative is used as the message, if ignore_alternatives is set all other alternative parts of the first multipart/alternative that contained a text/plain part are ignored. Other multipart/alternative or other multipart are attached as before. This fixes [SF#959811] "Multipart/alternative handling considered bad". Note that this also changes which text/plain part is attached as the message if there are several text/plain parts in a multipart: Previously the *first* text/plain would be attached. Now we attach the *last* one, this is more in line with rfc 2046, sec. 5.1.4. according to Philipp Gortan. - Fix bug in attachment of text parts: If there are multiple text/plain parts in a nested multipart, the previous code would attach the multipart serialisation instead of the text/plain serialisation as a file to the issue in some cases. - Add regression tests for the new config-option and bug-fixes above.
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Wed, 14 Nov 2007 14:57:47 +0000
parents 97f9fc0bc0ea
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3519
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 from roundup.rfc2822 import decode_header, encode_header
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 import unittest, time
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 class RFC2822TestCase(unittest.TestCase):
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 def testDecode(self):
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 src = 'Re: [it_issue3] '\
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 '=?ISO-8859-1?Q?Ren=E9s_[resp=3Dg=2Cstatus=3D?= '\
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 '=?ISO-8859-1?Q?feedback]?='
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 result = 'Re: [it_issue3] Ren\xc3\xa9s [resp=g,status=feedback]'
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 self.assertEqual(decode_header(src), result)
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 src = 'Re: [it_issue3]'\
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14 ' =?ISO-8859-1?Q?Ren=E9s_[resp=3Dg=2Cstatus=3D?=' \
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 ' =?ISO-8859-1?Q?feedback]?='
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16 result = 'Re: [it_issue3] Ren\xc3\xa9s [resp=g,status=feedback]'
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 self.assertEqual(decode_header(src), result)
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19 def testEncode(self):
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 src = 'Re: [it_issue3] Ren\xc3\xa9s [status=feedback]'
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 result = '=?utf-8?q?Re:_[it=5Fissue3]_Ren=C3=A9s_[status=3Dfeedback]?='
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 self.assertEqual(encode_header(src), result)
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
3639
97f9fc0bc0ea Yet another rfc2822 encoding patch: '?' must be escaped.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3519
diff changeset
24 src = 'Was machen\xc3\xbc und Fragezeichen?'
97f9fc0bc0ea Yet another rfc2822 encoding patch: '?' must be escaped.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3519
diff changeset
25 result = '=?utf-8?q?Was_machen=C3=BC_und_Fragezeichen=3F?='
97f9fc0bc0ea Yet another rfc2822 encoding patch: '?' must be escaped.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3519
diff changeset
26 self.assertEqual(encode_header(src), result)
97f9fc0bc0ea Yet another rfc2822 encoding patch: '?' must be escaped.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3519
diff changeset
27
3519
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 def test_suite():
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 suite = unittest.TestSuite()
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 suite.addTest(unittest.makeSuite(RFC2822TestCase))
0c34f5a116ef additional header encode/decode fixes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 return suite

Roundup Issue Tracker: http://roundup-tracker.org/