mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-04-12 13:20:43 -04:00
Merge pull request #3981 from alphagov/single-quote-sms-sender
Add support for single quote in SMS sender name
This commit is contained in:
@@ -45,7 +45,7 @@ from app.main.validators import (
|
||||
CommonlyUsedPassword,
|
||||
CsvFileValidator,
|
||||
DoesNotStartWithDoubleZero,
|
||||
LettersNumbersFullStopsAndUnderscoresOnly,
|
||||
LettersNumbersSingleQuotesFullStopsAndUnderscoresOnly,
|
||||
MustContainAlphanumericCharacters,
|
||||
NoCommasInPlaceHolders,
|
||||
NoEmbeddedImagesInSVG,
|
||||
@@ -1734,7 +1734,7 @@ class ServiceSmsSenderForm(StripWhitespaceForm):
|
||||
DataRequired(message="Cannot be empty"),
|
||||
Length(max=11, message="Enter 11 characters or fewer"),
|
||||
Length(min=3, message="Enter 3 characters or more"),
|
||||
LettersNumbersFullStopsAndUnderscoresOnly(),
|
||||
LettersNumbersSingleQuotesFullStopsAndUnderscoresOnly(),
|
||||
DoesNotStartWithDoubleZero(),
|
||||
]
|
||||
)
|
||||
|
||||
@@ -144,9 +144,9 @@ class BroadcastLength:
|
||||
)
|
||||
|
||||
|
||||
class LettersNumbersFullStopsAndUnderscoresOnly:
|
||||
class LettersNumbersSingleQuotesFullStopsAndUnderscoresOnly:
|
||||
|
||||
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
|
||||
|
||||
@@ -187,46 +187,35 @@ def test_if_string_contains_alphanumeric_characters_does_not_raise(string):
|
||||
MustContainAlphanumericCharacters()(None, _gen_mock_field(string))
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"sms_sender,error_expected,error_message",
|
||||
[
|
||||
('', True, 'Cannot be empty'),
|
||||
('22', True, 'Enter 3 characters or more'),
|
||||
('333', False, None),
|
||||
('elevenchars', False, None), # 11 chars
|
||||
('twelvecharas', True, 'Enter 11 characters or fewer'), # 12 chars
|
||||
('###', True, 'Use letters and numbers only'),
|
||||
('00111222333', True, 'Cannot start with 00'),
|
||||
('UK_GOV', False, None), # Underscores are allowed
|
||||
('UK.GOV', False, None), # Full stops are allowed
|
||||
("'UC'", False, None), # Straight single quotes are allowed
|
||||
]
|
||||
)
|
||||
def test_sms_sender_form_validation(
|
||||
client,
|
||||
mock_get_user_by_email,
|
||||
sms_sender,
|
||||
error_expected,
|
||||
error_message
|
||||
):
|
||||
form = ServiceSmsSenderForm()
|
||||
form.sms_sender.data = sms_sender
|
||||
|
||||
form.sms_sender.data = 'elevenchars'
|
||||
form.validate()
|
||||
assert not form.errors
|
||||
|
||||
form.sms_sender.data = ''
|
||||
form.validate()
|
||||
assert "Cannot be empty" == form.errors['sms_sender'][0]
|
||||
|
||||
form.sms_sender.data = 'morethanelevenchars'
|
||||
form.validate()
|
||||
assert "Enter 11 characters or fewer" == form.errors['sms_sender'][0]
|
||||
|
||||
form.sms_sender.data = '###########'
|
||||
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 = '22'
|
||||
form.validate()
|
||||
assert 'Enter 3 characters or more' == form.errors['sms_sender'][0]
|
||||
|
||||
form.sms_sender.data = '333'
|
||||
form.validate()
|
||||
assert not form.errors
|
||||
|
||||
form.sms_sender.data = '00111222333'
|
||||
form.validate()
|
||||
assert "Cannot start with 00" == form.errors['sms_sender'][0]
|
||||
if error_expected:
|
||||
assert form.errors
|
||||
assert error_message == form.errors['sms_sender'][0]
|
||||
else:
|
||||
assert not form.errors
|
||||
|
||||
Reference in New Issue
Block a user