From 1fe3f1871e4cb72da7aec55b765510957bb98fed Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 2 Apr 2020 15:57:46 +0100 Subject: [PATCH] Allow underscores in SMS senders --- app/main/forms.py | 4 ++-- app/main/validators.py | 4 ++-- tests/app/main/test_validators.py | 10 ++++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/main/forms.py b/app/main/forms.py index a665db984..850d5dee2 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -46,7 +46,7 @@ from app.main.validators import ( Blacklist, CsvFileValidator, DoesNotStartWithDoubleZero, - LettersNumbersAndFullStopsOnly, + LettersNumbersFullStopsAndUnderscoresOnly, MustContainAlphanumericCharacters, NoCommasInPlaceHolders, NoEmbeddedImagesInSVG, @@ -1086,7 +1086,7 @@ class ServiceSmsSenderForm(StripWhitespaceForm): DataRequired(message="Cannot be empty"), Length(max=11, message="Enter 11 characters or fewer"), Length(min=4, message="Enter 4 characters or more"), - LettersNumbersAndFullStopsOnly(), + LettersNumbersFullStopsAndUnderscoresOnly(), DoesNotStartWithDoubleZero(), ] ) diff --git a/app/main/validators.py b/app/main/validators.py index f35d6208a..cc3f55afc 100644 --- a/app/main/validators.py +++ b/app/main/validators.py @@ -103,9 +103,9 @@ class OnlySMSCharacters: ) -class LettersNumbersAndFullStopsOnly: +class LettersNumbersFullStopsAndUnderscoresOnly: - regex = re.compile(r'^[a-zA-Z0-9\s\.]+$') + regex = re.compile(r'^[a-zA-Z0-9\s\._]+$') def __init__(self, message='Use letters and numbers only'): self.message = message diff --git a/tests/app/main/test_validators.py b/tests/app/main/test_validators.py index 1aaeaa01d..f58afd610 100644 --- a/tests/app/main/test_validators.py +++ b/tests/app/main/test_validators.py @@ -215,6 +215,16 @@ def test_sms_sender_form_validation( form.validate() assert 'Use letters and numbers only' == form.errors['sms_sender'][0] + # Underscores are allowed + form.sms_sender.data = 'UK_GOV' + form.validate() + assert not form.errors + + # Full stops are allowed + form.sms_sender.data = 'UK.GOV' + form.validate() + assert not form.errors + form.sms_sender.data = '333' form.validate() assert 'Enter 4 characters or more' == form.errors['sms_sender'][0]