Merge pull request #2042 from alphagov/allow-remove-callback

Allow callbacks to be removed
This commit is contained in:
Chris Hill-Scott
2018-07-06 14:52:07 +01:00
committed by GitHub
5 changed files with 150 additions and 11 deletions

View File

@@ -10,6 +10,8 @@ from tests import validate_route_permission
from tests.conftest import (
SERVICE_ONE_ID,
fake_uuid,
mock_get_empty_service_callback_api,
mock_get_empty_service_inbound_api,
mock_get_live_service,
mock_get_notifications,
mock_get_service,
@@ -478,7 +480,7 @@ def test_should_validate_whitelist_items(
('main.received_text_messages_callback'),
])
@pytest.mark.parametrize('url, bearer_token, expected_errors', [
("", "", "Cant be empty Cant be empty"),
("https://example.com", "", "Cant be empty"),
("http://not_https.com", "1234567890", "Must be a valid https URL"),
("https://test.com", "123456789", "Must be at least 10 characters"),
])
@@ -509,6 +511,73 @@ 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,
), [fake_uuid()], 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', [
(
'main.delivery_status_callback',
'/service/{}/delivery-receipt-api/{}',
),
(
'main.received_text_messages_callback',
'/service/{}/inbound-api/{}',
),
])
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,
):
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['permissions'] = ['inbound_sms']
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")
if delete_should_be_called:
mocked_delete.assert_called_once_with(
expected_delete_url.format(
service_one['id'], callback_ids[0]
)
)
else:
assert mocked_delete.call_args_list == []
@pytest.mark.parametrize('has_inbound_sms, expected_link', [
(True, 'main.api_callbacks'),
(False, 'main.delivery_status_callback'),

View File

@@ -2765,6 +2765,22 @@ def mock_get_valid_service_callback_api(mocker):
return mocker.patch('app.service_api_client.get_service_callback_api', side_effect=_get)
@pytest.fixture(scope='function')
def mock_get_empty_service_inbound_api(mocker):
return mocker.patch(
'app.service_api_client.get_service_inbound_api',
side_effect=lambda service_id, callback_api_id: None,
)
@pytest.fixture(scope='function')
def mock_get_empty_service_callback_api(mocker):
return mocker.patch(
'app.service_api_client.get_service_callback_api',
side_effect=lambda service_id, callback_api_id: None,
)
@pytest.fixture(scope='function')
def mock_create_service_inbound_api(mocker):
def _create_service_inbound_api(service_id, url, bearer_token, user_id):
@@ -2773,6 +2789,14 @@ def mock_create_service_inbound_api(mocker):
return mocker.patch('app.service_api_client.create_service_inbound_api', side_effect=_create_service_inbound_api)
@pytest.fixture(scope='function')
def mock_delete_service_inbound_api(mocker):
return mocker.patch(
'app.service_api_client.delete_service_callback_api',
side_effect=lambda service_id: None
)
@pytest.fixture(scope='function')
def mock_update_service_inbound_api(mocker):
def _update_service_inbound_api(service_id, url, bearer_token, user_id, inbound_api_id):
@@ -2789,6 +2813,14 @@ def mock_create_service_callback_api(mocker):
return mocker.patch('app.service_api_client.create_service_callback_api', side_effect=_create_service_callback_api)
@pytest.fixture(scope='function')
def mock_delete_service_callback_api(mocker):
return mocker.patch(
'app.service_api_client.delete_service_callback_api',
side_effect=lambda service_id: None
)
@pytest.fixture(scope='function')
def mock_update_service_callback_api(mocker):
def _update_service_callback_api(service_id, url, bearer_token, user_id, callback_api_id):