mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-28 22:09:44 -05:00
Merge pull request #1020 from alphagov/service-notification-by-id
Add private endpoint to get notification by ID
This commit is contained in:
@@ -300,6 +300,19 @@ def get_all_notifications_for_service(service_id):
|
||||
), 200
|
||||
|
||||
|
||||
@service_blueprint.route('/<uuid:service_id>/notifications/<uuid:notification_id>', methods=['GET'])
|
||||
def get_notification_for_service(service_id, notification_id):
|
||||
|
||||
notification = notifications_dao.get_notification_with_personalisation(
|
||||
service_id,
|
||||
notification_id,
|
||||
key_type=None,
|
||||
)
|
||||
return jsonify(
|
||||
notification_with_template_schema.dump(notification).data,
|
||||
), 200
|
||||
|
||||
|
||||
def search_for_notification_by_to_field(service_id, search_term, statuses):
|
||||
results = notifications_dao.dao_get_notifications_by_to_field(service_id, search_term, statuses)
|
||||
return jsonify(
|
||||
|
||||
@@ -1248,6 +1248,48 @@ def test_get_all_notifications_for_service_in_order(notify_api, notify_db, notif
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_get_notification_for_service_without_uuid(client, notify_db, notify_db_session):
|
||||
service_1 = create_service(notify_db, notify_db_session, service_name="1", email_from='1')
|
||||
response = client.get(
|
||||
path='/service/{}/notifications/{}'.format(service_1.id, 'foo'),
|
||||
headers=[create_authorization_header()]
|
||||
)
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
def test_get_notification_for_service(client, notify_db, notify_db_session):
|
||||
|
||||
service_1 = create_service(notify_db, notify_db_session, service_name="1", email_from='1')
|
||||
service_2 = create_service(notify_db, notify_db_session, service_name="2", email_from='2')
|
||||
|
||||
service_1_notifications = [
|
||||
create_sample_notification(notify_db, notify_db_session, service=service_1),
|
||||
create_sample_notification(notify_db, notify_db_session, service=service_1),
|
||||
create_sample_notification(notify_db, notify_db_session, service=service_1),
|
||||
]
|
||||
|
||||
service_2_notifications = [
|
||||
create_sample_notification(notify_db, notify_db_session, service=service_2)
|
||||
]
|
||||
|
||||
for notification in service_1_notifications:
|
||||
response = client.get(
|
||||
path='/service/{}/notifications/{}'.format(service_1.id, notification.id),
|
||||
headers=[create_authorization_header()]
|
||||
)
|
||||
resp = json.loads(response.get_data(as_text=True))
|
||||
assert str(resp['id']) == str(notification.id)
|
||||
assert response.status_code == 200
|
||||
|
||||
service_2_response = client.get(
|
||||
path='/service/{}/notifications/{}'.format(service_2.id, notification.id),
|
||||
headers=[create_authorization_header()]
|
||||
)
|
||||
assert service_2_response.status_code == 404
|
||||
service_2_response = json.loads(service_2_response.get_data(as_text=True))
|
||||
assert service_2_response == {'message': 'No result found', 'result': 'error'}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'include_from_test_key, expected_count_of_notifications',
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user