diff options
| author | Florian Fuchs | 2014-04-14 14:04:42 -0400 |
|---|---|---|
| committer | Florian Fuchs | 2014-04-14 14:04:42 -0400 |
| commit | 5b3b837431f24fd7afdbd368d6d6b7989d1fd54a (patch) | |
| tree | 515a6bc18078c34f186b9bb6a27a3482fa0f689b | |
| parent | e4a141e068d9c4132f8b143dc49faabe095a95c8 (diff) | |
| download | mailman-5b3b837431f24fd7afdbd368d6d6b7989d1fd54a.tar.gz mailman-5b3b837431f24fd7afdbd368d6d6b7989d1fd54a.tar.zst mailman-5b3b837431f24fd7afdbd368d6d6b7989d1fd54a.zip | |
Posting an invalid email address string to the user/addresses endpoint
now returns a 400 status code
| -rw-r--r-- | src/mailman/rest/addresses.py | 7 | ||||
| -rw-r--r-- | src/mailman/rest/tests/test_addresses.py | 12 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py index 3949944b1..4001b007e 100644 --- a/src/mailman/rest/addresses.py +++ b/src/mailman/rest/addresses.py @@ -34,7 +34,7 @@ from zope.component import getUtility from mailman.rest.helpers import CollectionMixin, etag, no_content, path_to from mailman.rest.members import MemberCollection from mailman.rest.preferences import Preferences -from mailman.interfaces.address import ExistingAddressError +from mailman.interfaces.address import ExistingAddressError, InvalidEmailAddressError from mailman.interfaces.usermanager import IUserManager from mailman.utilities.datetime import now @@ -187,7 +187,10 @@ class UserAddresses(_AddressBase): address.user = self._user location = path_to('addresses/{0}'.format(address.email)) return http.created(location, [], None) - # ... except the address already exists. + # ... except the address is not valid ... + except InvalidEmailAddressError: + return http.bad_request([], b'Invalid email address') + # ... or the address already exists. except ExistingAddressError: return http.bad_request( [], b'Address already exists: {0}'.format(email)) diff --git a/src/mailman/rest/tests/test_addresses.py b/src/mailman/rest/tests/test_addresses.py index 7b89d79de..ded29d056 100644 --- a/src/mailman/rest/tests/test_addresses.py +++ b/src/mailman/rest/tests/test_addresses.py @@ -135,6 +135,18 @@ class TestAddresses(unittest.TestCase): self.assertEqual(cm.exception.reason, 'Address already exists: ' 'anne@example.com') + def test_invalid_address_bad_request(self): + # Posting an invalid address string returns 400. + with transaction(): + anne = getUtility(IUserManager).create_user('anne@example.com') + with self.assertRaises(HTTPError) as cm: + call_api('http://localhost:9001/3.0/users/' + 'anne@example.com/addresses', { + 'email': 'invalid_address_string' + }) + self.assertEqual(cm.exception.code, 400) + self.assertEqual(cm.exception.reason, 'Invalid email address') + def test_empty_address_bad_request(self): # Posting no address returns 400. with transaction(): |
