mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-28 22:30:44 -05:00
Refactored code for new service permissions
This commit is contained in:
@@ -11,22 +11,24 @@ letters_urls = [
|
||||
|
||||
|
||||
@pytest.mark.parametrize('url', letters_urls)
|
||||
@pytest.mark.parametrize('can_send_letters, response_code', [
|
||||
(True, 200),
|
||||
(False, 403)
|
||||
@pytest.mark.parametrize('permissions, response_code', [
|
||||
(['letter'], 200),
|
||||
([], 403)
|
||||
])
|
||||
def test_letters_access_restricted(
|
||||
logged_in_platform_admin_client,
|
||||
mocker,
|
||||
can_send_letters,
|
||||
permissions,
|
||||
response_code,
|
||||
mock_get_service_templates,
|
||||
url,
|
||||
service_one,
|
||||
):
|
||||
service = service_json(can_send_letters=can_send_letters)
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service})
|
||||
service_one['permissions'] = permissions
|
||||
|
||||
response = logged_in_platform_admin_client.get(url(service_id=service['id']))
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
|
||||
|
||||
response = logged_in_platform_admin_client.get(url(service_id=service_one['id']))
|
||||
|
||||
assert response.status_code == response_code
|
||||
|
||||
@@ -40,29 +42,30 @@ def test_letters_lets_in_without_permission(
|
||||
api_user_active,
|
||||
mock_get_service_templates,
|
||||
url,
|
||||
service_one
|
||||
):
|
||||
service = service_json(can_send_letters=True)
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service})
|
||||
service_one['permissions'] = ['letter']
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
|
||||
|
||||
client.login(api_user_active)
|
||||
response = client.get(url(service_id=service['id']))
|
||||
response = client.get(url(service_id=service_one['id']))
|
||||
|
||||
assert api_user_active.permissions == {}
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
@pytest.mark.parametrize('can_send_letters, choices', [
|
||||
(True, ['Email', 'Text message', 'Letter']),
|
||||
(False, ['Email', 'Text message'])
|
||||
@pytest.mark.parametrize('permissions, choices', [
|
||||
(['email', 'sms', 'letter'], ['Email', 'Text message', 'Letter']),
|
||||
(['email', 'sms'], ['Email', 'Text message'])
|
||||
])
|
||||
def test_given_option_to_add_letters_if_allowed(
|
||||
logged_in_client,
|
||||
service_one,
|
||||
mocker,
|
||||
can_send_letters,
|
||||
permissions,
|
||||
choices,
|
||||
):
|
||||
service_one['can_send_letters'] = can_send_letters
|
||||
service_one['permissions'] = permissions
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
|
||||
|
||||
response = logged_in_client.get(url_for('main.add_template_by_type', service_id=service_one['id']))
|
||||
|
||||
@@ -853,7 +853,7 @@ def test_send_test_works_as_letter_preview(
|
||||
fake_uuid,
|
||||
mocker,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
|
||||
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=1)
|
||||
mocked_preview = mocker.patch(
|
||||
@@ -1139,7 +1139,7 @@ def test_should_show_preview_letter_message(
|
||||
fake_uuid,
|
||||
mocker,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
|
||||
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=1)
|
||||
|
||||
|
||||
@@ -91,8 +91,7 @@ def test_should_show_overview_for_service_with_more_things_set(
|
||||
expected_rows
|
||||
):
|
||||
client.login(active_user_with_permissions, mocker, service_with_reply_to_addresses)
|
||||
service_with_reply_to_addresses['permissions'] = permissions
|
||||
service_with_reply_to_addresses['can_send_international_sms'] = True
|
||||
service_with_reply_to_addresses['permissions'] = ['email', 'sms', 'inbound_sms', 'international_sms']
|
||||
response = client.get(url_for(
|
||||
'main.service_settings', service_id=service_with_reply_to_addresses['id']
|
||||
))
|
||||
@@ -158,8 +157,11 @@ def test_if_can_receive_inbound_then_cant_change_sms_sender(
|
||||
response = logged_in_client.get(url_for(
|
||||
'main.service_settings', service_id=service_one['id']
|
||||
))
|
||||
assert 'Text message sender SomeNumber Change' not in response.get_data(as_text=True)
|
||||
assert url_for('.service_set_sms_sender', service_id=service_one['id'],
|
||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||
rows = page.find_all('tr')
|
||||
rows_as_text = [" ".join(row.text.split()) for row in rows]
|
||||
assert 'Text message sender SomeNumber Change' not in rows_as_text
|
||||
assert url_for('main.service_request_to_go_live', service_id=service_one['id'],
|
||||
set_inbound_sms=False) not in response.get_data(as_text=True)
|
||||
assert 'SomeNumber' in response.get_data(as_text=True)
|
||||
|
||||
@@ -170,7 +172,7 @@ def test_letter_contact_block_shows_none_if_not_set(
|
||||
mocker,
|
||||
mock_get_letter_organisations,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
response = logged_in_client.get(url_for(
|
||||
'main.service_settings', service_id=service_one['id']
|
||||
))
|
||||
@@ -187,7 +189,7 @@ def test_escapes_letter_contact_block(
|
||||
mocker,
|
||||
mock_get_letter_organisations,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
service_one['letter_contact_block'] = 'foo\nbar<script>alert(1);</script>'
|
||||
response = logged_in_client.get(url_for(
|
||||
'main.service_settings', service_id=service_one['id']
|
||||
@@ -833,7 +835,7 @@ def test_cant_set_letter_contact_block_if_service_cant_send_letters(
|
||||
service_one,
|
||||
method
|
||||
):
|
||||
assert not service_one['can_send_letters']
|
||||
assert 'letter' not in service_one['permissions']
|
||||
response = getattr(logged_in_client, method)(
|
||||
url_for('main.service_set_letter_contact_block', service_id=service_one['id'])
|
||||
)
|
||||
@@ -844,7 +846,7 @@ def test_set_letter_contact_block_prepopulates(
|
||||
logged_in_client,
|
||||
service_one
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
service_one['letter_contact_block'] = 'foo bar baz waz'
|
||||
response = logged_in_client.get(url_for('main.service_set_letter_contact_block', service_id=service_one['id']))
|
||||
assert response.status_code == 200
|
||||
@@ -856,7 +858,7 @@ def test_set_letter_contact_block_saves(
|
||||
service_one,
|
||||
mock_update_service,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
response = logged_in_client.post(
|
||||
url_for('main.service_set_letter_contact_block', service_id=service_one['id']),
|
||||
data={'letter_contact_block': 'foo bar baz waz'}
|
||||
@@ -871,7 +873,7 @@ def test_set_letter_contact_block_redirects_to_template(
|
||||
service_one,
|
||||
mock_update_service,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
fake_template_id = uuid.uuid4()
|
||||
response = logged_in_client.post(
|
||||
url_for(
|
||||
@@ -895,7 +897,7 @@ def test_set_letter_contact_block_has_max_10_lines(
|
||||
service_one,
|
||||
mock_update_service,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
response = logged_in_client.post(
|
||||
url_for('main.service_set_letter_contact_block', service_id=service_one['id']),
|
||||
data={'letter_contact_block': '\n'.join(map(str, range(0, 11)))}
|
||||
@@ -1034,7 +1036,8 @@ def test_switch_service_enable_letters(
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True)
|
||||
assert mocked_fn.call_args == call(service_one['id'], {'can_send_letters': True})
|
||||
assert 'letter' in mocked_fn.call_args[0][1]['permissions']
|
||||
assert mocked_fn.call_args[0][0] == service_one['id']
|
||||
|
||||
|
||||
def test_switch_service_disable_letters(
|
||||
@@ -1042,7 +1045,7 @@ def test_switch_service_disable_letters(
|
||||
service_one,
|
||||
mocker,
|
||||
):
|
||||
service_one['can_send_letters'] = True
|
||||
service_one['permissions'] = ['letter']
|
||||
mocked_fn = mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one)
|
||||
|
||||
response = logged_in_platform_admin_client.get(
|
||||
@@ -1051,7 +1054,7 @@ def test_switch_service_disable_letters(
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True)
|
||||
assert mocked_fn.call_args == call(service_one['id'], {"can_send_letters": False})
|
||||
assert mocked_fn.call_args == call(service_one['id'], {"permissions": []})
|
||||
|
||||
|
||||
def test_switch_service_enable_international_sms(
|
||||
@@ -1067,7 +1070,8 @@ def test_switch_service_enable_international_sms(
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True)
|
||||
assert mocked_fn.call_args == call(service_one['id'], {'can_send_international_sms': True})
|
||||
assert 'international_sms' in mocked_fn.call_args[0][1]['permissions']
|
||||
assert mocked_fn.call_args[0][0] == service_one['id']
|
||||
|
||||
|
||||
def test_switch_service_disable_international_sms(
|
||||
@@ -1075,7 +1079,7 @@ def test_switch_service_disable_international_sms(
|
||||
service_one,
|
||||
mocker,
|
||||
):
|
||||
service_one['can_send_international_sms'] = True
|
||||
service_one['permissions'] = ['international_sms']
|
||||
mocked_fn = mocker.patch('app.service_api_client.update_service_with_properties', return_value=service_one)
|
||||
|
||||
response = logged_in_platform_admin_client.get(
|
||||
@@ -1084,7 +1088,7 @@ def test_switch_service_disable_international_sms(
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('main.service_settings', service_id=service_one['id'], _external=True)
|
||||
assert mocked_fn.call_args == call(service_one['id'], {"can_send_international_sms": False})
|
||||
assert mocked_fn.call_args == call(service_one['id'], {"permissions": []})
|
||||
|
||||
|
||||
def test_set_new_inbound_api_and_valid_bearer_token_calls_create_inbound_api_endpoint(
|
||||
|
||||
Reference in New Issue
Block a user