diff options
| author | Aurélien Bompard | 2015-03-25 17:04:52 +0100 |
|---|---|---|
| committer | Aurélien Bompard | 2015-03-25 17:04:52 +0100 |
| commit | e4527bd505ca3019de5d7bd699732b848b6f6afc (patch) | |
| tree | c794481e54e2860e380340b859ce9ddf8ad77ac7 /src/mailman/app/tests/test_subscriptions.py | |
| parent | 0ab304f8fb2c853cc9e65eccd33274ed8618a5ce (diff) | |
| download | mailman-e4527bd505ca3019de5d7bd699732b848b6f6afc.tar.gz mailman-e4527bd505ca3019de5d7bd699732b848b6f6afc.tar.zst mailman-e4527bd505ca3019de5d7bd699732b848b6f6afc.zip | |
Diffstat (limited to 'src/mailman/app/tests/test_subscriptions.py')
| -rw-r--r-- | src/mailman/app/tests/test_subscriptions.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mailman/app/tests/test_subscriptions.py b/src/mailman/app/tests/test_subscriptions.py index 72892b886..7bb59bb45 100644 --- a/src/mailman/app/tests/test_subscriptions.py +++ b/src/mailman/app/tests/test_subscriptions.py @@ -30,11 +30,13 @@ from mailman.app.lifecycle import create_list from mailman.app.subscriptions import SubscriptionWorkflow from mailman.interfaces.address import InvalidEmailAddressError from mailman.interfaces.member import MemberRole, MissingPreferredAddressError +from mailman.interfaces.requests import IListRequests, RequestType from mailman.interfaces.subscriptions import ( MissingUserError, ISubscriptionService) from mailman.testing.layers import ConfigLayer from mailman.interfaces.mailinglist import SubscriptionPolicy from mailman.interfaces.usermanager import IUserManager +from mailman.utilities.datetime import now from zope.component import getUtility @@ -98,3 +100,28 @@ class TestSubscriptionWorkflow(unittest.TestCase): self.assertIsNotNone(anne.verified_on) self.assertIsNotNone(anne.user) self.assertIsNotNone(self._mlist.subscribers.get_member(self._anne)) + + def test_verified_address_joins_moderated_list(self): + # The mailing list is moderated but the subscriber is not a verified + # address and the subscription request is not pre-verified. + # A confirmation email must be sent, it will serve as the verification + # email too. + anne = self._user_manager.create_address(self._anne, 'Anne Person') + request_db = IListRequests(self._mlist) + def _do_check(): + anne.verified_on = now() + self.assertIsNone(self._mlist.subscribers.get_member(self._anne)) + workflow = SubscriptionWorkflow( + self._mlist, anne, + pre_verified=False, pre_confirmed=True, pre_approved=False) + # Run the state machine to the end. + list(workflow) + # Look in the requests db + requests = list(request_db.of_type(RequestType.subscription)) + self.assertEqual(len(requests), 1) + self.assertEqual(requests[0].key, anne.email) + request_db.delete_request(requests[0].id) + self._mlist.subscription_policy = SubscriptionPolicy.moderate + _do_check() + self._mlist.subscription_policy = SubscriptionPolicy.confirm_then_moderate + _do_check() |
