diff --git a/app/templates/main_nav.html b/app/templates/main_nav.html index 092825c73..5969d20c9 100644 --- a/app/templates/main_nav.html +++ b/app/templates/main_nav.html @@ -25,8 +25,12 @@ {% if current_user.has_permissions('manage_api_keys', 'manage_service') %}
  • Settings
  • {% endif %} - {% if current_user.has_permissions('manage_api_keys') and not current_service.has_permission('broadcast') %} -
  • API integration
  • + {% if current_user.has_permissions('manage_api_keys') %} + {% if current_service.has_permission('broadcast') %} +
  • API integration
  • + {% else %} +
  • API integration
  • + {% endif %} {% endif %} {% elif current_user.has_permissions(allow_org_user=True) %}
  • Usage
  • diff --git a/tests/app/test_navigation.py b/tests/app/test_navigation.py index 8477a9581..81a6ea634 100644 --- a/tests/app/test_navigation.py +++ b/tests/app/test_navigation.py @@ -521,13 +521,47 @@ def test_navigation_urls( def test_navigation_for_services_with_broadcast_permission( + mocker, client_request, service_one, mock_get_service_templates, mock_get_template_folders, mock_get_api_keys, + active_user_create_broadcasts_permission, ): service_one['permissions'] += ['broadcast'] + mocker.patch( + 'app.user_api_client.get_user', + return_value=active_user_create_broadcasts_permission + ) + + page = client_request.get('main.choose_template', service_id=SERVICE_ONE_ID) + assert [ + a['href'] for a in page.select('.navigation a') + ] == [ + '/services/{}/current-alerts'.format(SERVICE_ONE_ID), + '/services/{}/past-alerts'.format(SERVICE_ONE_ID), + '/services/{}/rejected-alerts'.format(SERVICE_ONE_ID), + '/services/{}/templates'.format(SERVICE_ONE_ID), + '/services/{}/users'.format(SERVICE_ONE_ID), + ] + + +def test_navigation_for_services_with_broadcast_permission_platform_admin( + mocker, + client_request, + service_one, + mock_get_service_templates, + mock_get_template_folders, + mock_get_api_keys, + platform_admin_user, +): + service_one['permissions'] += ['broadcast'] + mocker.patch( + 'app.user_api_client.get_user', + return_value=platform_admin_user, + ) + page = client_request.get('main.choose_template', service_id=SERVICE_ONE_ID) assert [ a['href'] for a in page.select('.navigation a') @@ -538,6 +572,7 @@ def test_navigation_for_services_with_broadcast_permission( '/services/{}/templates'.format(SERVICE_ONE_ID), '/services/{}/users'.format(SERVICE_ONE_ID), '/services/{}/service-settings'.format(SERVICE_ONE_ID), + '/services/{}/api/keys'.format(SERVICE_ONE_ID), ] diff --git a/tests/conftest.py b/tests/conftest.py index 69bb391a5..84bebc261 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3604,6 +3604,7 @@ def create_active_user_create_broadcasts_permissions(with_unique_id=False): 'create_broadcasts', 'reject_broadcasts', 'cancel_broadcasts', + 'view_activity', # added automatically by API ]}, auth_type='webauthn_auth', ) @@ -3617,6 +3618,7 @@ def create_active_user_approve_broadcasts_permissions(with_unique_id=False): 'approve_broadcasts', 'reject_broadcasts', 'cancel_broadcasts', + 'view_activity', # added automatically by API ]}, auth_type='webauthn_auth', )