diff --git a/app/main/views/api_keys.py b/app/main/views/api_keys.py index 68a93f8d2..a35b95558 100644 --- a/app/main/views/api_keys.py +++ b/app/main/views/api_keys.py @@ -69,14 +69,15 @@ def create_api_key(service_id): (KEY_TYPE_TEAM, 'Team and whitelist – limits who you can send to'), (KEY_TYPE_TEST, 'Test – pretends to send messages'), ] + disabled_options, option_hints = [], {} if current_service['restricted']: disabled_options = [KEY_TYPE_NORMAL] - option_hints = {KEY_TYPE_NORMAL: Markup( + option_hints[KEY_TYPE_NORMAL] = Markup( 'This option is not available because your service is in ' 'trial mode'.format(url_for(".using_notify")) - )} - else: - disabled_options, option_hints = [], {} + ) + if 'letter' in current_service['permissions']: + option_hints[KEY_TYPE_TEAM] = 'Can’t be used to send letters' if form.validate_on_submit(): if form.key_type.data in disabled_options: abort(400) diff --git a/tests/app/main/views/test_api_keys.py b/tests/app/main/views/test_api_keys.py index bed5c5d00..1b680774b 100644 --- a/tests/app/main/views/test_api_keys.py +++ b/tests/app/main/views/test_api_keys.py @@ -10,6 +10,7 @@ from tests import validate_route_permission from tests.conftest import ( mock_get_service, mock_get_live_service, + mock_get_service_with_letters, normalize_spaces, SERVICE_ONE_ID, ) @@ -145,6 +146,17 @@ def test_should_show_api_keys_page( 'Test – pretends to send messages', ] ), + ( + mock_get_service_with_letters, + [ + 'Live – sends to anyone', + ( + 'Team and whitelist – limits who you can send to ' + 'Can’t be used to send letters' + ), + 'Test – pretends to send messages', + ] + ), ]) def test_should_show_create_api_key_page( client_request, diff --git a/tests/conftest.py b/tests/conftest.py index 47412355c..af0c64b62 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -268,6 +268,19 @@ def mock_get_live_service(mocker, api_user_active): return mocker.patch('app.service_api_client.get_service', side_effect=_get) +@pytest.fixture(scope='function') +def mock_get_service_with_letters(mocker, api_user_active): + def _get(service_id): + return {'data': service_json( + service_id, + users=[api_user_active.id], + restricted=False, + permissions=['email', 'sms', 'letter'] + )} + + return mocker.patch('app.service_api_client.get_service', side_effect=_get) + + @pytest.fixture(scope='function') def mock_create_service(mocker): def _create(service_name, message_limit, restricted, user_id, email_from):