~sambuddhabasu1/mailman/fix_mailman_run_error

« back to all changes in this revision

Viewing changes to src/mailman/app/tests/test_membership.py

  • Committer: Barry Warsaw
  • Date: 2014-03-02 21:38:32 UTC
  • Revision ID: barry@list.org-20140302213832-tkgvano62vsw67r0
* Module coding style consistency.
* handle_SubscriptionEvent(): We're always guaranteed to get a language from a
  member, since lookup falls back ultimately to the system preferences.  So
  this method can be simplified.
* Bump up code coverage for several modules.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""Tests of application level membership functions."""
19
19
 
20
 
from __future__ import absolute_import, unicode_literals
 
20
from __future__ import absolute_import, print_function, unicode_literals
21
21
 
22
22
__metaclass__ = type
23
23
__all__ = [
 
24
    'TestAddMember',
 
25
    'TestAddMemberPassword',
 
26
    'TestDeleteMember',
24
27
    ]
25
28
 
26
29
 
29
32
from zope.component import getUtility
30
33
 
31
34
from mailman.app.lifecycle import create_list
32
 
from mailman.app.membership import add_member
 
35
from mailman.app.membership import add_member, delete_member
33
36
from mailman.core.constants import system_preferences
34
37
from mailman.interfaces.bans import IBanManager
35
38
from mailman.interfaces.member import (
36
 
    AlreadySubscribedError, DeliveryMode, MemberRole, MembershipIsBannedError)
 
39
    AlreadySubscribedError, DeliveryMode, MemberRole, MembershipIsBannedError,
 
40
    NotAMemberError)
37
41
from mailman.interfaces.usermanager import IUserManager
38
42
from mailman.testing.layers import ConfigLayer
39
43
 
40
44
 
41
45
 
42
 
class AddMemberTest(unittest.TestCase):
 
46
class TestAddMember(unittest.TestCase):
43
47
    layer = ConfigLayer
44
48
 
45
49
    def setUp(self):
70
74
        # Test that members who are banned by specific address cannot
71
75
        # subscribe to the mailing list.
72
76
        IBanManager(self._mlist).ban('anne@example.com')
73
 
        self.assertRaises(
74
 
            MembershipIsBannedError,
75
 
            add_member, self._mlist, 'anne@example.com', 'Anne Person',
76
 
            '123', DeliveryMode.regular, system_preferences.preferred_language)
 
77
        with self.assertRaises(MembershipIsBannedError) as cm:
 
78
            add_member(self._mlist, 'anne@example.com', 'Anne Person',
 
79
                       '123', DeliveryMode.regular,
 
80
                       system_preferences.preferred_language)
 
81
        self.assertEqual(
 
82
            str(cm.exception),
 
83
            'anne@example.com is not allowed to subscribe to test@example.com')
77
84
 
78
85
    def test_add_member_globally_banned(self):
79
86
        # Test that members who are banned by specific address cannot
165
172
 
166
173
 
167
174
 
168
 
class AddMemberPasswordTest(unittest.TestCase):
 
175
class TestAddMemberPassword(unittest.TestCase):
169
176
    layer = ConfigLayer
170
177
 
171
178
    def setUp(self):
177
184
                            'Anne Person', 'abc', DeliveryMode.regular,
178
185
                            system_preferences.preferred_language)
179
186
        self.assertEqual(member.user.password, '{plaintext}abc')
 
187
 
 
188
 
 
189
 
 
190
class TestDeleteMember(unittest.TestCase):
 
191
    layer = ConfigLayer
 
192
 
 
193
    def setUp(self):
 
194
        self._mlist = create_list('test@example.com')
 
195
 
 
196
    def test_delete_member_not_a_member(self):
 
197
        # Try to delete an address which is not a member of the mailing list.
 
198
        with self.assertRaises(NotAMemberError) as cm:
 
199
            delete_member(self._mlist, 'noperson@example.com')
 
200
        self.assertEqual(
 
201
            str(cm.exception),
 
202
            'noperson@example.com is not a member of test@example.com')