From 5de1c4f6ca8d6a0210700a5bdae4b28071a982e8 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Wed, 19 May 2021 10:56:13 +0100 Subject: [PATCH] Redirect newly-created users to broadcast tour --- app/main/views/verify.py | 5 ++- tests/app/main/views/test_accept_invite.py | 49 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/app/main/views/verify.py b/app/main/views/verify.py index b2fd145fc..b1d27ea10 100644 --- a/app/main/views/verify.py +++ b/app/main/views/verify.py @@ -80,7 +80,10 @@ def activate_user(user_id): service_id = _add_invited_user_to_service(invited_user) service = Service.from_id(service_id) if service.has_permission('broadcast'): - return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1)) + if service.live: + return redirect(url_for('main.broadcast_tour_live', service_id=service.id, step_index=1)) + else: + return redirect(url_for('main.broadcast_tour', service_id=service.id, step_index=1)) return redirect(url_for('main.service_dashboard', service_id=service_id)) invited_org_user = InvitedOrgUser.from_session() diff --git a/tests/app/main/views/test_accept_invite.py b/tests/app/main/views/test_accept_invite.py index e56de2784..693e9b24f 100644 --- a/tests/app/main/views/test_accept_invite.py +++ b/tests/app/main/views/test_accept_invite.py @@ -6,6 +6,7 @@ from flask import url_for from notifications_python_client.errors import HTTPError import app +from tests import service_json from tests.conftest import ( SERVICE_ONE_ID, USER_ONE_ID, @@ -611,6 +612,54 @@ def test_new_invited_user_verifies_and_added_to_service( assert page.find('h1').text == 'Dashboard' +@pytest.mark.parametrize('service_permissions, trial_mode, expected_endpoint, extra_args', ( + ([], True, 'main.service_dashboard', {}), + ([], False, 'main.service_dashboard', {}), + (['broadcast'], True, 'main.broadcast_tour', {'step_index': 1}), + (['broadcast'], False, 'main.broadcast_tour_live', {'step_index': 1}), +)) +def test_new_invited_user_is_redirected_to_correct_place( + mocker, + client, + sample_invite, + mock_check_invite_token, + mock_check_verify_code, + mock_get_user, + mock_dont_get_user_by_email, + mock_add_user_to_service, + mock_get_invited_user_by_id, + mock_events, + mock_get_service, + service_permissions, + trial_mode, + expected_endpoint, + extra_args, +): + mocker.patch('app.service_api_client.get_service', return_value={ + 'data': service_json( + sample_invite['service'], + restricted=trial_mode, + permissions=service_permissions, + ) + }) + client.get(url_for('main.accept_invite', token='thisisnotarealtoken')) + + with client.session_transaction() as session: + session['user_details'] = { + 'email': sample_invite['email_address'], + 'id': sample_invite['id'], + } + + response = client.post(url_for('main.verify'), data={'sms_code': '12345'}) + assert response.status_code == 302 + assert response.location == url_for( + expected_endpoint, + service_id=sample_invite['service'], + _external=True, + **extra_args + ) + + def test_existing_user_accepts_and_sets_email_auth( client_request, api_user_active,