diff --git a/app/main/forms.py b/app/main/forms.py index 5555f8506..ea89af61d 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -4,6 +4,7 @@ import weakref from flask_wtf import FlaskForm as Form from datetime import datetime, timedelta +from itertools import chain from notifications_utils.recipients import ( validate_phone_number, @@ -174,6 +175,17 @@ class StripWhitespaceForm(Form): return bound +class StripWhitespaceStringField(StringField): + def __init__(self, label=None, **kwargs): + kwargs['filters'] = tuple(chain( + kwargs.get('filters', ()), + ( + strip_whitespace, + ), + )) + super(StringField, self).__init__(label, **kwargs) + + class LoginForm(StripWhitespaceForm): email_address = StringField('Email address', validators=[ Length(min=5, max=255), @@ -641,6 +653,14 @@ class LetterBranding(StripWhitespaceForm): ) +class EmailFieldInWhitelist(EmailField, StripWhitespaceStringField): + pass + + +class InternationalPhoneNumberInWhitelist(InternationalPhoneNumber, StripWhitespaceStringField): + pass + + class Whitelist(StripWhitespaceForm): def populate(self, email_addresses, phone_numbers): @@ -652,7 +672,7 @@ class Whitelist(StripWhitespaceForm): form_field[index].data = value email_addresses = FieldList( - EmailField( + EmailFieldInWhitelist( '', validators=[ Optional(), @@ -666,7 +686,7 @@ class Whitelist(StripWhitespaceForm): ) phone_numbers = FieldList( - InternationalPhoneNumber( + InternationalPhoneNumberInWhitelist( '', validators=[ Optional() diff --git a/tests/app/main/views/test_api_keys.py b/tests/app/main/views/test_api_keys.py index b5e11f251..a874eacad 100644 --- a/tests/app/main/views/test_api_keys.py +++ b/tests/app/main/views/test_api_keys.py @@ -351,8 +351,8 @@ def test_should_update_whitelist( service_id = str(uuid.uuid4()) data = OrderedDict([ ('email_addresses-1', 'test@example.com'), - ('email_addresses-3', 'test@example.com'), - ('phone_numbers-0', '07900900000'), + ('email_addresses-3', ' test@example.com '), + ('phone_numbers-0', '07900900000 '), ('phone_numbers-2', '+1800-555-555'), ])