Disable quilt.
[mspang/vmailman.git] / tests / test_message.py
1 # Copyright (C) 2001 by the Free Software Foundation, Inc.
2 #
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
7
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software 
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16
17 """Unit tests for the various Message class methods.
18 """
19
20 import unittest
21 import email
22
23 from Mailman import Message
24 from Mailman import Version
25 from Mailman import Errors
26
27 from EmailBase import EmailBase
28
29
30 \f
31 class TestSentMessage(EmailBase):
32     def test_user_notification(self):
33         eq = self.assertEqual
34         unless = self.failUnless
35         msg = Message.UserNotification(
36             'aperson@dom.ain',
37             '_xtest@dom.ain',
38             'Your Test List',
39             'About your test list')
40         msg.send(self._mlist)
41         qmsg = email.message_from_string(self._readmsg())
42         eq(qmsg['subject'], 'Your Test List')
43         eq(qmsg['from'], '_xtest@dom.ain')
44         eq(qmsg['to'], 'aperson@dom.ain')
45         # The Message-ID: header has some time-variant information
46         msgid = qmsg['message-id']
47         unless(msgid.startswith('<mailman.'))
48         unless(msgid.endswith('._xtest@dom.ain>'))
49         eq(qmsg['sender'], '_xtest-admin@dom.ain')
50         eq(qmsg['errors-to'], '_xtest-admin@dom.ain')
51         eq(qmsg['x-beenthere'], '_xtest@dom.ain')
52         eq(qmsg['x-mailman-version'], Version.VERSION)
53         eq(qmsg['precedence'], 'bulk')
54         eq(qmsg['list-help'], '<mailto:_xtest-request@dom.ain?subject=help>')
55         eq(qmsg['list-post'], '<mailto:_xtest@dom.ain>')
56         eq(qmsg['list-subscribe'], """\
57 <http://www.dom.ain/mailman/listinfo/_xtest>,
58         <mailto:_xtest-request@dom.ain?subject=subscribe>""")
59         eq(qmsg['list-id'], '<_xtest.dom.ain>')
60         eq(qmsg['list-unsubscribe'], """\
61 <http://www.dom.ain/mailman/listinfo/_xtest>,
62         <mailto:_xtest-request@dom.ain?subject=unsubscribe>""")
63         eq(qmsg['list-archive'], '<http://www.dom.ain/pipermail/_xtest>')
64         eq(qmsg.get_payload(), 'About your test list')
65
66     def test_bounce_message(self):
67         eq = self.assertEqual
68         unless = self.failUnless
69         msg = email.message_from_string("""\
70 To: _xtest@dom.ain
71 From: nobody@dom.ain
72 Subject: and another thing
73
74 yadda yadda yadda
75 """, Message.Message)
76         self._mlist.BounceMessage(msg, {})
77         qmsg = email.message_from_string(self._readmsg())
78         unless(qmsg.is_multipart())
79         eq(len(qmsg.get_payload()), 2)
80         # The first payload is the details of the bounce action, and the
81         # second message is the message/rfc822 attachment of the original
82         # message.
83         msg1 = qmsg.get_payload(0)
84         eq(msg1.get_type(), 'text/plain')
85         eq(msg1.get_payload(), '[No bounce details are available]\n')
86         msg2 = qmsg.get_payload(1)
87         eq(msg2.get_type(), 'message/rfc822')
88         unless(not msg2.is_multipart())
89         msg3 = msg2.get_payload()
90         eq(msg3.get_payload(), 'yadda yadda yadda\n')
91
92
93 \f
94 def suite():
95     suite = unittest.TestSuite()
96     suite.addTest(unittest.makeSuite(TestSentMessage))
97     return suite
98
99
100 \f
101 if __name__ == '__main__':
102     unittest.main(defaultTest='suite')