annotate test/test_multipart.py @ 4492:5d43b2a5eb69

test that announcement.txt is pure ASCII... ...required at least up to python2.5 by distutils. (Note tht doc/announcement.txt is the *old* announcement from the last release, I've changed it so that setup.py will work for now and to illustrate what needed to be changed).
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Wed, 20 Apr 2011 13:12:53 +0000
parents 0bb3054274b8
children 6e3e4f24c753
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
1 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
3 # This module is free software, and you may redistribute it and/or modify
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
4 # under the same terms as Python, so long as this copyright message and
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
5 # disclaimer are retained in their original form.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
6 #
214
18134bffab37 stupid typo
Richard Jones <richard@users.sourceforge.net>
parents: 213
diff changeset
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
213
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
10 # POSSIBILITY OF SUCH DAMAGE.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
11 #
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d45384bc6420 Added the copyright/license notice to (nearly) all files...
Richard Jones <richard@users.sourceforge.net>
parents: 127
diff changeset
17 #
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
18 # $Id: test_multipart.py,v 1.8 2007-09-22 07:25:35 jpend Exp $
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
20 import unittest
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
21 from cStringIO import StringIO
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 from roundup.mailgw import Message
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
25 class TestMessage(Message):
4425
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
26 # A note on message/rfc822: The content of such an attachment is an
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
27 # email with at least one header line. RFC2046 tells us: """ A
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
28 # media type of "message/rfc822" indicates that the body contains an
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
29 # encapsulated message, with the syntax of an RFC 822 message.
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
30 # However, unlike top-level RFC 822 messages, the restriction that
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
31 # each "message/rfc822" body must include a "From", "Date", and at
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
32 # least one destination header is removed and replaced with the
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
33 # requirement that at least one of "From", "Subject", or "Date" must
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
34 # be present."""
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
35 # This means we have to add a newline after the mime-header before
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
36 # the subject, otherwise the subject is part of the mime header not
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
37 # part of the email header.
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
38 table = {'multipart/signed': ' boundary="boundary-%(indent)s";\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
39 'multipart/mixed': ' boundary="boundary-%(indent)s";\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
40 'multipart/alternative': ' boundary="boundary-%(indent)s";\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
41 'text/plain': ' name="foo.txt"\nfoo\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
42 'application/pgp-signature': ' name="foo.gpg"\nfoo\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
43 'application/pdf': ' name="foo.pdf"\nfoo\n',
4425
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
44 'message/rfc822': '\nSubject: foo\n\nfoo\n'}
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
45
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
46 def __init__(self, spec):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
47 """Create a basic MIME message according to 'spec'.
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
48
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
49 Each line of a spec has one content-type, which is optionally indented.
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
50 The indentation signifies how deep in the MIME hierarchy the
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
51 content-type is.
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
52
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
53 """
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
54 parts = []
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
55 for line in spec.splitlines():
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
56 content_type = line.strip()
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
57 if not content_type:
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
58 continue
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
59
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
60 indent = self.getIndent(line)
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
61 if indent:
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
62 parts.append('\n--boundary-%s\n' % indent)
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
63 parts.append('Content-type: %s;\n' % content_type)
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
64 parts.append(self.table[content_type] % {'indent': indent + 1})
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
65
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
66 Message.__init__(self, StringIO(''.join(parts)))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
67
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
68 def getIndent(self, line):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
69 """Get the current line's indentation, using four-space indents."""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
70 count = 0
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
71 for char in line:
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
72 if char != ' ':
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
73 break
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
74 count += 1
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
75 return count / 4
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
76
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 class MultipartTestCase(unittest.TestCase):
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78 def setUp(self):
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
79 self.fp = StringIO()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 w = self.fp.write
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81 w('Content-Type: multipart/mixed; boundary="foo"\r\n\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 w('This is a multipart message. Ignore this bit.\r\n')
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
83 w('\r\n--foo\r\n')
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 w('Content-Type: text/plain\r\n\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 w('Hello, world!\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 w('\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88 w('Blah blah\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 w('foo\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 w('-foo\r\n')
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
91 w('\r\n--foo\r\n')
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 w('Content-Type: multipart/alternative; boundary="bar"\r\n\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
94 w('This is a multipart message. Ignore this bit.\r\n')
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
95 w('\r\n--bar\r\n')
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
96
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
97 w('Content-Type: text/plain\r\n\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
98 w('Hello, world!\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
99 w('\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
100 w('Blah blah\r\n')
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
101 w('\r\n--bar\r\n')
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
102
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
103 w('Content-Type: text/html\r\n\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
104 w('<b>Hello, world!</b>\r\n')
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
105 w('\r\n--bar--\r\n')
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
106 w('\r\n--foo\r\n')
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
107
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
108 w('Content-Type: text/plain\r\n\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
109 w('Last bit\n')
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
110 w('\r\n--foo--\r\n')
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
111 self.fp.seek(0)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
112
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
113 def testMultipart(self):
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
114 m = Message(self.fp)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
115 self.assert_(m is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
116
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
117 # skip the first bit
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
118 p = m.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
119 self.assert_(p is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
120 self.assertEqual(p.fp.read(),
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
121 'This is a multipart message. Ignore this bit.\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
122
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
123 # first text/plain
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
124 p = m.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
125 self.assert_(p is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
126 self.assertEqual(p.gettype(), 'text/plain')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
127 self.assertEqual(p.fp.read(),
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
128 'Hello, world!\r\n\r\nBlah blah\r\nfoo\r\n-foo\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
129
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
130 # sub-multipart
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
131 p = m.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
132 self.assert_(p is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
133 self.assertEqual(p.gettype(), 'multipart/alternative')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
134
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
135 # sub-multipart text/plain
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
136 q = p.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
137 self.assert_(q is not None)
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
138 q = p.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
139 self.assert_(q is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
140 self.assertEqual(q.gettype(), 'text/plain')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
141 self.assertEqual(q.fp.read(), 'Hello, world!\r\n\r\nBlah blah\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
142
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
143 # sub-multipart text/html
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
144 q = p.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
145 self.assert_(q is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
146 self.assertEqual(q.gettype(), 'text/html')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
147 self.assertEqual(q.fp.read(), '<b>Hello, world!</b>\r\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
148
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
149 # sub-multipart end
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
150 q = p.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
151 self.assert_(q is None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
152
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
153 # final text/plain
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
154 p = m.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
155 self.assert_(p is not None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
156 self.assertEqual(p.gettype(), 'text/plain')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
157 self.assertEqual(p.fp.read(),
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
158 'Last bit\n')
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
159
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
160 # end
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
161 p = m.getpart()
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
162 self.assert_(p is None)
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
163
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
164 def TestExtraction(self, spec, expected):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
165 self.assertEqual(TestMessage(spec).extract_content(), expected)
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
166
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
167 def testTextPlain(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
168 self.TestExtraction('text/plain', ('foo\n', []))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
169
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
170 def testAttachedTextPlain(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
171 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
172 multipart/mixed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
173 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
174 text/plain""",
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
175 ('foo\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
176 [('foo.txt', 'text/plain', 'foo\n')]))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
177
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
178 def testMultipartMixed(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
179 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
180 multipart/mixed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
181 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
182 application/pdf""",
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
183 ('foo\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
184 [('foo.pdf', 'application/pdf', 'foo\n')]))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
185
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
186 def testMultipartAlternative(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
187 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
188 multipart/alternative
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
189 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
190 application/pdf
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
191 """, ('foo\n', [('foo.pdf', 'application/pdf', 'foo\n')]))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
192
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
193 def testDeepMultipartAlternative(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
194 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
195 multipart/mixed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
196 multipart/alternative
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
197 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
198 application/pdf
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
199 """, ('foo\n', [('foo.pdf', 'application/pdf', 'foo\n')]))
3915
6b3919328381 support for receiving OpenPGP MIME messages (signed or encrypted)
Justus Pendleton <jpend@users.sourceforge.net>
parents: 1975
diff changeset
200
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
201 def testSignedText(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
202 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
203 multipart/signed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
204 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
205 application/pgp-signature""", ('foo\n', []))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
206
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
207 def testSignedAttachments(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
208 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
209 multipart/signed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
210 multipart/mixed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
211 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
212 application/pdf
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
213 application/pgp-signature""",
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
214 ('foo\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
215 [('foo.pdf', 'application/pdf', 'foo\n')]))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
216
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
217 def testAttachedSignature(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
218 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
219 multipart/mixed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
220 text/plain
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
221 application/pgp-signature""",
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
222 ('foo\n',
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
223 [('foo.gpg', 'application/pgp-signature', 'foo\n')]))
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
224
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
225 def testMessageRfc822(self):
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
226 self.TestExtraction("""
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
227 multipart/mixed
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
228 message/rfc822""",
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
229 (None,
4425
0bb3054274b8 - some formatting
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents: 3915
diff changeset
230 [('foo.eml', 'message/rfc822', 'Subject: foo\n\nfoo\n')]))
1975
30a444b7b212 *** empty log message ***
Johannes Gijsbers <jlgijsbers@users.sourceforge.net>
parents: 1873
diff changeset
231
1873
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
232 def test_suite():
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
233 suite = unittest.TestSuite()
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
234 suite.addTest(unittest.makeSuite(MultipartTestCase))
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
235 return suite
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
236
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
237 if __name__ == '__main__':
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
238 runner = unittest.TextTestRunner()
f63aa57386b0 Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
239 unittest.main(testRunner=runner)
110
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
240
19686b60e410 Multipart message class has the getPart method now. Added some tests for it.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
241
127
0791d13baea7 Added vim command to all source so that we don't get no steenkin' tabs :)
Richard Jones <richard@users.sourceforge.net>
parents: 110
diff changeset
242 # vim: set filetype=python ts=4 sw=4 et si

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