mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-04 18:31:13 -05:00
Test returning notifications by "?status=failed"
Check that all failure states are returned by asking for notifications of type "failure".
This commit is contained in:
@@ -309,6 +309,7 @@ def _filter_query(query, filter_dict=None):
|
||||
# filter by status
|
||||
statuses = multidict.getlist('status')
|
||||
if statuses:
|
||||
statuses = Notification.substitute_status(statuses)
|
||||
query = query.filter(Notification.status.in_(statuses))
|
||||
|
||||
# filter by template
|
||||
|
||||
@@ -8,8 +8,6 @@ import pytest
|
||||
from freezegun import freeze_time
|
||||
from sqlalchemy.exc import SQLAlchemyError, IntegrityError
|
||||
|
||||
from app import db
|
||||
|
||||
from app.models import (
|
||||
Notification,
|
||||
NotificationHistory,
|
||||
@@ -17,6 +15,7 @@ from app.models import (
|
||||
NotificationStatistics,
|
||||
TemplateStatistics,
|
||||
NOTIFICATION_STATUS_TYPES,
|
||||
NOTIFICATION_STATUS_TYPES_FAILED,
|
||||
KEY_TYPE_NORMAL,
|
||||
KEY_TYPE_TEAM,
|
||||
KEY_TYPE_TEST
|
||||
@@ -683,7 +682,10 @@ def test_get_all_notifications_for_job_by_status(notify_db, notify_db_session, s
|
||||
assert len(notifications().items) == len(NOTIFICATION_STATUS_TYPES)
|
||||
|
||||
for status in NOTIFICATION_STATUS_TYPES:
|
||||
assert len(notifications(filter_dict={'status': status}).items) == 1
|
||||
if status == 'failed':
|
||||
assert len(notifications(filter_dict={'status': status}).items) == len(NOTIFICATION_STATUS_TYPES_FAILED)
|
||||
else:
|
||||
assert len(notifications(filter_dict={'status': status}).items) == 1
|
||||
|
||||
assert len(notifications(filter_dict={'status': NOTIFICATION_STATUS_TYPES[:3]}).items) == 3
|
||||
|
||||
|
||||
@@ -184,7 +184,30 @@ def test_get_all_notifications_filter_by_multiple_statuses(client, notify_db, no
|
||||
|
||||
|
||||
def test_get_all_notifications_filter_by_failed_status(client, notify_db, notify_db_session):
|
||||
pass
|
||||
created_notification = create_sample_notification(notify_db, notify_db_session, status="created")
|
||||
failed_notifications = [
|
||||
create_sample_notification(notify_db, notify_db_session, status=_status)
|
||||
for _status in ["technical-failure", "temporary-failure", "permanent-failure"]
|
||||
]
|
||||
|
||||
auth_header = create_authorization_header(service_id=created_notification.service_id)
|
||||
response = client.get(
|
||||
path='/v2/notifications?status=failed',
|
||||
headers=[('Content-Type', 'application/json'), auth_header])
|
||||
|
||||
json_response = json.loads(response.get_data(as_text=True))
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.headers['Content-type'] == "application/json"
|
||||
assert json_response['links']['current'] == "/v2/notifications?status=failed"
|
||||
assert 'next' in json_response['links'].keys()
|
||||
assert len(json_response['notifications']) == 3
|
||||
|
||||
returned_notification_ids = [n['id'] for n in json_response['notifications']]
|
||||
for _id in [_notification.id for _notification in failed_notifications]:
|
||||
assert str(_id) in returned_notification_ids
|
||||
|
||||
assert created_notification.id not in returned_notification_ids
|
||||
|
||||
|
||||
def test_get_all_notifications_filter_by_id(client, notify_db, notify_db_session):
|
||||
|
||||
Reference in New Issue
Block a user