From 7b1942c3fecd41192947a407b7b7c20f4070a4d1 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 19 Aug 2024 12:53:18 -0700 Subject: [PATCH 01/12] initial --- app/clients/sms/aws_sns.py | 3 ++- app/delivery/send_to_providers.py | 33 ++++++++++++++++++++++--------- app/user/rest.py | 6 ++++-- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index e1c872665..067dcd2a0 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -2,6 +2,7 @@ import os import re from time import monotonic +from app.utils import hilite import botocore import phonenumbers from boto3 import client @@ -48,7 +49,7 @@ class AwsSnsClient(SmsClient): def send_sms(self, to, content, reference, sender=None, international=False): matched = False - + print(hilite(f"TO {to}")) for match in phonenumbers.PhoneNumberMatcher(to, "US"): matched = True to = phonenumbers.format_number( diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index 4f811de22..f699f1f12 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -80,21 +80,36 @@ def send_sms_to_provider(notification): # We start by trying to get the phone number from a job in s3. If we fail, we assume # the phone number is for the verification code on login, which is not a job. + print(f"IN THE TRY AND JOB_ID is {notification.job_id}") recipient = None - try: - recipient = get_phone_number_from_s3( - notification.service_id, - notification.job_id, - notification.job_row_number, - ) - except Exception: - # It is our 2facode, maybe + # It is our 2facode, maybe + if notification.job_id is None: + print(f"IN THE IF AND WE ARE GOING TO GET THE 2FA KEY") key = f"2facode-{notification.id}".replace(" ", "") + print(hilite(f"KEY IS SEND_TO_PROVIDERS IS {key}")) recipient = redis_store.get(key) - if recipient: recipient = recipient.decode("utf-8") + print(hilite(f"RECIPIENT IN SEND TO PROVIDERS IS {recipient}")) + else: + print(f"IN THE ELSE AND WE ARE GOING TO GET FROM S3") + try: + recipient = get_phone_number_from_s3( + notification.service_id, + notification.job_id, + notification.job_row_number, + ) + except Exception: + # It is our 2facode, maybe + key = f"2facode-{notification.id}".replace(" ", "") + print(hilite(f"KEY IS SEND_TO_PROVIDERS IS {key}")) + recipient = redis_store.get(key) + print(hilite(f"RECIPIENT IN SEND TO PROVIDERS IS {recipient}")) + + if recipient: + recipient = recipient.decode("utf-8") + if recipient is None: si = notification.service_id ji = notification.job_id diff --git a/app/user/rest.py b/app/user/rest.py index faaca4664..d184c03c4 100644 --- a/app/user/rest.py +++ b/app/user/rest.py @@ -53,7 +53,7 @@ from app.user.users_schema import ( post_verify_code_schema, post_verify_webauthn_schema, ) -from app.utils import url_with_token, utc_now +from app.utils import hilite, url_with_token, utc_now from notifications_utils.recipients import is_us_phone_number, use_numeric_sender user_blueprint = Blueprint("user", __name__) @@ -307,8 +307,9 @@ def send_user_2fa_code(user_id, code_type): def send_user_sms_code(user_to_send_to, data): + print(hilite("SEND_USER_SMS_CODE")) recipient = data.get("to") or user_to_send_to.mobile_number - + print(hilite(f"RECIPIENT {recipient}")) secret_code = create_secret_code() personalisation = {"verify_code": secret_code} @@ -372,6 +373,7 @@ def create_2fa_code( key = f"2facode-{saved_notification.id}".replace(" ", "") recipient = str(recipient) redis_store.set(key, recipient, ex=60 * 60) + print(hilite(f"SET REDIS 2facode-{saved_notification.id} to {recipient}")) # Assume that we never want to observe the Notify service's research mode # setting for this notification - we still need to be able to log into the From 613ee629aa120b3c345b437d97b62d74aa36f66c Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 19 Aug 2024 13:00:57 -0700 Subject: [PATCH 02/12] remove debug --- app/delivery/send_to_providers.py | 7 ------- app/user/rest.py | 3 --- 2 files changed, 10 deletions(-) diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index f699f1f12..c9922a9ff 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -80,20 +80,15 @@ def send_sms_to_provider(notification): # We start by trying to get the phone number from a job in s3. If we fail, we assume # the phone number is for the verification code on login, which is not a job. - print(f"IN THE TRY AND JOB_ID is {notification.job_id}") recipient = None # It is our 2facode, maybe if notification.job_id is None: - print(f"IN THE IF AND WE ARE GOING TO GET THE 2FA KEY") key = f"2facode-{notification.id}".replace(" ", "") - print(hilite(f"KEY IS SEND_TO_PROVIDERS IS {key}")) recipient = redis_store.get(key) if recipient: recipient = recipient.decode("utf-8") - print(hilite(f"RECIPIENT IN SEND TO PROVIDERS IS {recipient}")) else: - print(f"IN THE ELSE AND WE ARE GOING TO GET FROM S3") try: recipient = get_phone_number_from_s3( notification.service_id, @@ -103,9 +98,7 @@ def send_sms_to_provider(notification): except Exception: # It is our 2facode, maybe key = f"2facode-{notification.id}".replace(" ", "") - print(hilite(f"KEY IS SEND_TO_PROVIDERS IS {key}")) recipient = redis_store.get(key) - print(hilite(f"RECIPIENT IN SEND TO PROVIDERS IS {recipient}")) if recipient: recipient = recipient.decode("utf-8") diff --git a/app/user/rest.py b/app/user/rest.py index d184c03c4..704dd5eb7 100644 --- a/app/user/rest.py +++ b/app/user/rest.py @@ -307,9 +307,7 @@ def send_user_2fa_code(user_id, code_type): def send_user_sms_code(user_to_send_to, data): - print(hilite("SEND_USER_SMS_CODE")) recipient = data.get("to") or user_to_send_to.mobile_number - print(hilite(f"RECIPIENT {recipient}")) secret_code = create_secret_code() personalisation = {"verify_code": secret_code} @@ -373,7 +371,6 @@ def create_2fa_code( key = f"2facode-{saved_notification.id}".replace(" ", "") recipient = str(recipient) redis_store.set(key, recipient, ex=60 * 60) - print(hilite(f"SET REDIS 2facode-{saved_notification.id} to {recipient}")) # Assume that we never want to observe the Notify service's research mode # setting for this notification - we still need to be able to log into the From 08fe1a04db7626ffcf114eb27f52e232ee64ba0f Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 19 Aug 2024 13:12:31 -0700 Subject: [PATCH 03/12] fix imports --- app/clients/sms/aws_sns.py | 2 +- app/user/rest.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index 067dcd2a0..22c86f357 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -2,7 +2,6 @@ import os import re from time import monotonic -from app.utils import hilite import botocore import phonenumbers from boto3 import client @@ -10,6 +9,7 @@ from boto3 import client from app.clients import AWS_CLIENT_CONFIG from app.clients.sms import SmsClient from app.cloudfoundry_config import cloud_config +from app.utils import hilite class AwsSnsClient(SmsClient): diff --git a/app/user/rest.py b/app/user/rest.py index 704dd5eb7..a789ee128 100644 --- a/app/user/rest.py +++ b/app/user/rest.py @@ -53,7 +53,7 @@ from app.user.users_schema import ( post_verify_code_schema, post_verify_webauthn_schema, ) -from app.utils import hilite, url_with_token, utc_now +from app.utils import url_with_token, utc_now from notifications_utils.recipients import is_us_phone_number, use_numeric_sender user_blueprint = Blueprint("user", __name__) From 0ac6404230753f377bf5198df3d72b71fbcc7658 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 19 Aug 2024 14:03:38 -0700 Subject: [PATCH 04/12] fix tests --- tests/app/delivery/test_send_to_providers.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 63ab31ec7..2c107d028 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -75,6 +75,8 @@ def test_provider_to_use_raises_if_no_active_providers( def test_should_send_personalised_template_to_correct_sms_provider_and_persist( sample_sms_template_with_html, mocker ): + + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) db_notification = create_notification( template=sample_sms_template_with_html, personalisation={}, @@ -213,6 +215,8 @@ def test_should_not_send_sms_message_when_service_is_inactive_notification_is_in def test_send_sms_should_use_template_version_from_notification_not_latest( sample_template, mocker ): + + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) db_notification = create_notification( template=sample_template, to_field="2028675309", @@ -614,6 +618,7 @@ def test_should_update_billable_units_and_status_according_to_research_mode_and_ sample_template, mocker, research_mode, key_type, billable_units, expected_status ): + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) @@ -725,6 +730,8 @@ def test_should_send_sms_to_international_providers( def test_should_handle_sms_sender_and_prefix_message( mocker, sms_sender, prefix_sms, expected_sender, expected_content, notify_db_session ): + + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch("app.aws_sns_client.send_sms") service = create_service_with_defined_sms_sender( sms_sender_value=sms_sender, prefix_sms=prefix_sms From 19ae20a0d4b606c3eb34d99a96e42f7f3229b5c2 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 07:22:10 -0700 Subject: [PATCH 05/12] fix tests --- tests/app/delivery/test_send_to_providers.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 2c107d028..ac659a8fa 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -322,6 +322,8 @@ def test_should_send_sms_with_downgraded_content(notify_db_session, mocker): # é, o, and u are in GSM. # ī, grapes, tabs, zero width space and ellipsis are not # ó isn't in GSM, but it is in the welsh alphabet so will still be sent + + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) @@ -356,6 +358,8 @@ def test_should_send_sms_with_downgraded_content(notify_db_session, mocker): def test_send_sms_should_use_service_sms_sender( sample_service, sample_template, mocker ): + + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch("app.aws_sns_client.send_sms") sms_sender = create_service_sms_sender( @@ -681,6 +685,8 @@ def test_should_set_notification_billable_units_and_reduces_provider_priority_if def test_should_send_sms_to_international_providers( sample_template, sample_user, mocker ): + + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch("app.aws_sns_client.send_sms") notification_international = create_notification( @@ -788,6 +794,7 @@ def test_send_email_to_provider_uses_reply_to_from_notification( def test_send_sms_to_provider_should_use_normalised_to(mocker, client, sample_template): + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) @@ -850,6 +857,7 @@ def test_send_sms_to_provider_should_return_template_if_found_in_redis( mocker, client, sample_template ): + mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) From 6e22cf101ea2ac15db53f5f34177e51309857ddc Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 07:38:59 -0700 Subject: [PATCH 06/12] fix tests --- tests/app/delivery/test_send_to_providers.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index ac659a8fa..3cce76ad3 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -80,6 +80,7 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist( db_notification = create_notification( template=sample_sms_template_with_html, personalisation={}, + job_id="myjobid", status=NotificationStatus.CREATED, reply_to_text=sample_sms_template_with_html.service.get_default_sms_sender(), ) @@ -223,6 +224,7 @@ def test_send_sms_should_use_template_version_from_notification_not_latest( status=NotificationStatus.CREATED, reply_to_text=sample_template.service.get_default_sms_sender(), normalised_to="2028675309", + job_id="myjobid", ) mock_s3 = mocker.patch("app.delivery.send_to_providers.get_phone_number_from_s3") @@ -692,6 +694,7 @@ def test_should_send_sms_to_international_providers( notification_international = create_notification( template=sample_template, to_field="+6011-17224412", + job_id="myjobid", personalisation={"name": "Jo"}, status=NotificationStatus.CREATED, international=True, @@ -801,6 +804,7 @@ def test_send_sms_to_provider_should_use_normalised_to(mocker, client, sample_te send_mock = mocker.patch("app.aws_sns_client.send_sms") notification = create_notification( template=sample_template, + job_id="myjobid", to_field="+12028675309", normalised_to="2028675309", reply_to_text="testing", @@ -881,6 +885,7 @@ def test_send_sms_to_provider_should_return_template_if_found_in_redis( send_mock = mocker.patch("app.aws_sns_client.send_sms") notification = create_notification( template=sample_template, + job_id="myjobid", to_field="+447700900855", normalised_to="447700900855", reply_to_text="testing", From 7acb10078d5585191d38d8c178129c267bb73998 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 08:10:14 -0700 Subject: [PATCH 07/12] fix tests --- app/delivery/send_to_providers.py | 38 +++++++------------- tests/app/delivery/test_send_to_providers.py | 13 +++---- 2 files changed, 18 insertions(+), 33 deletions(-) diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index c9922a9ff..b965a73ea 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -82,33 +82,13 @@ def send_sms_to_provider(notification): # the phone number is for the verification code on login, which is not a job. recipient = None # It is our 2facode, maybe - if notification.job_id is None: - key = f"2facode-{notification.id}".replace(" ", "") - recipient = redis_store.get(key) - if recipient: - recipient = recipient.decode("utf-8") - - else: - try: - recipient = get_phone_number_from_s3( - notification.service_id, - notification.job_id, - notification.job_row_number, - ) - except Exception: - # It is our 2facode, maybe - key = f"2facode-{notification.id}".replace(" ", "") - recipient = redis_store.get(key) - - if recipient: - recipient = recipient.decode("utf-8") + recipient = _get_verify_code(notification) if recipient is None: - si = notification.service_id - ji = notification.job_id - jrn = notification.job_row_number - raise Exception( - f"The recipient for (Service ID: {si}; Job ID: {ji}; Job Row Number {jrn} was not found." + recipient = get_phone_number_from_s3( + notification.service_id, + notification.job_id, + notification.job_row_number, ) sender_numbers = get_sender_numbers(notification) @@ -146,6 +126,14 @@ def send_sms_to_provider(notification): return message_id +def _get_verify_code(notification): + key = f"2facode-{notification.id}".replace(" ", "") + recipient = redis_store.get(key) + if recipient: + recipient = recipient.decode("utf-8") + return recipient + + def get_sender_numbers(notification): possible_senders = dao_get_sms_senders_by_service_id(notification.service_id) sender_numbers = [] diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 3cce76ad3..056f13a6c 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -76,11 +76,10 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist( sample_sms_template_with_html, mocker ): - mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) + mocker.patch("app.delivery.send_to_providers._get_verify_code", return_value=None) db_notification = create_notification( template=sample_sms_template_with_html, personalisation={}, - job_id="myjobid", status=NotificationStatus.CREATED, reply_to_text=sample_sms_template_with_html.service.get_default_sms_sender(), ) @@ -117,7 +116,9 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist( def test_should_send_personalised_template_to_correct_email_provider_and_persist( sample_email_template_with_html, mocker ): - mock_redis = mocker.patch("app.delivery.send_to_providers.redis_store") + mock_redis = mocker.patch( + "app.delivery.send_to_providers._get_verify_code", return_value=None + ) utf8_encoded_email = "jo.smith@example.com".encode("utf-8") mock_redis.get.return_value = utf8_encoded_email email = utf8_encoded_email @@ -224,7 +225,6 @@ def test_send_sms_should_use_template_version_from_notification_not_latest( status=NotificationStatus.CREATED, reply_to_text=sample_template.service.get_default_sms_sender(), normalised_to="2028675309", - job_id="myjobid", ) mock_s3 = mocker.patch("app.delivery.send_to_providers.get_phone_number_from_s3") @@ -694,7 +694,6 @@ def test_should_send_sms_to_international_providers( notification_international = create_notification( template=sample_template, to_field="+6011-17224412", - job_id="myjobid", personalisation={"name": "Jo"}, status=NotificationStatus.CREATED, international=True, @@ -804,7 +803,6 @@ def test_send_sms_to_provider_should_use_normalised_to(mocker, client, sample_te send_mock = mocker.patch("app.aws_sns_client.send_sms") notification = create_notification( template=sample_template, - job_id="myjobid", to_field="+12028675309", normalised_to="2028675309", reply_to_text="testing", @@ -861,7 +859,7 @@ def test_send_sms_to_provider_should_return_template_if_found_in_redis( mocker, client, sample_template ): - mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) + mocker.patch("app.delivery.send_to_providers._get_verify_coe", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) @@ -885,7 +883,6 @@ def test_send_sms_to_provider_should_return_template_if_found_in_redis( send_mock = mocker.patch("app.aws_sns_client.send_sms") notification = create_notification( template=sample_template, - job_id="myjobid", to_field="+447700900855", normalised_to="447700900855", reply_to_text="testing", From eca9b19ffcbc474f5459ce836366c83746d5cb38 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 08:21:17 -0700 Subject: [PATCH 08/12] fix tests --- tests/app/delivery/test_send_to_providers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 056f13a6c..b90e3bb3c 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -218,7 +218,7 @@ def test_send_sms_should_use_template_version_from_notification_not_latest( sample_template, mocker ): - mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) + mocker.patch("app.delivery.send_to_providers._get_verify_code", return_value=None) db_notification = create_notification( template=sample_template, to_field="2028675309", @@ -688,7 +688,7 @@ def test_should_send_sms_to_international_providers( sample_template, sample_user, mocker ): - mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) + mocker.patch("app.delivery.send_to_providers._get_verify_code", return_value=None) mocker.patch("app.aws_sns_client.send_sms") notification_international = create_notification( @@ -796,7 +796,7 @@ def test_send_email_to_provider_uses_reply_to_from_notification( def test_send_sms_to_provider_should_use_normalised_to(mocker, client, sample_template): - mocker.patch("app.delivery.send_to_providers.redis_store", return_value=None) + mocker.patch("app.delivery.send_to_providers._get_verify_code", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) @@ -859,7 +859,7 @@ def test_send_sms_to_provider_should_return_template_if_found_in_redis( mocker, client, sample_template ): - mocker.patch("app.delivery.send_to_providers._get_verify_coe", return_value=None) + mocker.patch("app.delivery.send_to_providers._get_verify_code", return_value=None) mocker.patch( "app.delivery.send_to_providers.get_sender_numbers", return_value=["testing"] ) From d754b1517389880c917765119ac745d8930c6952 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 08:29:45 -0700 Subject: [PATCH 09/12] fix tests --- tests/app/delivery/test_send_to_providers.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index b90e3bb3c..8047e47e8 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -116,9 +116,7 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist( def test_should_send_personalised_template_to_correct_email_provider_and_persist( sample_email_template_with_html, mocker ): - mock_redis = mocker.patch( - "app.delivery.send_to_providers._get_verify_code", return_value=None - ) + utf8_encoded_email = "jo.smith@example.com".encode("utf-8") mock_redis.get.return_value = utf8_encoded_email email = utf8_encoded_email From e0404977c0c3c0fc960a2f4c58d7459fed9aa8a9 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 08:35:16 -0700 Subject: [PATCH 10/12] fix tests --- tests/app/delivery/test_send_to_providers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 8047e47e8..1c8b9a111 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -117,6 +117,7 @@ def test_should_send_personalised_template_to_correct_email_provider_and_persist sample_email_template_with_html, mocker ): + mock_redis = mocker.patch("app.delivery.send_to_providers.redis_store") utf8_encoded_email = "jo.smith@example.com".encode("utf-8") mock_redis.get.return_value = utf8_encoded_email email = utf8_encoded_email From 5c3b96123ae1f2ac4fabbe88459c5b21ae156eaf Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 10:29:19 -0700 Subject: [PATCH 11/12] code review feedback --- app/clients/sms/aws_sns.py | 1 - app/delivery/send_to_providers.py | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index 22c86f357..285f1feaa 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -49,7 +49,6 @@ class AwsSnsClient(SmsClient): def send_sms(self, to, content, reference, sender=None, international=False): matched = False - print(hilite(f"TO {to}")) for match in phonenumbers.PhoneNumberMatcher(to, "US"): matched = True to = phonenumbers.format_number( diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index b965a73ea..19e132e4b 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -1,4 +1,5 @@ import json +from contextlib import suppress from urllib import parse from cachetools import TTLCache, cached @@ -129,7 +130,7 @@ def send_sms_to_provider(notification): def _get_verify_code(notification): key = f"2facode-{notification.id}".replace(" ", "") recipient = redis_store.get(key) - if recipient: + with suppress(AttributeError): recipient = recipient.decode("utf-8") return recipient From 6a7717c1d2a331297fd6cc6cfae2f75416921b77 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 20 Aug 2024 10:35:10 -0700 Subject: [PATCH 12/12] fix import --- app/clients/sms/aws_sns.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index 285f1feaa..c351ec179 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -9,7 +9,6 @@ from boto3 import client from app.clients import AWS_CLIENT_CONFIG from app.clients.sms import SmsClient from app.cloudfoundry_config import cloud_config -from app.utils import hilite class AwsSnsClient(SmsClient):