From dbb6c051636b8f3efdcb9bcc8029c108d03810a3 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 1 Dec 2014 23:16:45 -0500 Subject: model/addresses.rst passes, with some bad-path cases moved to unittests. --- src/mailman/model/docs/addresses.rst | 20 +++----------------- src/mailman/model/tests/test_address.py | 22 ++++++++++++++++++++++ 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') -- cgit v1.2.3-70-g09d2