substitute phone numbers back in when sending data to reports

This commit is contained in:
Kenneth Kehl
2024-01-17 09:04:04 -08:00
parent 848b62092a
commit c13ed73d23
4 changed files with 42 additions and 5 deletions

View File

@@ -2,7 +2,7 @@ import dateutil
import pytz
from flask import Blueprint, current_app, jsonify, request
from app.aws.s3 import get_job_metadata_from_s3
from app.aws.s3 import get_job_metadata_from_s3, get_phone_number_from_s3
from app.celery.tasks import process_job
from app.config import QueueNames
from app.dao.fact_notification_status_dao import fetch_notification_statuses_for_job
@@ -76,6 +76,16 @@ def get_all_notifications_for_service_job(service_id, job_id):
kwargs["service_id"] = service_id
kwargs["job_id"] = job_id
for notification in paginated_notifications.items:
if notification.job_id is not None:
recipient = get_phone_number_from_s3(
notification.service_id,
notification.job_id,
notification.job_row_number,
)
notification.to = recipient
notification.normalised_to = recipient
notifications = None
if data.get("format_for_csv"):
notifications = [

View File

@@ -6,6 +6,7 @@ from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm.exc import NoResultFound
from werkzeug.datastructures import MultiDict
from app.aws.s3 import get_phone_number_from_s3
from app.config import QueueNames
from app.dao import fact_notification_status_dao, notifications_dao
from app.dao.annual_billing_dao import set_default_free_allowance_for_service
@@ -425,6 +426,16 @@ def get_all_notifications_for_service(service_id):
include_one_off=include_one_off,
)
for notification in pagination.items:
if notification.job_id is not None:
recipient = get_phone_number_from_s3(
notification.service_id,
notification.job_id,
notification.job_row_number,
)
notification.to = recipient
notification.normalised_to = recipient
kwargs = request.args.to_dict()
kwargs["service_id"] = service_id

View File

@@ -448,8 +448,11 @@ def _setup_jobs(template, number_of_jobs=5):
def test_get_all_notifications_for_job_in_order_of_job_number(
admin_request, sample_template
admin_request, sample_template, mocker
):
mock_s3 = mocker.patch("app.job.rest.get_phone_number_from_s3")
mock_s3.return_value = "15555555555"
main_job = create_job(sample_template)
another_job = create_job(sample_template)
@@ -483,8 +486,11 @@ def test_get_all_notifications_for_job_in_order_of_job_number(
],
)
def test_get_all_notifications_for_job_filtered_by_status(
admin_request, sample_job, expected_notification_count, status_args
admin_request, sample_job, expected_notification_count, status_args, mocker
):
mock_s3 = mocker.patch("app.job.rest.get_phone_number_from_s3")
mock_s3.return_value = "15555555555"
create_notification(job=sample_job, to_field="1", status="created")
resp = admin_request.get(
@@ -497,8 +503,11 @@ def test_get_all_notifications_for_job_filtered_by_status(
def test_get_all_notifications_for_job_returns_correct_format(
admin_request, sample_notification_with_job
admin_request, sample_notification_with_job, mocker
):
mock_s3 = mocker.patch("app.job.rest.get_phone_number_from_s3")
mock_s3.return_value = "15555555555"
service_id = sample_notification_with_job.service_id
job_id = sample_notification_with_job.job_id
@@ -813,8 +822,11 @@ def create_10_jobs(template):
def test_get_all_notifications_for_job_returns_csv_format(
admin_request, sample_notification_with_job
admin_request, sample_notification_with_job, mocker
):
mock_s3 = mocker.patch("app.job.rest.get_phone_number_from_s3")
mock_s3.return_value = "15555555555"
resp = admin_request.get(
"job.get_all_notifications_for_service_job",
service_id=sample_notification_with_job.service_id,

View File

@@ -1846,7 +1846,11 @@ def test_get_all_notifications_for_service_including_ones_made_by_jobs(
sample_notification,
sample_notification_with_job,
sample_template,
mocker,
):
mock_s3 = mocker.patch("app.service.rest.get_phone_number_from_s3")
mock_s3.return_value = "1"
# notification from_test_api_key
create_notification(sample_template, key_type=KEY_TYPE_TEST)