From d7bb83fadfa1fddfa80f6b193438c90ec853925e Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 23 Sep 2016 10:35:31 +0100 Subject: [PATCH] Optionally get notifications created w/ test key MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is only for the method that the admin app uses; it doesn’t affect the public get notifications endpoint. --- app/schemas.py | 1 + app/service/rest.py | 5 ++++- tests/app/service/test_rest.py | 25 +++++++++++++++++++++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/schemas.py b/app/schemas.py index ccabfc9d6..bb4aca8e5 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -422,6 +422,7 @@ class NotificationsFilterSchema(ma.Schema): page_size = fields.Int(required=False) limit_days = fields.Int(required=False) include_jobs = fields.Boolean(required=False) + include_from_test_key = fields.Boolean(required=False) @pre_load def handle_multidict(self, in_data): diff --git a/app/service/rest.py b/app/service/rest.py index 011977a84..d50326805 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -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') limit_days = data.get('limit_days') 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( service_id, @@ -221,7 +222,9 @@ def get_all_notifications_for_service(service_id): page=page, page_size=page_size, 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['service_id'] = service_id return jsonify( diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index ac8c58e3f..6c5287058 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -16,6 +16,7 @@ from tests.app.conftest import ( sample_user as create_sample_user, sample_notification as create_sample_notification, sample_notification_with_job) +from app.models import KEY_TYPE_TEST 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 +@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( notify_api, notify_db, 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_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) + 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() response = client.get( - path='/service/{}/notifications'.format(sample_service.id), - headers=[auth_header]) + path='/service/{}/notifications?include_from_test_key={}'.format( + sample_service.id, include_from_test_key + ), + headers=[auth_header] + ) 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'][1]['to'] == without_job.to assert response.status_code == 200