Mark Sapiro pushed to branch master at GNU Mailman / Mailman Core
Commits: 7c0c47a6 by Mark Sapiro at 2022-01-20T17:11:27-08:00 Extend fix for JSON encoded booleans to REST validator. - - - - - 9d72e46a by Mark Sapiro at 2022-01-21T03:58:22+00:00 Merge branch 'bool' into 'master' Extend fix for JSON encoded booleans to REST validator. See merge request mailman/mailman!950 - - - - - 2 changed files: - src/mailman/rest/tests/test_validator.py - src/mailman/rest/validator.py Changes: ===================================== src/mailman/rest/tests/test_validator.py ===================================== @@ -27,7 +27,7 @@ from mailman.interfaces.action import Action from mailman.interfaces.usermanager import IUserManager from mailman.rest import helpers from mailman.rest.validator import ( - email_or_regexp_validator, email_validator, enum_validator, + Validator, email_or_regexp_validator, email_validator, enum_validator, integer_ge_zero_validator, list_of_emails_validator, list_of_strings_validator, subscriber_validator) from mailman.testing.layers import RESTLayer @@ -147,6 +147,20 @@ class TestValidators(unittest.TestCase): email_validator, 'foo.example.com') self.assertEqual('f...@example.com', email_validator('f...@example.com')) + def test_validator_class_boolean_as_bool(self): + + class RequestTrue: + params = dict(key=True) + content_type = 'application/x-www-form-urlencoded' + + class RequestFalse: + params = dict(key=False) + content_type = 'application/x-www-form-urlencoded' + + validator = Validator(key=as_boolean) + self.assertTrue(validator(RequestTrue)['key']) + self.assertFalse(validator(RequestFalse)['key']) + class TestGetterSetter(unittest.TestCase): """Test the GeterSetter class""" ===================================== src/mailman/rest/validator.py ===================================== @@ -19,6 +19,7 @@ import re +from lazr.config import as_boolean from mailman.interfaces.address import IEmailValidator from mailman.interfaces.errors import MailmanError from mailman.interfaces.languages import ILanguageManager @@ -224,7 +225,11 @@ class Validator: # Now do all the conversions. for key, value in form_data.items(): try: - values[key] = self._converters[key](value) + if (self._converters[key] is as_boolean and + isinstance(value, bool)): + values[key] = value + else: + values[key] = self._converters[key](value) except KeyError: extras.add(key) except (TypeError, ValueError) as e: View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/37b769136c96d457b36d5bf9dd6c433b22bddb14...9d72e46aca1596481e4dec1eec3615469a445034 -- View it on GitLab: https://gitlab.com/mailman/mailman/-/compare/37b769136c96d457b36d5bf9dd6c433b22bddb14...9d72e46aca1596481e4dec1eec3615469a445034 You're receiving this email because of your account on gitlab.com.
_______________________________________________ Mailman-checkins mailing list -- mailman-checkins@python.org To unsubscribe send an email to mailman-checkins-le...@python.org https://mail.python.org/mailman3/lists/mailman-checkins.python.org/ Member address: arch...@jab.org