summaryrefslogtreecommitdiff
path: root/src/mailman/model/tests/test_user.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/model/tests/test_user.py')
-rw-r--r--src/mailman/model/tests/test_user.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/mailman/model/tests/test_user.py b/src/mailman/model/tests/test_user.py
index 17d4d24ff..3ae6203ab 100644
--- a/src/mailman/model/tests/test_user.py
+++ b/src/mailman/model/tests/test_user.py
@@ -30,6 +30,9 @@ import unittest
from zope.component import getUtility
from mailman.app.lifecycle import create_list
+from mailman.interfaces.address import (
+ AddressAlreadyLinkedError, AddressNotLinkedError)
+from mailman.interfaces.user import UnverifiedAddressError
from mailman.interfaces.usermanager import IUserManager
from mailman.testing.layers import ConfigLayer
from mailman.utilities.datetime import now
@@ -74,3 +77,38 @@ class TestUser(unittest.TestCase):
self.assertEqual(len(emails), 2)
self.assertEqual(emails,
set(['anne@example.com', 'aperson@example.com']))
+
+ def test_uid_is_immutable(self):
+ with self.assertRaises(AttributeError):
+ self._anne.user_id = 'foo'
+
+ def test_addresses_may_only_be_linked_to_one_user(self):
+ user = getUtility(IUserManager).create_user()
+ # Anne's preferred address is already linked to her.
+ with self.assertRaises(AddressAlreadyLinkedError) as cm:
+ user.link(self._anne.preferred_address)
+ self.assertEqual(cm.exception.address, self._anne.preferred_address)
+
+ def test_unlink_from_address_not_linked_to(self):
+ # You cannot unlink an address from a user if that address is not
+ # already linked to the user.
+ user = getUtility(IUserManager).create_user()
+ with self.assertRaises(AddressNotLinkedError) as cm:
+ user.unlink(self._anne.preferred_address)
+ self.assertEqual(cm.exception.address, self._anne.preferred_address)
+
+ def test_unlink_address_which_is_not_linked(self):
+ # You cannot unlink an address which is not linked to any user.
+ address = getUtility(IUserManager).create_address('bart@example.com')
+ user = getUtility(IUserManager).create_user()
+ with self.assertRaises(AddressNotLinkedError) as cm:
+ user.unlink(address)
+ self.assertEqual(cm.exception.address, address)
+
+ def test_set_unverified_preferred_address(self):
+ # A user's preferred address cannot be set to an unverified address.
+ new_preferred = getUtility(IUserManager).create_address(
+ 'anne.person@example.com')
+ with self.assertRaises(UnverifiedAddressError) as cm:
+ self._anne.preferred_address = new_preferred
+ self.assertEqual(cm.exception.address, new_preferred)