Skip to content

Commit

Permalink
temporary fix for extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
rparke committed Nov 20, 2024
1 parent 8201b70 commit bf3a83f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
9 changes: 5 additions & 4 deletions app/main/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -1805,15 +1805,16 @@ def validate(self, *args, **kwargs):
# and disallow emergency 3-digit numbers
def valid_non_emergency_phone_number(self, num):
try:
number = PhoneNumberUtils(num.data, is_service_contact_number=True)
normalised_number = str(number.number.national_number)
PhoneNumberUtils(num.data, is_service_contact_number=True)
except InvalidPhoneError as e:
if e.code == InvalidPhoneError.Codes.UNSUPPORTED_EMERGENCY_NUMBER:
raise ValidationError(str(e)) from e
elif e.code == InvalidPhoneError.Codes.TOO_LONG:
# assume the number is an extension and return the number with minimal normalisation
return True

else:
raise ValidationError("Enter a phone number in the correct format") from e
if normalised_number in {"999", "112"}:
raise ValidationError("Phone number cannot be an emergency number")

return True

Expand Down
14 changes: 14 additions & 0 deletions tests/app/main/forms/test_service_contact_details_form.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,3 +121,17 @@ def test_form_phone_number_allows_non_emergency_3_digit_numbers(notify_admin, sh
assert not form.validate_on_submit()
assert len(form.errors) == 1
assert form.errors["phone_number"] == ["Phone number cannot be an emergency number"]


@pytest.mark.parametrize(
"short_number, allowed",
(("01572 812241 7081", True),),
)
def test_form_phone_number_allows_non_emergency_numbers_with_extensions(notify_admin, short_number, allowed):
data = {"contact_details_type": "phone_number", "phone_number": short_number}

with notify_admin.test_request_context(method="POST", data=data):
form = ServiceContactDetailsForm()
assert form.validate_on_submit()
assert len(form.errors) == 0
assert form.errors == {}

0 comments on commit bf3a83f

Please sign in to comment.