summaryrefslogtreecommitdiff
path: root/src/mailman/model/tests/test_mailinglist.py
diff options
context:
space:
mode:
authorBarry Warsaw2014-12-13 13:26:05 -0500
committerBarry Warsaw2014-12-13 13:26:05 -0500
commit23eb4cef9e074dbc6531f75cd0b23dc2e8acf6da (patch)
tree21e8aefd73f09a033fa8d4eaae84fb6052087632 /src/mailman/model/tests/test_mailinglist.py
parent03731dd2d3aac0c9610c3b17d28f6821343fc8ed (diff)
downloadmailman-23eb4cef9e074dbc6531f75cd0b23dc2e8acf6da.tar.gz
mailman-23eb4cef9e074dbc6531f75cd0b23dc2e8acf6da.tar.zst
mailman-23eb4cef9e074dbc6531f75cd0b23dc2e8acf6da.zip
More model test fixes and ports.
Diffstat (limited to 'src/mailman/model/tests/test_mailinglist.py')
-rw-r--r--src/mailman/model/tests/test_mailinglist.py42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/mailman/model/tests/test_mailinglist.py b/src/mailman/model/tests/test_mailinglist.py
index 9d6177b54..2fd000422 100644
--- a/src/mailman/model/tests/test_mailinglist.py
+++ b/src/mailman/model/tests/test_mailinglist.py
@@ -21,8 +21,9 @@ from __future__ import absolute_import, print_function, unicode_literals
__metaclass__ = type
__all__ = [
- 'TestListArchiver',
'TestDisabledListArchiver',
+ 'TestListArchiver',
+ 'TestMailingList',
]
@@ -31,8 +32,47 @@ import unittest
from mailman.app.lifecycle import create_list
from mailman.config import config
from mailman.interfaces.mailinglist import IListArchiverSet
+from mailman.interfaces.member import (
+ AlreadySubscribedError, MemberRole, MissingPreferredAddressError)
+from mailman.interfaces.usermanager import IUserManager
from mailman.testing.helpers import configuration
from mailman.testing.layers import ConfigLayer
+from mailman.utilities.datetime import now
+from zope.component import getUtility
+
+
+
+class TestMailingList(unittest.TestCase):
+ layer = ConfigLayer
+
+ def setUp(self):
+ self._mlist = create_list('ant@example.com')
+
+ def test_no_duplicate_subscriptions(self):
+ # A user is not allowed to subscribe more than once to the mailing
+ # list with the same role.
+ anne = getUtility(IUserManager).create_user('anne@example.com')
+ # Give the user a preferred address.
+ preferred = list(anne.addresses)[0]
+ preferred.verified_on = now()
+ anne.preferred_address = preferred
+ # Subscribe Anne to the mailing list as a regular member.
+ member = self._mlist.subscribe(anne)
+ self.assertEqual(member.address, preferred)
+ self.assertEqual(member.role, MemberRole.member)
+ # A second subscription with the same role will fail.
+ with self.assertRaises(AlreadySubscribedError) as cm:
+ self._mlist.subscribe(anne)
+ self.assertEqual(cm.exception.fqdn_listname, 'ant@example.com')
+ self.assertEqual(cm.exception.email, 'anne@example.com')
+ self.assertEqual(cm.exception.role, MemberRole.member)
+
+ def test_subscribing_user_must_have_preferred_address(self):
+ # A user object cannot be subscribed to a mailing list without a
+ # preferred address.
+ anne = getUtility(IUserManager).create_user('anne@example.com')
+ self.assertRaises(MissingPreferredAddressError,
+ self._mlist.subscribe, anne)