mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-24 16:23:44 -04:00
make tests parametrized for all three key types
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
|
import pytest
|
||||||
from flask import json
|
from flask import json
|
||||||
from notifications_python_client.authentication import create_jwt_token
|
from notifications_python_client.authentication import create_jwt_token
|
||||||
|
|
||||||
@@ -11,7 +12,7 @@ from app.dao.notifications_dao import (
|
|||||||
dao_update_notification
|
dao_update_notification
|
||||||
)
|
)
|
||||||
from app.dao.api_key_dao import save_model_api_key
|
from app.dao.api_key_dao import save_model_api_key
|
||||||
from app.models import ApiKey, KEY_TYPE_NORMAL, KEY_TYPE_TEAM
|
from app.models import ApiKey, KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST
|
||||||
from tests import create_authorization_header
|
from tests import create_authorization_header
|
||||||
from tests.app.conftest import sample_notification as create_sample_notification
|
from tests.app.conftest import sample_notification as create_sample_notification
|
||||||
|
|
||||||
@@ -110,22 +111,23 @@ def test_get_real_notification_from_team_api_key_fails(notify_api, sample_notifi
|
|||||||
assert notification['message'] == "No result found"
|
assert notification['message'] == "No result found"
|
||||||
|
|
||||||
|
|
||||||
def test_get_team_notification_from_different_team_api_key_succeeds(notify_api, sample_notification):
|
@pytest.mark.parametrize('key_type', [KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST])
|
||||||
|
def test_get_notification_from_different_api_key_of_same_type_succeeds(notify_api, sample_notification, key_type):
|
||||||
with notify_api.test_request_context(), notify_api.test_client() as client:
|
with notify_api.test_request_context(), notify_api.test_client() as client:
|
||||||
creation_api_key = ApiKey(service=sample_notification.service,
|
creation_api_key = ApiKey(service=sample_notification.service,
|
||||||
name='creation_api_key',
|
name='creation_api_key',
|
||||||
created_by=sample_notification.service.created_by,
|
created_by=sample_notification.service.created_by,
|
||||||
key_type=KEY_TYPE_TEAM)
|
key_type=key_type)
|
||||||
save_model_api_key(creation_api_key)
|
save_model_api_key(creation_api_key)
|
||||||
|
|
||||||
querying_api_key = ApiKey(service=sample_notification.service,
|
querying_api_key = ApiKey(service=sample_notification.service,
|
||||||
name='querying_api_key',
|
name='querying_api_key',
|
||||||
created_by=sample_notification.service.created_by,
|
created_by=sample_notification.service.created_by,
|
||||||
key_type=KEY_TYPE_TEAM)
|
key_type=key_type)
|
||||||
save_model_api_key(querying_api_key)
|
save_model_api_key(querying_api_key)
|
||||||
|
|
||||||
sample_notification.api_key = creation_api_key
|
sample_notification.api_key = creation_api_key
|
||||||
sample_notification.key_type = KEY_TYPE_TEAM
|
sample_notification.key_type = key_type
|
||||||
dao_update_notification(sample_notification)
|
dao_update_notification(sample_notification)
|
||||||
|
|
||||||
response = client.get(
|
response = client.get(
|
||||||
@@ -164,6 +166,7 @@ def test_get_all_notifications(notify_api, sample_notification):
|
|||||||
assert notifications['notifications'][0]['body'] == "This is a template" # sample_template.content
|
assert notifications['notifications'][0]['body'] == "This is a template" # sample_template.content
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('key_type', [KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST])
|
||||||
def test_get_all_notifications_only_returns_notifications_of_matching_type(
|
def test_get_all_notifications_only_returns_notifications_of_matching_type(
|
||||||
notify_api,
|
notify_api,
|
||||||
notify_db,
|
notify_db,
|
||||||
@@ -183,6 +186,12 @@ def test_get_all_notifications_only_returns_notifications_of_matching_type(
|
|||||||
key_type=KEY_TYPE_NORMAL)
|
key_type=KEY_TYPE_NORMAL)
|
||||||
save_model_api_key(normal_api_key)
|
save_model_api_key(normal_api_key)
|
||||||
|
|
||||||
|
test_api_key = ApiKey(service=sample_service,
|
||||||
|
name='test_api_key',
|
||||||
|
created_by=sample_service.created_by,
|
||||||
|
key_type=KEY_TYPE_TEST)
|
||||||
|
save_model_api_key(test_api_key)
|
||||||
|
|
||||||
normal_notification = create_sample_notification(
|
normal_notification = create_sample_notification(
|
||||||
notify_db,
|
notify_db,
|
||||||
notify_db_session,
|
notify_db_session,
|
||||||
@@ -195,25 +204,29 @@ def test_get_all_notifications_only_returns_notifications_of_matching_type(
|
|||||||
api_key_id=team_api_key.id,
|
api_key_id=team_api_key.id,
|
||||||
key_type=KEY_TYPE_TEAM
|
key_type=KEY_TYPE_TEAM
|
||||||
)
|
)
|
||||||
|
test_notification = create_sample_notification(
|
||||||
|
notify_db,
|
||||||
|
notify_db_session,
|
||||||
|
api_key_id=test_api_key.id,
|
||||||
|
key_type=KEY_TYPE_TEST
|
||||||
|
)
|
||||||
|
|
||||||
|
notifications = {
|
||||||
|
KEY_TYPE_NORMAL: normal_notification,
|
||||||
|
KEY_TYPE_TEAM: team_notification,
|
||||||
|
KEY_TYPE_TEST: test_notification
|
||||||
|
}
|
||||||
|
|
||||||
normal_response = client.get(
|
normal_response = client.get(
|
||||||
path='/notifications',
|
path='/notifications',
|
||||||
headers=_create_auth_header_from_key(normal_api_key))
|
headers=_create_auth_header_from_key(normal_api_key))
|
||||||
|
|
||||||
team_response = client.get(
|
|
||||||
path='/notifications',
|
|
||||||
headers=_create_auth_header_from_key(team_api_key))
|
|
||||||
|
|
||||||
assert normal_response.status_code == 200
|
assert normal_response.status_code == 200
|
||||||
assert team_response.status_code == 200
|
assert team_response.status_code == 200
|
||||||
|
|
||||||
normal_notifications = json.loads(normal_response.get_data(as_text=True))['notifications']
|
notifications = json.loads(normal_response.get_data(as_text=True))['notifications']
|
||||||
assert len(normal_notifications) == 1
|
assert len(notifications) == 1
|
||||||
assert normal_notifications[0]['id'] == str(normal_notification.id)
|
assert notifications[0]['id'] == str(notifications[key_type].id)
|
||||||
|
|
||||||
team_notifications = json.loads(team_response.get_data(as_text=True))['notifications']
|
|
||||||
assert len(team_notifications) == 1
|
|
||||||
assert team_notifications[0]['id'] == str(team_notification.id)
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_all_notifications_newest_first(notify_api, notify_db, notify_db_session, sample_email_template):
|
def test_get_all_notifications_newest_first(notify_api, notify_db, notify_db_session, sample_email_template):
|
||||||
|
|||||||
Reference in New Issue
Block a user