Disable quilt.
[mspang/vmailman.git] / tests / test_safedict.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 SafeDict.py module
18 """
19
20 import email
21 import unittest
22
23 from Mailman import SafeDict
24
25
26 \f
27 class TestSafeDict(unittest.TestCase):
28     def test_okay(self):
29         sd = SafeDict.SafeDict({'foo': 'bar'})
30         si = '%(foo)s' % sd
31         self.assertEqual(si, 'bar')
32
33     def test_key_error(self):
34         sd = SafeDict.SafeDict({'foo': 'bar'})
35         si = '%(baz)s' % sd
36         self.assertEqual(si, '%(baz)s')
37
38     def test_key_error_not_string(self):
39         key = ()
40         sd = SafeDict.SafeDict({})
41         self.assertEqual(sd[key], '<Missing key: ()>')
42
43
44 \f
45 class TestMsgSafeDict(unittest.TestCase):
46     def setUp(self):
47         self._msg = email.message_from_string("""To: foo
48 From: bar
49 Subject: baz
50 Cc: aperson@dom.ain
51 Cc: bperson@dom.ain
52
53 """)
54
55     def test_normal_key(self):
56         sd = SafeDict.MsgSafeDict(self._msg, {'key': 'value'})
57         si = '%(key)s' % sd
58         self.assertEqual(si, 'value')
59
60     def test_msg_key(self):
61         sd = SafeDict.MsgSafeDict(self._msg, {'to': 'value'})
62         si = '%(msg_to)s' % sd
63         self.assertEqual(si, 'foo')
64
65     def test_allmsg_key(self):
66         sd = SafeDict.MsgSafeDict(self._msg, {'cc': 'value'})
67         si = '%(allmsg_cc)s' % sd
68         self.assertEqual(si, 'aperson@dom.ain, bperson@dom.ain')
69
70     def test_msg_no_key(self):
71         sd = SafeDict.MsgSafeDict(self._msg)
72         si = '%(msg_date)s' % sd
73         self.assertEqual(si, 'n/a')
74
75     def test_allmsg_no_key(self):
76         sd = SafeDict.MsgSafeDict(self._msg)
77         si = '%(allmsg_date)s' % sd
78         self.assertEqual(si, 'n/a')
79
80     def test_copy(self):
81         sd = SafeDict.MsgSafeDict(self._msg, {'foo': 'bar'})
82         copy = sd.copy()
83         items = copy.items()
84         items.sort()
85         self.assertEqual(items, [
86             ('allmsg_cc', 'aperson@dom.ain, bperson@dom.ain'),
87             ('foo', 'bar'),
88             ('msg_from', 'bar'),
89             ('msg_subject', 'baz'),
90             ('msg_to', 'foo'),
91             ])
92
93 \f
94 def suite():
95     suite = unittest.TestSuite()
96     suite.addTest(unittest.makeSuite(TestSafeDict))
97     suite.addTest(unittest.makeSuite(TestMsgSafeDict))
98     return suite
99
100
101 \f
102 if __name__ == '__main__':
103     unittest.main(defaultTest='suite')