diff options
| author | Aurélien Bompard | 2016-01-20 10:24:19 +0100 |
|---|---|---|
| committer | Aurélien Bompard | 2016-01-20 10:24:19 +0100 |
| commit | cd5607de2a4377d22953788e6c07152d9519b154 (patch) | |
| tree | ebc9d63c79e3ed3cfc0641d289850d89f87f7d38 | |
| parent | 29ad7d4a658081a442c6cb120943f7014d36dade (diff) | |
| download | mailman-cd5607de2a4377d22953788e6c07152d9519b154.tar.gz mailman-cd5607de2a4377d22953788e6c07152d9519b154.tar.zst mailman-cd5607de2a4377d22953788e6c07152d9519b154.zip | |
| -rw-r--r-- | src/mailman/rest/members.py | 3 | ||||
| -rw-r--r-- | src/mailman/rest/tests/test_membership.py | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py index ad027b119..f673cfaa5 100644 --- a/src/mailman/rest/members.py +++ b/src/mailman/rest/members.py @@ -276,6 +276,9 @@ class AllMembers(_MemberBase): except MissingPreferredAddressError: bad_request(response, b'User has no preferred address') return + except MembershipIsBannedError: + bad_request(response, b'Membership is banned') + return if token is None: assert token_owner is TokenOwner.no_one, token_owner # The subscription completed. Let's get the resulting member diff --git a/src/mailman/rest/tests/test_membership.py b/src/mailman/rest/tests/test_membership.py index 6df10fbd1..af8da3ee0 100644 --- a/src/mailman/rest/tests/test_membership.py +++ b/src/mailman/rest/tests/test_membership.py @@ -29,6 +29,7 @@ import unittest from mailman.app.lifecycle import create_list from mailman.config import config from mailman.database.transaction import transaction +from mailman.interfaces.bans import IBanManager from mailman.interfaces.member import DeliveryMode, MemberRole from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import ( @@ -359,6 +360,18 @@ class TestMembership(unittest.TestCase): self.assertEqual(headers.status, 204) self.assertEqual(len(list(self._mlist.moderators.members)), 0) + def test_banned_member_tries_to_join(self): + # A user tries to join a list they are banned from. + with transaction(): + IBanManager(self._mlist).ban('anne@example.com') + with self.assertRaises(HTTPError) as cm: + call_api('http://localhost:9001/3.0/members', { + 'list_id': 'test.example.com', + 'subscriber': 'anne@example.com', + }) + self.assertEqual(cm.exception.code, 400) + self.assertEqual(cm.exception.reason, b'Membership is banned') + class CustomLayer(ConfigLayer): |
