Abhilash Raj pushed to branch master at GNU Mailman / Mailman Core
Commits: afbb4557 by Abhilash Raj at 2018-05-25T03:15:58Z Add a list-of-emails validator. - - - - - 73a2d2b9 by Abhilash Raj at 2018-05-25T08:08:37Z Merge branch 'list-of-emails' into 'master' Add a list-of-emails validator. See merge request mailman/mailman!394 - - - - - 2 changed files: - src/mailman/rest/tests/test_validator.py - src/mailman/rest/validator.py Changes: ===================================== src/mailman/rest/tests/test_validator.py ===================================== --- a/src/mailman/rest/tests/test_validator.py +++ b/src/mailman/rest/tests/test_validator.py @@ -23,8 +23,8 @@ from mailman.core.api import API30, API31 from mailman.interfaces.action import Action from mailman.interfaces.usermanager import IUserManager from mailman.rest.validator import ( - enum_validator, integer_ge_zero_validator, list_of_strings_validator, - subscriber_validator) + enum_validator, integer_ge_zero_validator, list_of_emails_validator, + list_of_strings_validator, subscriber_validator) from mailman.testing.layers import RESTLayer from zope.component import getUtility @@ -100,3 +100,19 @@ class TestValidators(unittest.TestCase): def test_enum_validator_blank(self): self.assertEqual(enum_validator(Action, allow_blank=True)(''), None) + + def test_list_of_emails_validator_valid(self): + self.assertEqual( + list_of_emails_validator(['f...@example.com', 'b...@example.com']), + ['f...@example.com', 'b...@example.com']) + self.assertEqual( + list_of_emails_validator('b...@example.com'), + ['b...@example.com']) + + def test_list_of_emails_validator_invalid(self): + self.assertRaises( + ValueError, list_of_emails_validator, 'foo.example.com') + self.assertRaises( + ValueError, + list_of_emails_validator, + ['f...@example.com', 'bar.example.com']) ===================================== src/mailman/rest/validator.py ===================================== --- a/src/mailman/rest/validator.py +++ b/src/mailman/rest/validator.py @@ -102,6 +102,19 @@ def list_of_strings_validator(values): @public +def list_of_emails_validator(values): + """Turn a list of things, or a single thing, into a list of emails.""" + if not isinstance(values, (list, tuple)): + if getUtility(IEmailValidator).is_valid(values): + return [values] + raise ValueError('Bad email address format: {}'.format(values)) + for value in values: + if not getUtility(IEmailValidator).is_valid(value): + raise ValueError('Expected email address, got {!r}'.format(value)) + return values + + +@public def integer_ge_zero_validator(value): """Validate that the value is a non-negative integer.""" value = int(value) View it on GitLab: https://gitlab.com/mailman/mailman/compare/2e530b257a864bb557f317ecc40a0a16f3180c02...73a2d2b9979e23f8bc53bb1f0601c39125ca27db -- View it on GitLab: https://gitlab.com/mailman/mailman/compare/2e530b257a864bb557f317ecc40a0a16f3180c02...73a2d2b9979e23f8bc53bb1f0601c39125ca27db You're receiving this email because of your account on gitlab.com.
_______________________________________________ Mailman-checkins mailing list Mailman-checkins@python.org Unsubscribe: https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org