diff options
Diffstat (limited to 'src/mailman/rest')
| -rw-r--r-- | src/mailman/rest/members.py | 7 | ||||
| -rw-r--r-- | src/mailman/rest/tests/test_membership.py | 15 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py index ba5c3c35f..3ff712259 100644 --- a/src/mailman/rest/members.py +++ b/src/mailman/rest/members.py @@ -17,6 +17,7 @@ """REST for members.""" +from lazr.config import as_boolean from mailman.app.membership import add_member, delete_member from mailman.interfaces.action import Action from mailman.interfaces.address import IAddress @@ -204,9 +205,9 @@ class AllMembers(_MemberBase): display_name=str, delivery_mode=enum_validator(DeliveryMode), role=enum_validator(MemberRole), - pre_verified=bool, - pre_confirmed=bool, - pre_approved=bool, + pre_verified=as_boolean, + pre_confirmed=as_boolean, + pre_approved=as_boolean, _optional=('delivery_mode', 'display_name', 'role', 'pre_verified', 'pre_confirmed', 'pre_approved')) arguments = validator(request) diff --git a/src/mailman/rest/tests/test_membership.py b/src/mailman/rest/tests/test_membership.py index 6b4f5195a..e5a2ce283 100644 --- a/src/mailman/rest/tests/test_membership.py +++ b/src/mailman/rest/tests/test_membership.py @@ -98,6 +98,21 @@ class TestMembership(unittest.TestCase): self.assertEqual(cm.exception.code, 409) self.assertEqual(cm.exception.reason, 'Member already subscribed') + def test_try_to_join_a_list_twice_issue260(self): + with transaction(): + anne = self._usermanager.create_address('anne@example.com') + self._mlist.subscribe(anne) + with self.assertRaises(HTTPError) as cm: + call_api('http://localhost:9001/3.0/members', { + 'list_id': 'test.example.com', + 'subscriber': 'anne@example.com', + 'pre_verified': False, + 'pre_confirmed': False, + 'pre_approved': False, + }) + self.assertEqual(cm.exception.code, 409) + self.assertEqual(cm.exception.reason, 'Member already subscribed') + def test_subscribe_user_without_preferred_address(self): with transaction(): getUtility(IUserManager).create_user('anne@example.com') |
