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