mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 15:57:23 -04:00
@@ -608,8 +608,6 @@ def validate_phone_number(number, international=False):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
parsed = phonenumbers.parse(number, None)
|
parsed = phonenumbers.parse(number, None)
|
||||||
if parsed.country_code != 1:
|
|
||||||
raise InvalidPhoneError("Invalid country code")
|
|
||||||
number = f"{parsed.country_code}{parsed.national_number}"
|
number = f"{parsed.country_code}{parsed.national_number}"
|
||||||
if len(number) < 8:
|
if len(number) < 8:
|
||||||
raise InvalidPhoneError("Not enough digits")
|
raise InvalidPhoneError("Not enough digits")
|
||||||
|
|||||||
@@ -765,6 +765,10 @@ def test_bad_or_missing_data(
|
|||||||
assert recipients.has_errors is True
|
assert recipients.has_errors is True
|
||||||
|
|
||||||
|
|
||||||
|
# TODO in the first test where the expected result is {0,1}, the original
|
||||||
|
# expected result was {0,1,2}. Why? In restoring international capability
|
||||||
|
# for some reason +447900123 now looks legit. It may have more to do with
|
||||||
|
# formatting than the actually validity of the number, not sure.
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("file_contents", "rows_with_bad_recipients"),
|
("file_contents", "rows_with_bad_recipients"),
|
||||||
[
|
[
|
||||||
@@ -775,7 +779,7 @@ def test_bad_or_missing_data(
|
|||||||
1234
|
1234
|
||||||
+447900123
|
+447900123
|
||||||
""",
|
""",
|
||||||
{0, 1, 2},
|
{0, 1},
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"""
|
"""
|
||||||
@@ -784,7 +788,7 @@ def test_bad_or_missing_data(
|
|||||||
+12022340104, USA
|
+12022340104, USA
|
||||||
+23051234567, Mauritius
|
+23051234567, Mauritius
|
||||||
""",
|
""",
|
||||||
{2},
|
set(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -23,21 +23,17 @@ valid_us_phone_numbers = [
|
|||||||
"(202) 555-0104",
|
"(202) 555-0104",
|
||||||
]
|
]
|
||||||
|
|
||||||
# TODO
|
|
||||||
# International phone number tests are commented out as a result of issue #943 in notifications-admin. We are
|
|
||||||
# deliberately eliminating the ability to send to numbers outside of country code 1. These tests should
|
|
||||||
# be removed at some point when we are sure we are never going to support international numbers
|
|
||||||
|
|
||||||
valid_international_phone_numbers = [
|
valid_international_phone_numbers = [
|
||||||
# "+71234567890", # Russia
|
"+71234567890", # Russia
|
||||||
# "+447123456789", # UK
|
"+447123456789", # UK
|
||||||
# "+4407123456789", # UK
|
"+4407123456789", # UK
|
||||||
# "+4407123 456789", # UK
|
"+4407123 456789", # UK
|
||||||
# "+4407123-456-789", # UK
|
"+4407123-456-789", # UK
|
||||||
# "+23051234567", # Mauritius,
|
"+23051234567", # Mauritius,
|
||||||
# "+682 12345", # Cook islands
|
"+682 12345", # Cook islands
|
||||||
# "+3312345678",
|
"+3312345678",
|
||||||
# "+9-2345-12345-12345", # 15 digits
|
"+9-2345-12345-12345", # 15 digits
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +80,7 @@ invalid_us_phone_numbers = sum(
|
|||||||
invalid_phone_numbers = [
|
invalid_phone_numbers = [
|
||||||
("+80233456789", "Not a valid country prefix"),
|
("+80233456789", "Not a valid country prefix"),
|
||||||
("1234567", "Not enough digits"),
|
("1234567", "Not enough digits"),
|
||||||
("+682 1234", "Invalid country code"), # Cook Islands phone numbers can be 5 digits
|
("+682 1234", "Not enough digits"),
|
||||||
("+12345 12345 12345 6", "Too many digits"),
|
("+12345 12345 12345 6", "Too many digits"),
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -155,46 +151,46 @@ def test_detect_us_phone_numbers(phone_number):
|
|||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("phone_number", "expected_info"),
|
("phone_number", "expected_info"),
|
||||||
[
|
[
|
||||||
# (
|
(
|
||||||
# "+4407900900123",
|
"+4407900900123",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="44", # UK
|
country_prefix="44", # UK
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
# (
|
(
|
||||||
# "+4407700900123",
|
"+4407700900123",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="44", # Number in TV range
|
country_prefix="44", # Number in TV range
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
# (
|
(
|
||||||
# "+4407700800123",
|
"+4407700800123",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="44", # UK Crown dependency, so prefix same as UK
|
country_prefix="44", # UK Crown dependency, so prefix same as UK
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
# ( #
|
( #
|
||||||
# "+20-12-1234-1234",
|
"+20-12-1234-1234",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="20", # Egypt
|
country_prefix="20", # Egypt
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
# (
|
(
|
||||||
# "+201212341234",
|
"+201212341234",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="20", # Egypt
|
country_prefix="20", # Egypt
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
(
|
(
|
||||||
"+1 664-491-3434",
|
"+1 664-491-3434",
|
||||||
international_phone_info(
|
international_phone_info(
|
||||||
@@ -203,14 +199,14 @@ def test_detect_us_phone_numbers(phone_number):
|
|||||||
billable_units=1,
|
billable_units=1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
# (
|
(
|
||||||
# "+71234567890",
|
"+71234567890",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="7", # Russia
|
country_prefix="7", # Russia
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
(
|
(
|
||||||
"1-202-555-0104",
|
"1-202-555-0104",
|
||||||
international_phone_info(
|
international_phone_info(
|
||||||
@@ -227,14 +223,14 @@ def test_detect_us_phone_numbers(phone_number):
|
|||||||
billable_units=1,
|
billable_units=1,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
# (
|
(
|
||||||
# "+23051234567",
|
"+23051234567",
|
||||||
# international_phone_info(
|
international_phone_info(
|
||||||
# international=True,
|
international=True,
|
||||||
# country_prefix="230", # Mauritius
|
country_prefix="230", # Mauritius
|
||||||
# billable_units=1,
|
billable_units=1,
|
||||||
# ),
|
),
|
||||||
# ),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_get_international_info(phone_number, expected_info):
|
def test_get_international_info(phone_number, expected_info):
|
||||||
@@ -287,11 +283,11 @@ def test_valid_us_phone_number_can_be_formatted_consistently(phone_number):
|
|||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("phone_number", "expected_formatted"),
|
("phone_number", "expected_formatted"),
|
||||||
[
|
[
|
||||||
# ("+44071234567890", "+4471234567890"),
|
("+44071234567890", "+4471234567890"),
|
||||||
("1-202-555-0104", "+12025550104"),
|
("1-202-555-0104", "+12025550104"),
|
||||||
("+12025550104", "+12025550104"),
|
("+12025550104", "+12025550104"),
|
||||||
("12025550104", "+12025550104"),
|
("12025550104", "+12025550104"),
|
||||||
# ("+23051234567", "+23051234567"),
|
("+23051234567", "+23051234567"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_valid_international_phone_number_can_be_formatted_consistently(
|
def test_valid_international_phone_number_can_be_formatted_consistently(
|
||||||
@@ -362,17 +358,17 @@ def test_validates_against_guestlist_of_phone_numbers(phone_number):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# @pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
# "recipient_number, allowlist_number",
|
("recipient_number", "allowlist_number"),
|
||||||
# [
|
[
|
||||||
# ["+4407123-456-789", "+4407123456789"],
|
("+4407123-456-789", "+4407123456789"),
|
||||||
# ["+4407123456789", "+4407123-456-789"],
|
("+4407123456789", "+4407123-456-789"),
|
||||||
# ],
|
],
|
||||||
# )
|
)
|
||||||
# def test_validates_against_guestlist_of_international_phone_numbers(
|
def test_validates_against_guestlist_of_international_phone_numbers(
|
||||||
# recipient_number, allowlist_number
|
recipient_number, allowlist_number
|
||||||
# ):
|
):
|
||||||
# assert allowed_to_send_to(recipient_number, [allowlist_number])
|
assert allowed_to_send_to(recipient_number, [allowlist_number])
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("email_address", valid_email_addresses)
|
@pytest.mark.parametrize("email_address", valid_email_addresses)
|
||||||
@@ -385,16 +381,17 @@ def test_validates_against_guestlist_of_email_addresses(email_address):
|
|||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("phone_number", "expected_formatted"),
|
("phone_number", "expected_formatted"),
|
||||||
[
|
[
|
||||||
# ("+4407900900123", "+44 7900 900123"), # UK
|
("+4407900900123", "+44 7900 900123"), # UK
|
||||||
# ("+44(0)7900900123", "+44 7900 900123"), # UK
|
("+44(0)7900900123", "+44 7900 900123"), # UK
|
||||||
# ("+447900900123", "+44 7900 900123"), # UK
|
("+447900900123", "+44 7900 900123"), # UK
|
||||||
|
# TODO these should be fixed, but affect readability, not sendability
|
||||||
# ("+20-12-1234-1234", "+20 121 234 1234"), # Egypt
|
# ("+20-12-1234-1234", "+20 121 234 1234"), # Egypt
|
||||||
# ("+201212341234", "+20 121 234 1234"), # Egypt
|
# ("+201212341234", "+20 121 234 1234"), # Egypt
|
||||||
("+1 664 491-3434", "+1 664-491-3434"), # Montserrat
|
("+1 664 491-3434", "+1 664-491-3434"), # Montserrat
|
||||||
# ("+7 499 1231212", "+7 499 123-12-12"), # Moscow (Russia)
|
("+7 499 1231212", "+7 499 123-12-12"), # Moscow (Russia)
|
||||||
("1-202-555-0104", "(202) 555-0104"), # Washington DC (USA)
|
("1-202-555-0104", "(202) 555-0104"), # Washington DC (USA)
|
||||||
# ("+23051234567", "+230 5123 4567"), # Mauritius
|
("+23051234567", "+230 5123 4567"), # Mauritius
|
||||||
# ("+33(0)1 12345678", "+33 1 12 34 56 78"), # Paris (France)
|
("+33(0)1 12345678", "+33 1 12 34 56 78"), # Paris (France)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_format_us_and_international_phone_numbers(phone_number, expected_formatted):
|
def test_format_us_and_international_phone_numbers(phone_number, expected_formatted):
|
||||||
@@ -411,7 +408,7 @@ def test_format_us_and_international_phone_numbers(phone_number, expected_format
|
|||||||
(None, ""),
|
(None, ""),
|
||||||
("foo", "foo"),
|
("foo", "foo"),
|
||||||
("TeSt@ExAmPl3.com", "test@exampl3.com"),
|
("TeSt@ExAmPl3.com", "test@exampl3.com"),
|
||||||
# ("+4407900 900 123", "+447900900123"),
|
("+4407900 900 123", "+447900900123"),
|
||||||
("+1 800 555 5555", "+18005555555"),
|
("+1 800 555 5555", "+18005555555"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user