Merge pull request #3460 from alphagov/handle-session-expiring-name-change

Handle session expiring during service name change
This commit is contained in:
Pea M. Tyczynska
2020-05-27 12:27:36 +01:00
committed by GitHub
3 changed files with 41 additions and 10 deletions

View File

@@ -537,7 +537,8 @@ def validate_route_permission(mocker,
route,
permissions,
usr,
service):
service,
session=None):
usr['permissions'][str(service['id'])] = permissions
usr['services'] = [service['id']]
mocker.patch(
@@ -556,6 +557,10 @@ def validate_route_permission(mocker,
with app_.test_request_context():
with app_.test_client() as client:
client.login(usr)
if session:
with client.session_transaction() as session_:
for k, v in session.items():
session_[k] = v
resp = None
if method == 'GET':
resp = client.get(route)

View File

@@ -644,6 +644,9 @@ def test_should_not_allow_duplicate_names(
def test_should_show_service_name_confirmation(
client_request,
):
service_new_name = 'New Name'
with client_request.session_transaction() as session:
session['service_name_change'] = service_new_name
page = client_request.get(
'main.service_name_change_confirm',
service_id=SERVICE_ONE_ID,
@@ -703,6 +706,20 @@ def test_should_raise_duplicate_name_handled(
assert mock_verify_password.called
def test_service_name_change_confirm_handles_expired_session(
client_request, mock_verify_password, mock_update_service
):
page = client_request.post(
'main.service_name_change_confirm',
service_id=SERVICE_ONE_ID,
_follow_redirects=True
)
mock_verify_password.assert_not_called()
mock_update_service.assert_not_called()
assert page.find('div', 'banner-dangerous').text.strip() == "The change you made was not saved. Please try again."
@pytest.mark.parametrize('volumes, consent_to_research, expected_estimated_volumes_item', [
((0, 0, 0), None, 'Tell us how many messages you expect to send Not completed'),
((1, 0, 0), None, 'Tell us how many messages you expect to send Not completed'),
@@ -1881,7 +1898,9 @@ def test_route_permissions(
url_for(route, service_id=service_one['id']),
['manage_service'],
api_user_active,
service_one)
service_one,
session={'service_name_change': "New Service Name"}
)
@pytest.mark.parametrize('route', [
@@ -1936,14 +1955,17 @@ def test_route_for_platform_admin(
mock_get_service_templates,
mock_get_invites_for_service,
):
validate_route_permission(mocker,
app_,
"GET",
200,
url_for(route, service_id=service_one['id']),
[],
platform_admin_user,
service_one)
validate_route_permission(
mocker,
app_,
"GET",
200,
url_for(route, service_id=service_one['id']),
[],
platform_admin_user,
service_one,
session={'service_name_change': "New Service Name"}
)
def test_and_more_hint_appears_on_settings_with_more_than_just_a_single_sender(