diff --git a/app/templates/views/broadcast/dashboard.html b/app/templates/views/broadcast/dashboard.html index 5ebf590a7..b5eb8220c 100644 --- a/app/templates/views/broadcast/dashboard.html +++ b/app/templates/views/broadcast/dashboard.html @@ -17,7 +17,7 @@ 'current_broadcasts' ) }} - {% if current_user.has_permissions('send_messages', restrict_admin_usage=True) %} + {% if current_user.has_permissions('send_messages', 'create_broadcasts', restrict_admin_usage=True) %}
{{ govukButton({ "element": "a", diff --git a/app/templates/views/broadcast/previous-broadcasts.html b/app/templates/views/broadcast/previous-broadcasts.html index 93416b670..6b84ae6ff 100644 --- a/app/templates/views/broadcast/previous-broadcasts.html +++ b/app/templates/views/broadcast/previous-broadcasts.html @@ -13,7 +13,7 @@ {% include('views/broadcast/partials/dashboard-table.html') %} - {% if current_user.has_permissions('send_messages', restrict_admin_usage=True) %} + {% if current_user.has_permissions('send_messages', 'create_broadcasts', restrict_admin_usage=True) %}
{{ govukButton({ "element": "a", diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py index 2c666622c..609b2e21a 100644 --- a/tests/app/main/views/test_broadcast.py +++ b/tests/app/main/views/test_broadcast.py @@ -13,7 +13,9 @@ from tests.conftest import ( SERVICE_ONE_ID, create_active_user_approve_broadcasts_permissions, create_active_user_create_broadcasts_permissions, + create_active_user_view_permissions, create_active_user_with_permissions, + create_platform_admin_user, normalize_spaces, ) @@ -477,13 +479,19 @@ def test_empty_broadcast_dashboard( @freeze_time('2020-02-20 02:20') +@pytest.mark.parametrize('user', [ + create_active_user_with_permissions(), + create_active_user_create_broadcasts_permissions(), +]) def test_broadcast_dashboard( client_request, service_one, mock_get_broadcast_messages, mock_get_service_templates, + user, ): service_one['permissions'] += ['broadcast'] + client_request.login(user) page = client_request.get( '.broadcast_dashboard', service_id=SERVICE_ONE_ID, @@ -511,23 +519,22 @@ def test_broadcast_dashboard( ) -@pytest.mark.parametrize("user_is_platform_admin", [True, False]) +@pytest.mark.parametrize('user', [ + create_platform_admin_user(), + create_active_user_view_permissions(), + create_active_user_approve_broadcasts_permissions(), +]) @pytest.mark.parametrize('endpoint', ( '.broadcast_dashboard', '.broadcast_dashboard_previous', '.broadcast_dashboard_rejected', )) -def test_broadcast_dashboard_does_not_have_button_for_view_only_user( +def test_broadcast_dashboard_does_not_have_button_if_user_does_not_have_permission_to_create_broadcast( client_request, service_one, - active_user_view_permissions, - platform_admin_user_no_service_permissions, mock_get_broadcast_messages, endpoint, - user_is_platform_admin + user, ): - if user_is_platform_admin: - client_request.login(platform_admin_user_no_service_permissions) - else: - client_request.login(active_user_view_permissions) + client_request.login(user) service_one['permissions'] += ['broadcast'] page = client_request.get( @@ -561,13 +568,19 @@ def test_broadcast_dashboard_json( @freeze_time('2020-02-20 02:20') +@pytest.mark.parametrize('user', [ + create_active_user_with_permissions(), + create_active_user_create_broadcasts_permissions(), +]) def test_previous_broadcasts_page( client_request, service_one, mock_get_broadcast_messages, mock_get_service_templates, + user, ): service_one['permissions'] += ['broadcast'] + client_request.login(user) page = client_request.get( '.broadcast_dashboard_previous', service_id=SERVICE_ONE_ID, @@ -596,13 +609,19 @@ def test_previous_broadcasts_page( @freeze_time('2020-02-20 02:20') +@pytest.mark.parametrize('user', [ + create_active_user_with_permissions(), + create_active_user_create_broadcasts_permissions(), +]) def test_rejected_broadcasts_page( client_request, service_one, mock_get_broadcast_messages, mock_get_service_templates, + user, ): service_one['permissions'] += ['broadcast'] + client_request.login(user) page = client_request.get( '.broadcast_dashboard_rejected', service_id=SERVICE_ONE_ID,