From f7e54b7f5b9e0c0600294f4938e6779beb0884f3 Mon Sep 17 00:00:00 2001 From: Pea Tyczynska Date: Fri, 22 Feb 2019 16:01:04 +0000 Subject: [PATCH] Change team member's mobile number upon confirmation Also add edit user mobile number urls to navigation exceptions --- app/main/views/manage_users.py | 18 +++++++++++++++++- app/navigation.py | 12 ++++++++---- tests/app/main/views/test_manage_users.py | 22 ++++++++++++++++++++-- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/app/main/views/manage_users.py b/app/main/views/manage_users.py index d2c0ce5e4..bcaf87853 100644 --- a/app/main/views/manage_users.py +++ b/app/main/views/manage_users.py @@ -19,10 +19,10 @@ from app import ( from app.main import main from app.main.forms import ( ChangeEmailForm, + ChangeMobileNumberForm, InviteUserForm, PermissionsForm, SearchUsersForm, - ChangeMobileNumberForm ) from app.models.user import permissions from app.utils import redact_mobile_number, user_has_permissions @@ -231,6 +231,22 @@ def edit_user_mobile_number(service_id, user_id): def confirm_edit_user_mobile_number(service_id, user_id): user = user_api_client.get_user(user_id) new_number = session['team_member_mobile_change'] + if request.method == 'POST': + try: + user_api_client.update_user_attribute(user_id, mobile_number=new_number) + except HTTPError as e: + if e.status_code == 403: + flash("You don't have permission to edit users' mobile numbers for this service", 'info') + return redirect(url_for( + '.manage_users', + service_id=service_id)) + else: + abort(500, e) + + return redirect(url_for( + '.manage_users', + service_id=service_id + )) return render_template( 'views/manage-users/confirm-edit-user-mobile-number.html', diff --git a/app/navigation.py b/app/navigation.py index 7def9b505..e19042980 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -136,6 +136,7 @@ class HeaderNavigation(Navigation): 'choose_template_to_copy', 'confirm_edit_organisation_name', 'confirm_edit_user_email', + 'confirm_edit_user_mobile_number', 'confirm_redact_template', 'conversation', 'conversation_reply', @@ -159,7 +160,7 @@ class HeaderNavigation(Navigation): 'edit_template_postage', 'edit_user_org_permissions', 'edit_user_email', - 'edit_user_phone_number', + 'edit_user_mobile_number', 'edit_user_permissions', 'email_not_received', 'email_template', @@ -328,8 +329,9 @@ class MainNavigation(Navigation): }, 'team-members': { 'confirm_edit_user_email', + 'confirm_edit_user_mobile_number', 'edit_user_email', - 'edit_user_phone_number', + 'edit_user_mobile_number', 'edit_user_permissions', 'invite_user', 'manage_users', @@ -586,6 +588,7 @@ class CaseworkNavigation(Navigation): 'clear_cache', 'confirm_edit_organisation_name', 'confirm_edit_user_email', + 'confirm_edit_user_mobile_number', 'confirm_redact_template', 'conversation', 'conversation_reply', @@ -611,7 +614,7 @@ class CaseworkNavigation(Navigation): 'edit_service_template', 'edit_template_postage', 'edit_user_email', - 'edit_user_phone_number', + 'edit_user_mobile_number', 'edit_user_org_permissions', 'edit_user_permissions', 'email_branding', @@ -826,6 +829,7 @@ class OrgNavigation(Navigation): 'choose_template_to_copy', 'clear_cache', 'confirm_edit_user_email', + 'confirm_edit_user_mobile_number', 'confirm_redact_template', 'conversation', 'conversation_reply', @@ -850,7 +854,7 @@ class OrgNavigation(Navigation): 'edit_service_template', 'edit_template_postage', 'edit_user_email', - 'edit_user_phone_number', + 'edit_user_mobile_number', 'edit_user_permissions', 'email_branding', 'email_not_received', diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py index 7f558c85f..79f86eb0e 100644 --- a/tests/app/main/views/test_manage_users.py +++ b/tests/app/main/views/test_manage_users.py @@ -1106,8 +1106,26 @@ def test_confirm_edit_user_mobile_number_page( assert 'Confirm' in response.get_data(as_text=True) -def test_confirm_edit_user_mobile_number_changes_user_mobile_number(): - pass +def test_confirm_edit_user_mobile_number_changes_user_mobile_number( + logged_in_client, + active_user_with_permissions, + service_one, + mocker, + mock_get_user, + mock_update_user_attribute +): + new_number = '07554080636' + with logged_in_client.session_transaction() as session: + session['team_member_mobile_change'] = new_number + response = logged_in_client.post( + url_for( + 'main.confirm_edit_user_mobile_number', + service_id=service_one['id'], + user_id=active_user_with_permissions.id)) + assert response.status_code == 302 + assert response.location == url_for( + 'main.manage_users', service_id=service_one['id'], _external=True) + mock_update_user_attribute.assert_called_once_with(active_user_with_permissions.id, mobile_number=new_number) def test_confirm_edit_user_mobile_number_with_no_permission_aborts():