diff --git a/app/dao/service_contact_list_dao.py b/app/dao/service_contact_list_dao.py index 04dc0148a..d4e2826b9 100644 --- a/app/dao/service_contact_list_dao.py +++ b/app/dao/service_contact_list_dao.py @@ -2,6 +2,15 @@ from app import db from app.models import ServiceContactList +def dao_get_contact_list_by_id(service_id, contact_list_id): + contact_list = ServiceContactList.query.filter_by( + service_id=service_id, + id=contact_list_id + ).one() + + return contact_list + + def dao_get_contact_lists(service_id): contact_lists = ServiceContactList.query.filter_by( service_id=service_id diff --git a/app/service/rest.py b/app/service/rest.py index f60f5f6dc..86920d297 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -36,7 +36,8 @@ from app.dao.returned_letters_dao import ( fetch_returned_letter_summary, fetch_returned_letters, ) -from app.dao.service_contact_list_dao import dao_get_contact_lists, save_service_contact_list +from app.dao.service_contact_list_dao import dao_get_contact_lists, save_service_contact_list, \ + dao_get_contact_list_by_id from app.dao.service_data_retention_dao import ( fetch_service_data_retention, fetch_service_data_retention_by_id, @@ -1023,6 +1024,16 @@ def get_contact_list(service_id): return jsonify([x.serialize() for x in contact_lists]) +@service_blueprint.route('//contact-list/', methods=['GET']) +def get_contact_list_by_id(service_id, contact_list_id): + contact_list = dao_get_contact_list_by_id( + service_id=service_id, + contact_list_id=contact_list_id + ) + + return jsonify(contact_list.serialize()) + + @service_blueprint.route('//contact-list', methods=['POST']) def create_contact_list(service_id): service_contact_list = validate(request.get_json(), create_service_contact_list_schema) diff --git a/tests/app/service/test_service_contact_list_rest.py b/tests/app/service/test_service_contact_list_rest.py index c7e741e77..387d47a7c 100644 --- a/tests/app/service/test_service_contact_list_rest.py +++ b/tests/app/service/test_service_contact_list_rest.py @@ -79,3 +79,37 @@ def test_get_contact_list_returns_for_service(admin_request, notify_db_session): assert len(response) == 2 assert response[0] == expected_list_2.serialize() assert response[1] == expected_list_1.serialize() + + +def test_dao_get_contact_list_by_id(admin_request, sample_service): + service_1 = create_service(service_name='Service under test') + + expected_list_1 = create_service_contact_list(service=service_1) + create_service_contact_list(service=service_1) + + response = admin_request.get( + 'service.get_contact_list_by_id', + service_id=service_1.id, + contact_list_id=expected_list_1.id + ) + + assert response == expected_list_1.serialize() + + +def test_dao_get_contact_list_by_id_does_not_return_if_contact_list_id_for_another_service( + admin_request, sample_service +): + service_1 = create_service(service_name='Service requesting list') + service_2 = create_service(service_name='Service that owns the list') + + create_service_contact_list(service=service_1) + list_2 = create_service_contact_list(service=service_2) + + response = admin_request.get( + 'service.get_contact_list_by_id', + service_id=service_1.id, + contact_list_id=list_2.id, + _expected_status=404 + ) + + assert response['message'] == "No result found"