summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fuchs2014-04-14 14:04:42 -0400
committerFlorian Fuchs2014-04-14 14:04:42 -0400
commit5b3b837431f24fd7afdbd368d6d6b7989d1fd54a (patch)
tree515a6bc18078c34f186b9bb6a27a3482fa0f689b
parente4a141e068d9c4132f8b143dc49faabe095a95c8 (diff)
downloadmailman-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.py7
-rw-r--r--src/mailman/rest/tests/test_addresses.py12
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():