mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-19 14:08:47 -04:00
Optionally get notifications created w/ test key
This is only for the method that the admin app uses; it doesn’t affect the public get notifications endpoint.
This commit is contained in:
@@ -422,6 +422,7 @@ class NotificationsFilterSchema(ma.Schema):
|
|||||||
page_size = fields.Int(required=False)
|
page_size = fields.Int(required=False)
|
||||||
limit_days = fields.Int(required=False)
|
limit_days = fields.Int(required=False)
|
||||||
include_jobs = fields.Boolean(required=False)
|
include_jobs = fields.Boolean(required=False)
|
||||||
|
include_from_test_key = fields.Boolean(required=False)
|
||||||
|
|
||||||
@pre_load
|
@pre_load
|
||||||
def handle_multidict(self, in_data):
|
def handle_multidict(self, in_data):
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ def get_all_notifications_for_service(service_id):
|
|||||||
page_size = data['page_size'] if 'page_size' in data else current_app.config.get('PAGE_SIZE')
|
page_size = data['page_size'] if 'page_size' in data else current_app.config.get('PAGE_SIZE')
|
||||||
limit_days = data.get('limit_days')
|
limit_days = data.get('limit_days')
|
||||||
include_jobs = data.get('include_jobs', True)
|
include_jobs = data.get('include_jobs', True)
|
||||||
|
include_from_test_key = data.get('include_from_test_key', False)
|
||||||
|
|
||||||
pagination = notifications_dao.get_notifications_for_service(
|
pagination = notifications_dao.get_notifications_for_service(
|
||||||
service_id,
|
service_id,
|
||||||
@@ -221,7 +222,9 @@ def get_all_notifications_for_service(service_id):
|
|||||||
page=page,
|
page=page,
|
||||||
page_size=page_size,
|
page_size=page_size,
|
||||||
limit_days=limit_days,
|
limit_days=limit_days,
|
||||||
include_jobs=include_jobs)
|
include_jobs=include_jobs,
|
||||||
|
include_from_test_key=include_from_test_key
|
||||||
|
)
|
||||||
kwargs = request.args.to_dict()
|
kwargs = request.args.to_dict()
|
||||||
kwargs['service_id'] = service_id
|
kwargs['service_id'] = service_id
|
||||||
return jsonify(
|
return jsonify(
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ from tests.app.conftest import (
|
|||||||
sample_user as create_sample_user,
|
sample_user as create_sample_user,
|
||||||
sample_notification as create_sample_notification,
|
sample_notification as create_sample_notification,
|
||||||
sample_notification_with_job)
|
sample_notification_with_job)
|
||||||
|
from app.models import KEY_TYPE_TEST
|
||||||
|
|
||||||
|
|
||||||
def test_get_service_list(notify_api, service_factory):
|
def test_get_service_list(notify_api, service_factory):
|
||||||
@@ -1037,23 +1038,39 @@ def test_get_all_notifications_for_service_in_order(notify_api, notify_db, notif
|
|||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'include_from_test_key, expected_count_of_notifications',
|
||||||
|
[
|
||||||
|
(False, 2),
|
||||||
|
(True, 3)
|
||||||
|
]
|
||||||
|
)
|
||||||
def test_get_all_notifications_for_service_including_ones_made_by_jobs(
|
def test_get_all_notifications_for_service_including_ones_made_by_jobs(
|
||||||
notify_api,
|
notify_api,
|
||||||
notify_db,
|
notify_db,
|
||||||
notify_db_session,
|
notify_db_session,
|
||||||
sample_service):
|
sample_service,
|
||||||
|
include_from_test_key,
|
||||||
|
expected_count_of_notifications
|
||||||
|
):
|
||||||
with notify_api.test_request_context(), notify_api.test_client() as client:
|
with notify_api.test_request_context(), notify_api.test_client() as client:
|
||||||
with_job = sample_notification_with_job(notify_db, notify_db_session, service=sample_service)
|
with_job = sample_notification_with_job(notify_db, notify_db_session, service=sample_service)
|
||||||
without_job = create_sample_notification(notify_db, notify_db_session, service=sample_service)
|
without_job = create_sample_notification(notify_db, notify_db_session, service=sample_service)
|
||||||
|
from_test_api_key = create_sample_notification(
|
||||||
|
notify_db, notify_db_session, service=sample_service, key_type=KEY_TYPE_TEST
|
||||||
|
)
|
||||||
|
|
||||||
auth_header = create_authorization_header()
|
auth_header = create_authorization_header()
|
||||||
|
|
||||||
response = client.get(
|
response = client.get(
|
||||||
path='/service/{}/notifications'.format(sample_service.id),
|
path='/service/{}/notifications?include_from_test_key={}'.format(
|
||||||
headers=[auth_header])
|
sample_service.id, include_from_test_key
|
||||||
|
),
|
||||||
|
headers=[auth_header]
|
||||||
|
)
|
||||||
|
|
||||||
resp = json.loads(response.get_data(as_text=True))
|
resp = json.loads(response.get_data(as_text=True))
|
||||||
assert len(resp['notifications']) == 2
|
assert len(resp['notifications']) == expected_count_of_notifications
|
||||||
assert resp['notifications'][0]['to'] == with_job.to
|
assert resp['notifications'][0]['to'] == with_job.to
|
||||||
assert resp['notifications'][1]['to'] == without_job.to
|
assert resp['notifications'][1]['to'] == without_job.to
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|||||||
Reference in New Issue
Block a user