summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2014-12-01 23:16:45 -0500
committerBarry Warsaw2014-12-01 23:16:45 -0500
commitdbb6c051636b8f3efdcb9bcc8029c108d03810a3 (patch)
tree4d99676236510ce20115ce3da0666a661c95dbeb
parentb98434e97ba4ab9143bfd4e788ba3576c1428a65 (diff)
downloadmailman-dbb6c051636b8f3efdcb9bcc8029c108d03810a3.tar.gz
mailman-dbb6c051636b8f3efdcb9bcc8029c108d03810a3.tar.zst
mailman-dbb6c051636b8f3efdcb9bcc8029c108d03810a3.zip
-rw-r--r--src/mailman/model/docs/addresses.rst20
-rw-r--r--src/mailman/model/tests/test_address.py22
2 files changed, 25 insertions, 17 deletions
diff --git a/src/mailman/model/docs/addresses.rst b/src/mailman/model/docs/addresses.rst
index 795afe43c..9f34efdec 100644
--- a/src/mailman/model/docs/addresses.rst
+++ b/src/mailman/model/docs/addresses.rst
@@ -205,23 +205,9 @@ case-preserved version are available on attributes of the `IAddress` object.
FPERSON@example.com
Because addresses are case-insensitive for all other purposes, you cannot
-create an address that differs only in case.
-
- >>> user_manager.create_address('fperson@example.com')
- Traceback (most recent call last):
- ...
- ExistingAddressError: FPERSON@example.com
- >>> user_manager.create_address('fperson@EXAMPLE.COM')
- Traceback (most recent call last):
- ...
- ExistingAddressError: FPERSON@example.com
- >>> user_manager.create_address('FPERSON@example.com')
- Traceback (most recent call last):
- ...
- ExistingAddressError: FPERSON@example.com
-
-You can get the address using either the lower cased version or case-preserved
-version. In fact, searching for an address is case insensitive.
+create an address that differs only in case. You can get the address using
+either the lower cased version or case-preserved version. In fact, searching
+for an address is case insensitive.
>>> print(user_manager.get_address('fperson@example.com').email)
fperson@example.com
diff --git a/src/mailman/model/tests/test_address.py b/src/mailman/model/tests/test_address.py
index 130ec3bae..7de77c019 100644
--- a/src/mailman/model/tests/test_address.py
+++ b/src/mailman/model/tests/test_address.py
@@ -28,8 +28,11 @@ __all__ = [
import unittest
from mailman.email.validate import InvalidEmailAddressError
+from mailman.interfaces.address import ExistingAddressError
+from mailman.interfaces.usermanager import IUserManager
from mailman.model.address import Address
from mailman.testing.layers import ConfigLayer
+from zope.component import getUtility
@@ -38,6 +41,25 @@ class TestAddress(unittest.TestCase):
layer = ConfigLayer
+ def setUp(self):
+ self._usermgr = getUtility(IUserManager)
+ self._address = self._usermgr.create_address('FPERSON@example.com')
+
def test_invalid_email_string_raises_exception(self):
with self.assertRaises(InvalidEmailAddressError):
Address('not_a_valid_email_string', '')
+
+ def test_local_part_differs_only_by_case(self):
+ with self.assertRaises(ExistingAddressError) as cm:
+ self._usermgr.create_address('fperson@example.com')
+ self.assertEqual(cm.exception.address, 'FPERSON@example.com')
+
+ def test_domain_part_differs_only_by_case(self):
+ with self.assertRaises(ExistingAddressError) as cm:
+ self._usermgr.create_address('fperson@EXAMPLE.COM')
+ self.assertEqual(cm.exception.address, 'FPERSON@example.com')
+
+ def test_mixed_case_exact_match(self):
+ with self.assertRaises(ExistingAddressError) as cm:
+ self._usermgr.create_address('FPERSON@example.com')
+ self.assertEqual(cm.exception.address, 'FPERSON@example.com')