mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-03 21:21:14 -04:00
Use fixtures for callbacks in a Pytest 5 compatible way
This commit is contained in:
@@ -150,6 +150,8 @@ def service_json(
|
||||
users = []
|
||||
if permissions is None:
|
||||
permissions = ['email', 'sms']
|
||||
if service_callback_api is None:
|
||||
service_callback_api = []
|
||||
if inbound_api is None:
|
||||
inbound_api = []
|
||||
return {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import uuid
|
||||
from collections import OrderedDict
|
||||
from unittest.mock import call
|
||||
from uuid import uuid4
|
||||
|
||||
import pytest
|
||||
from flask import url_for
|
||||
@@ -9,11 +8,7 @@ from flask import url_for
|
||||
from tests import sample_uuid, validate_route_permission
|
||||
from tests.conftest import (
|
||||
SERVICE_ONE_ID,
|
||||
mock_get_empty_service_callback_api,
|
||||
mock_get_empty_service_inbound_api,
|
||||
mock_get_notifications,
|
||||
mock_get_valid_service_callback_api,
|
||||
mock_get_valid_service_inbound_api,
|
||||
normalize_spaces,
|
||||
)
|
||||
|
||||
@@ -522,16 +517,6 @@ def test_callback_forms_validation(
|
||||
assert error_msgs == expected_errors
|
||||
|
||||
|
||||
@pytest.mark.parametrize('existing_values, callback_ids, delete_should_be_called', [
|
||||
((
|
||||
mock_get_valid_service_callback_api,
|
||||
mock_get_valid_service_inbound_api,
|
||||
), [uuid4()], True),
|
||||
((
|
||||
mock_get_empty_service_callback_api,
|
||||
mock_get_empty_service_inbound_api,
|
||||
), [], False),
|
||||
])
|
||||
@pytest.mark.parametrize('bearer_token', ['', 'some-bearer-token'])
|
||||
@pytest.mark.parametrize('endpoint, expected_delete_url', [
|
||||
(
|
||||
@@ -546,22 +531,18 @@ def test_callback_forms_validation(
|
||||
def test_callback_forms_can_be_cleared(
|
||||
client_request,
|
||||
service_one,
|
||||
existing_values,
|
||||
callback_ids,
|
||||
delete_should_be_called,
|
||||
endpoint,
|
||||
expected_delete_url,
|
||||
bearer_token,
|
||||
mocker,
|
||||
fake_uuid,
|
||||
mock_get_valid_service_callback_api,
|
||||
mock_get_valid_service_inbound_api,
|
||||
):
|
||||
|
||||
service_one['service_callback_api'] = callback_ids
|
||||
service_one['inbound_api'] = callback_ids
|
||||
mocked_delete = mocker.patch('app.service_api_client.delete')
|
||||
for mock_get_callback in existing_values:
|
||||
mock_get_callback(mocker)
|
||||
|
||||
service_one['service_callback_api'] = [fake_uuid]
|
||||
service_one['inbound_api'] = [fake_uuid]
|
||||
service_one['permissions'] = ['inbound_sms']
|
||||
mocked_delete = mocker.patch('app.service_api_client.delete')
|
||||
|
||||
page = client_request.post(
|
||||
endpoint,
|
||||
@@ -579,14 +560,53 @@ def test_callback_forms_can_be_cleared(
|
||||
|
||||
assert not page.select(".error-message")
|
||||
|
||||
if delete_should_be_called:
|
||||
mocked_delete.assert_called_once_with(
|
||||
expected_delete_url.format(
|
||||
service_one['id'], callback_ids[0]
|
||||
)
|
||||
mocked_delete.assert_called_once_with(
|
||||
expected_delete_url.format(
|
||||
service_one['id'], fake_uuid
|
||||
)
|
||||
else:
|
||||
assert mocked_delete.call_args_list == []
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('bearer_token', ['', 'some-bearer-token'])
|
||||
@pytest.mark.parametrize('endpoint, expected_delete_url', [
|
||||
(
|
||||
'main.delivery_status_callback',
|
||||
'/service/{}/delivery-receipt-api/{}',
|
||||
),
|
||||
(
|
||||
'main.received_text_messages_callback',
|
||||
'/service/{}/inbound-api/{}',
|
||||
),
|
||||
])
|
||||
def test_callback_forms_can_be_cleared_when_callback_and_inbound_apis_are_empty(
|
||||
client_request,
|
||||
service_one,
|
||||
endpoint,
|
||||
expected_delete_url,
|
||||
bearer_token,
|
||||
mocker,
|
||||
mock_get_empty_service_callback_api,
|
||||
mock_get_empty_service_inbound_api,
|
||||
):
|
||||
service_one['permissions'] = ['inbound_sms']
|
||||
mocked_delete = mocker.patch('app.service_api_client.delete')
|
||||
|
||||
page = client_request.post(
|
||||
endpoint,
|
||||
service_id=service_one['id'],
|
||||
_data={
|
||||
'url': '',
|
||||
'bearer_token': bearer_token,
|
||||
},
|
||||
_expected_redirect=url_for(
|
||||
'main.api_callbacks',
|
||||
service_id=service_one['id'],
|
||||
_external=True,
|
||||
)
|
||||
)
|
||||
|
||||
assert not page.select(".error-message")
|
||||
assert mocked_delete.call_args_list == []
|
||||
|
||||
|
||||
@pytest.mark.parametrize('has_inbound_sms, expected_link', [
|
||||
@@ -699,28 +719,14 @@ def test_create_delivery_status_and_receive_text_message_callbacks(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('endpoint, fixture', [
|
||||
('main.delivery_status_callback', mock_get_valid_service_callback_api),
|
||||
('main.received_text_messages_callback', mock_get_valid_service_inbound_api),
|
||||
])
|
||||
def test_update_delivery_status_and_receive_text_message_callbacks(
|
||||
def test_update_delivery_status_callback_details(
|
||||
client_request,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_notifications,
|
||||
mock_update_service_inbound_api,
|
||||
mock_update_service_callback_api,
|
||||
endpoint,
|
||||
fixture,
|
||||
mock_get_valid_service_callback_api,
|
||||
fake_uuid,
|
||||
):
|
||||
if endpoint == 'main.received_text_messages_callback':
|
||||
service_one['inbound_api'] = [fake_uuid]
|
||||
service_one['permissions'] = ['inbound_sms']
|
||||
else:
|
||||
service_one['service_callback_api'] = [fake_uuid]
|
||||
|
||||
fixture(mocker)
|
||||
service_one['service_callback_api'] = [fake_uuid]
|
||||
|
||||
data = {
|
||||
'url': "https://test.url.com/",
|
||||
@@ -729,73 +735,88 @@ def test_update_delivery_status_and_receive_text_message_callbacks(
|
||||
}
|
||||
|
||||
client_request.post(
|
||||
endpoint,
|
||||
'main.delivery_status_callback',
|
||||
service_id=service_one['id'],
|
||||
_data=data,
|
||||
)
|
||||
|
||||
if endpoint == 'main.received_text_messages_callback':
|
||||
mock_update_service_inbound_api.assert_called_once_with(
|
||||
service_one['id'],
|
||||
url="https://test.url.com/",
|
||||
bearer_token="1234567890",
|
||||
user_id=fake_uuid,
|
||||
inbound_api_id=fake_uuid,
|
||||
)
|
||||
else:
|
||||
mock_update_service_callback_api.assert_called_once_with(
|
||||
service_one['id'],
|
||||
url="https://test.url.com/",
|
||||
bearer_token="1234567890",
|
||||
user_id=fake_uuid,
|
||||
callback_api_id=fake_uuid
|
||||
)
|
||||
mock_update_service_callback_api.assert_called_once_with(
|
||||
service_one['id'],
|
||||
url="https://test.url.com/",
|
||||
bearer_token="1234567890",
|
||||
user_id=fake_uuid,
|
||||
callback_api_id=fake_uuid
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('endpoint, data, fixture', [
|
||||
(
|
||||
'main.delivery_status_callback',
|
||||
{"url": "https://hello2.gov.uk", "bearer_token": "bearer_token_set"},
|
||||
mock_get_valid_service_callback_api
|
||||
),
|
||||
(
|
||||
'main.received_text_messages_callback',
|
||||
{"url": "https://hello3.gov.uk", "bearer_token": "bearer_token_set"},
|
||||
mock_get_valid_service_inbound_api
|
||||
),
|
||||
])
|
||||
def test_update_delivery_status_and_receive_text_message_callbacks_without_changes_do_not_update(
|
||||
def test_update_receive_text_message_callback_details(
|
||||
client_request,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_notifications,
|
||||
mock_update_service_callback_api,
|
||||
mock_update_service_inbound_api,
|
||||
data,
|
||||
fixture,
|
||||
endpoint,
|
||||
mock_get_valid_service_inbound_api,
|
||||
fake_uuid,
|
||||
):
|
||||
if endpoint == 'main.received_text_messages_callback':
|
||||
service_one['inbound_api'] = [fake_uuid]
|
||||
service_one['permissions'] = ['inbound_sms']
|
||||
else:
|
||||
service_one['service_callback_api'] = [fake_uuid]
|
||||
service_one['inbound_api'] = [fake_uuid]
|
||||
service_one['permissions'] = ['inbound_sms']
|
||||
|
||||
fixture(mocker)
|
||||
|
||||
data['user_id'] = fake_uuid
|
||||
data = {
|
||||
'url': "https://test.url.com/",
|
||||
'bearer_token': '1234567890',
|
||||
'user_id': fake_uuid
|
||||
}
|
||||
|
||||
client_request.post(
|
||||
endpoint,
|
||||
'main.received_text_messages_callback',
|
||||
service_id=service_one['id'],
|
||||
_data=data,
|
||||
)
|
||||
|
||||
if endpoint == 'main.received_text_messages_callback':
|
||||
assert mock_update_service_inbound_api.called is False
|
||||
else:
|
||||
assert mock_update_service_callback_api.called is False
|
||||
mock_update_service_inbound_api.assert_called_once_with(
|
||||
service_one['id'],
|
||||
url="https://test.url.com/",
|
||||
bearer_token="1234567890",
|
||||
user_id=fake_uuid,
|
||||
inbound_api_id=fake_uuid,
|
||||
)
|
||||
|
||||
|
||||
def test_update_delivery_status_callback_without_changes_does_not_update(
|
||||
client_request,
|
||||
service_one,
|
||||
mock_update_service_callback_api,
|
||||
fake_uuid,
|
||||
mock_get_valid_service_callback_api,
|
||||
):
|
||||
service_one['service_callback_api'] = [fake_uuid]
|
||||
data = {"user_id": fake_uuid, "url": "https://hello2.gov.uk", "bearer_token": "bearer_token_set"}
|
||||
|
||||
client_request.post(
|
||||
'main.delivery_status_callback',
|
||||
service_id=service_one['id'],
|
||||
_data=data,
|
||||
)
|
||||
|
||||
assert mock_update_service_callback_api.called is False
|
||||
|
||||
|
||||
def test_update_receive_text_message_callback_without_changes_does_not_update(
|
||||
client_request,
|
||||
service_one,
|
||||
mock_update_service_inbound_api,
|
||||
fake_uuid,
|
||||
mock_get_valid_service_inbound_api,
|
||||
):
|
||||
service_one['inbound_api'] = [fake_uuid]
|
||||
service_one['permissions'] = ['inbound_sms']
|
||||
data = {"user_id": fake_uuid, "url": "https://hello3.gov.uk", "bearer_token": "bearer_token_set"}
|
||||
|
||||
client_request.post(
|
||||
'main.received_text_messages_callback',
|
||||
service_id=service_one['id'],
|
||||
_data=data,
|
||||
)
|
||||
|
||||
assert mock_update_service_inbound_api.called is False
|
||||
|
||||
|
||||
@pytest.mark.parametrize('service_callback_api, delivery_url, expected_1st_table_row', [
|
||||
|
||||
Reference in New Issue
Block a user