summaryrefslogtreecommitdiff
path: root/src/mailman/app/tests/test_moderation.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/app/tests/test_moderation.py')
-rw-r--r--src/mailman/app/tests/test_moderation.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/mailman/app/tests/test_moderation.py b/src/mailman/app/tests/test_moderation.py
index 72a25253e..a371d8520 100644
--- a/src/mailman/app/tests/test_moderation.py
+++ b/src/mailman/app/tests/test_moderation.py
@@ -19,16 +19,21 @@
__all__ = [
'TestModeration',
+ 'TestUnsubscription',
]
import unittest
from mailman.app.lifecycle import create_list
-from mailman.app.moderator import handle_message, hold_message
+from mailman.app.moderator import (
+ handle_message, handle_subscription, handle_unsubscription, hold_message,
+ hold_subscription, hold_unsubscription)
from mailman.interfaces.action import Action
+from mailman.interfaces.member import DeliveryMode
from mailman.interfaces.messages import IMessageStore
from mailman.interfaces.requests import IListRequests
+from mailman.interfaces.subscriptions import RequestRecord
from mailman.runners.incoming import IncomingRunner
from mailman.runners.outgoing import OutgoingRunner
from mailman.runners.pipeline import PipelineRunner
@@ -148,3 +153,26 @@ Message-ID: <alpha>
'Forward of moderated message')
self.assertEqual(messages[0].msgdata['recipients'],
['zack@example.com'])
+
+
+
+class TestUnsubscription(unittest.TestCase):
+ """Test unsubscription requests."""
+
+ layer = SMTPLayer
+
+ def setUp(self):
+ self._mlist = create_list('test@example.com')
+ self._request_db = IListRequests(self._mlist)
+
+ def test_unsubscribe_defer(self):
+ # When unsubscriptions must be approved by the moderator, but the
+ # moderator defers this decision.
+ token = hold_subscription(
+ self._mlist,
+ RequestRecord('anne@example.org', 'Anne Person',
+ DeliveryMode.regular, 'en'))
+ handle_subscription(self._mlist, token, Action.accept)
+ # Now hold and handle an unsubscription request.
+ token = hold_unsubscription(self._mlist, 'anne@example.org')
+ handle_unsubscription(self._mlist, token, Action.defer)