Allow full stops in SMS senders

We have a team who want their (short) web address as the text message
sender. This commit updates the validation of text message senders to
allow `.` as a valid character, which is currently blocking them from
doing this.

We can be fairly confident this works because:

- the team are sending large volumes of messages already with their
  existing provider
- we’ve tested it with all combinations of
  - both our text message providers
  - an Android phone and n iPhone
This commit is contained in:
Chris Hill-Scott
2018-01-31 10:38:44 +00:00
parent b9e5194fbd
commit 934a271322
3 changed files with 5 additions and 5 deletions

View File

@@ -35,7 +35,7 @@ from app.main.validators import (
ValidGovEmail, ValidGovEmail,
NoCommasInPlaceHolders, NoCommasInPlaceHolders,
OnlyGSMCharacters, OnlyGSMCharacters,
LettersAndNumbersOnly, LettersNumbersAndFullStopsOnly,
) )
@@ -560,7 +560,7 @@ class ServiceSmsSenderForm(StripWhitespaceForm):
validators=[ validators=[
DataRequired(message="Cant be empty"), DataRequired(message="Cant be empty"),
Length(max=11, message="Enter 11 characters or fewer"), Length(max=11, message="Enter 11 characters or fewer"),
LettersAndNumbersOnly(), LettersNumbersAndFullStopsOnly(),
] ]
) )
is_default = BooleanField("Make this text message sender the default") is_default = BooleanField("Make this text message sender the default")

View File

@@ -66,9 +66,9 @@ class OnlyGSMCharacters:
) )
class LettersAndNumbersOnly: class LettersNumbersAndFullStopsOnly:
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'): def __init__(self, message='Use letters and numbers only'):
self.message = message self.message = message

View File

@@ -814,7 +814,7 @@ def test_incorrect_letter_contact_block_input(
('', 'Cant be empty'), ('', 'Cant be empty'),
('abcdefghijkhgkg', 'Enter 11 characters or fewer'), ('abcdefghijkhgkg', 'Enter 11 characters or fewer'),
(' ¯\_(ツ)_/¯ ', 'Use letters and numbers only'), (' ¯\_(ツ)_/¯ ', 'Use letters and numbers only'),
('blood.co.uk', 'Use letters and numbers only'), ('blood.co.uk', None),
]) ])
def test_incorrect_sms_sender_input( def test_incorrect_sms_sender_input(
sms_sender_input, sms_sender_input,