diff --git a/notifications_utils/request_helper.py b/notifications_utils/request_helper.py index 6c9edc8a7..eb7a2061f 100644 --- a/notifications_utils/request_helper.py +++ b/notifications_utils/request_helper.py @@ -62,22 +62,30 @@ def __init__(self, app): self._app = app def __call__(self, environ, start_response): - req = NotifyRequest(environ) - - def rewrite_response_headers(status, headers, exc_info=None): - lower_existing_header_names = frozenset( - name.lower() for name, value in headers - ) - - if TRACE_ID_HEADER.lower() not in lower_existing_header_names: - headers.append((TRACE_ID_HEADER, str(req.trace_id))) - - if SPAN_ID_HEADER.lower() not in lower_existing_header_names: - headers.append((SPAN_ID_HEADER, str(req.span_id))) - - return start_response(status, headers, exc_info) - - return self._app(environ, rewrite_response_headers) + try: + req = NotifyRequest(environ) + + def rewrite_response_headers(status, headers, exc_info=None): + lower_existing_header_names = frozenset( + name.lower() for name, value in headers + ) + + if TRACE_ID_HEADER.lower() not in lower_existing_header_names: + headers.append((TRACE_ID_HEADER, str(req.trace_id))) + + if SPAN_ID_HEADER.lower() not in lower_existing_header_names: + headers.append((SPAN_ID_HEADER, str(req.span_id))) + + return start_response(status, headers, exc_info) + + return self._app(environ, rewrite_response_headers) + except BaseException as be: # noqa + if "AuthError" in str(be): # notify-api-1135 + current_app.logger.error(be) + elif "AttributeError" in str(be): # notify-api-1394 + current_app.logger.error(be) + else: + raise be def init_app(app): diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index 7f16a799a..63ab31ec7 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -330,7 +330,7 @@ def test_should_send_sms_with_downgraded_content(notify_db_session, mocker): template=template, ) db_notification.personalisation = {"misc": placeholder} - db_notification.reply_to_text = 'testing' + db_notification.reply_to_text = "testing" mocker.patch("app.aws_sns_client.send_sms") @@ -622,7 +622,7 @@ def test_should_update_billable_units_and_status_according_to_research_mode_and_ billable_units=0, status=NotificationStatus.CREATED, key_type=key_type, - reply_to_text='testing', + reply_to_text="testing", ) mocker.patch("app.aws_sns_client.send_sms") mocker.patch( @@ -786,7 +786,10 @@ 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, to_field="+12028675309", normalised_to="2028675309", reply_to_text='testing' + template=sample_template, + to_field="+12028675309", + normalised_to="2028675309", + reply_to_text="testing", ) mock_s3 = mocker.patch("app.delivery.send_to_providers.get_phone_number_from_s3") @@ -862,7 +865,10 @@ 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, to_field="+447700900855", normalised_to="447700900855", reply_to_text='testing' + template=sample_template, + to_field="+447700900855", + normalised_to="447700900855", + reply_to_text="testing", ) mock_s3 = mocker.patch("app.delivery.send_to_providers.get_phone_number_from_s3")