From ba2c7550b005255f75aaf3396f908cc3ead10032 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 28 Dec 2009 07:37:25 -0500 Subject: Some corner case tests. --- src/mailman/app/membership.py | 3 ++- src/mailman/interfaces/member.py | 1 + src/mailman/rest/configure.zcml | 14 ++++++++++++ src/mailman/rest/docs/membership.txt | 42 +++++++++++++++++++++++++++++++++++- 4 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/mailman/app/membership.py b/src/mailman/app/membership.py index 09ecf3a8b..cf7bb2419 100644 --- a/src/mailman/app/membership.py +++ b/src/mailman/app/membership.py @@ -36,7 +36,8 @@ from mailman.core.i18n import _ from mailman.email.message import OwnerNotification from mailman.email.validate import validate from mailman.interfaces.member import ( - AlreadySubscribedError, MemberRole, MembershipIsBannedError) + AlreadySubscribedError, MemberRole, MembershipIsBannedError, + NotAMemberError) from mailman.interfaces.usermanager import IUserManager diff --git a/src/mailman/interfaces/member.py b/src/mailman/interfaces/member.py index 66cf61581..6fe4f32ca 100644 --- a/src/mailman/interfaces/member.py +++ b/src/mailman/interfaces/member.py @@ -78,6 +78,7 @@ class MembershipError(MailmanError): """Base exception for all membership errors.""" +@error_status(400) class AlreadySubscribedError(MembershipError): """The member is already subscribed to the mailing list with this role.""" diff --git a/src/mailman/rest/configure.zcml b/src/mailman/rest/configure.zcml index 5bff5d563..cf08b331e 100644 --- a/src/mailman/rest/configure.zcml +++ b/src/mailman/rest/configure.zcml @@ -51,6 +51,20 @@ name="index.html" /> + + + >> set(member.mailing_list for member in elly.memberships.members) set([]) + + +Corner cases +============ + +For some reason Elly tries to join a mailing list that does not exist. + + >>> dump_json('http://localhost:8001/3.0/members', { + ... 'ws.op': 'join', + ... 'fqdn_listname': 'beta@example.com', + ... 'address': 'eperson@example.com', + ... 'real_name': 'Elly Person', + ... }) + Traceback (most recent call last): + ... + HTTPError: HTTP Error 400: Bad Request + +Then, she tries to leave a mailing list that does not exist. + + >>> dump_json('http://localhost:8001/3.0/members', { + ... 'ws.op': 'leave', + ... 'fqdn_listname': 'beta@example.com', + ... 'address': 'eperson@example.com', + ... 'real_name': 'Elly Person', + ... }) + Traceback (most recent call last): + ... + HTTPError: HTTP Error 400: Bad Request + +For some reason, Elly tries to leave the mailing list again, but she's already +been unsubscribed. + + >>> dump_json('http://localhost:8001/3.0/members', { + ... 'ws.op': 'leave', + ... 'fqdn_listname': 'alpha@example.com', + ... 'address': 'eperson@example.com', + ... }) + Traceback (most recent call last): + ... + HTTPError: HTTP Error 400: Bad Request -- cgit v1.2.3-70-g09d2