diff --git a/app/main/views/dashboard.py b/app/main/views/dashboard.py index cc14d043b..7c3173b26 100644 --- a/app/main/views/dashboard.py +++ b/app/main/views/dashboard.py @@ -11,7 +11,7 @@ from flask import ( session, url_for, ) -from flask_login import login_required +from flask_login import current_user, login_required from werkzeug.utils import redirect from app import ( @@ -52,16 +52,19 @@ def temp_service_history(service_id): @main.route("/services//dashboard") @login_required -@user_has_permissions('view_activity') +@user_has_permissions('view_activity', 'send_messages') def old_service_dashboard(service_id): return redirect(url_for('.service_dashboard', service_id=service_id)) @main.route("/services/") @login_required -@user_has_permissions('view_activity') +@user_has_permissions('view_activity', 'send_messages') def service_dashboard(service_id): + if not current_user.has_permissions('view_activity'): + return redirect(url_for('main.choose_template', service_id=service_id)) + if session.get('invited_user'): session.pop('invited_user', None) session['service_id'] = service_id diff --git a/tests/app/main/views/test_dashboard.py b/tests/app/main/views/test_dashboard.py index c5fdab8c1..fac07b2e5 100644 --- a/tests/app/main/views/test_dashboard.py +++ b/tests/app/main/views/test_dashboard.py @@ -23,6 +23,8 @@ from tests import ( ) from tests.conftest import ( SERVICE_ONE_ID, + active_caseworking_user, + active_user_view_permissions, mock_get_inbound_sms_summary, mock_get_inbound_sms_summary_with_no_messages, normalize_spaces, @@ -57,10 +59,17 @@ stub_template_stats = [ ] +@pytest.mark.parametrize('user', ( + active_user_view_permissions, + active_caseworking_user, +)) def test_redirect_from_old_dashboard( - logged_in_client + logged_in_client, + user, + mocker, + fake_uuid, ): - + mocker.patch('app.user_api_client.get_user', return_value=user(fake_uuid)) expected_location = 'http://localhost/services/{}'.format(SERVICE_ONE_ID) response = logged_in_client.get('/services/{}/dashboard'.format(SERVICE_ONE_ID)) @@ -70,6 +79,24 @@ def test_redirect_from_old_dashboard( assert expected_location == url_for('main.service_dashboard', service_id=SERVICE_ONE_ID, _external=True) +def test_redirect_caseworkers_to_templates( + client_request, + mocker, + active_caseworking_user, +): + mocker.patch('app.user_api_client.get_user', return_value=active_caseworking_user) + client_request.get( + 'main.service_dashboard', + service_id=SERVICE_ONE_ID, + _expected_status=302, + _expected_redirect=url_for( + 'main.choose_template', + service_id=SERVICE_ONE_ID, + _external=True, + ) + ) + + def test_get_started( logged_in_client, mocker,