mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-26 02:49:16 -04:00
Merge pull request #2794 from alphagov/edit_user_email
Allow users with "manage_service" permission to edit team members' email addresses
This commit is contained in:
@@ -39,7 +39,7 @@ from tests.conftest import service_one as create_sample_service
|
||||
'Can’t Add and edit templates '
|
||||
'Can’t Manage settings, team and usage '
|
||||
'Can’t Manage API integration '
|
||||
'Edit permissions'
|
||||
'Edit team member'
|
||||
)
|
||||
),
|
||||
(
|
||||
@@ -769,3 +769,110 @@ def test_can_invite_user_as_platform_admin(
|
||||
response = logged_in_client.get(url_for('main.manage_users', service_id=service_one['id']))
|
||||
resp_text = response.get_data(as_text=True)
|
||||
assert url_for('.invite_user', service_id=service_one['id']) in resp_text
|
||||
|
||||
|
||||
def test_edit_user_email_page(
|
||||
client_request,
|
||||
active_user_with_permissions,
|
||||
service_one,
|
||||
mocker
|
||||
):
|
||||
user = active_user_with_permissions
|
||||
test_user = mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
|
||||
page = client_request.get(
|
||||
'main.edit_user_email',
|
||||
service_id=service_one['id'],
|
||||
user_id=test_user.id
|
||||
)
|
||||
|
||||
assert page.find('h1').text == "Change team member’s email address"
|
||||
assert page.select('p[id=user_name]')[0].text == "This will change the email address for {}.".format(user.name)
|
||||
assert page.select('input[type=email]')[0].attrs["value"] == user.email_address
|
||||
assert page.select('button[type=submit]')[0].text == "Save"
|
||||
|
||||
|
||||
def test_edit_user_email_redirects_to_confirmation(
|
||||
logged_in_client,
|
||||
active_user_with_permissions,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_user,
|
||||
):
|
||||
response = logged_in_client.post(
|
||||
url_for(
|
||||
'main.edit_user_email',
|
||||
service_id=service_one['id'],
|
||||
user_id=active_user_with_permissions.id))
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for(
|
||||
'main.confirm_edit_user_email',
|
||||
service_id=service_one['id'],
|
||||
user_id=active_user_with_permissions.id,
|
||||
_external=True
|
||||
)
|
||||
|
||||
|
||||
def test_confirm_edit_user_email_page(
|
||||
logged_in_client,
|
||||
active_user_with_permissions,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_user,
|
||||
):
|
||||
new_email = 'new_email@gov.uk'
|
||||
with logged_in_client.session_transaction() as session:
|
||||
session['team_member_email_change'] = new_email
|
||||
response = logged_in_client.get(url_for(
|
||||
'main.confirm_edit_user_email',
|
||||
service_id=service_one['id'],
|
||||
user_id=active_user_with_permissions.id
|
||||
))
|
||||
|
||||
assert 'Confirm change of email address' in response.get_data(as_text=True)
|
||||
for text in [
|
||||
'New email address:',
|
||||
new_email,
|
||||
'We will send {} an email to tell them about the change.'.format(active_user_with_permissions.name)
|
||||
]:
|
||||
assert text in response.get_data(as_text=True)
|
||||
assert 'Confirm' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_confirm_edit_user_email_page_redirects_if_session_empty(
|
||||
logged_in_client,
|
||||
active_user_with_permissions,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_user,
|
||||
):
|
||||
response = logged_in_client.get(url_for(
|
||||
'main.confirm_edit_user_email',
|
||||
service_id=service_one['id'],
|
||||
user_id=active_user_with_permissions.id
|
||||
))
|
||||
assert response.status_code == 302
|
||||
assert 'Confirm change of email address' not in response.get_data(as_text=True)
|
||||
|
||||
|
||||
def test_confirm_edit_user_email_changes_user_email(
|
||||
logged_in_client,
|
||||
active_user_with_permissions,
|
||||
service_one,
|
||||
mocker,
|
||||
mock_get_user,
|
||||
mock_update_user_attribute
|
||||
):
|
||||
new_email = 'new_email@gov.uk'
|
||||
with logged_in_client.session_transaction() as session:
|
||||
session['team_member_email_change'] = new_email
|
||||
response = logged_in_client.post(
|
||||
url_for(
|
||||
'main.confirm_edit_user_email',
|
||||
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, email_address=new_email)
|
||||
|
||||
Reference in New Issue
Block a user