mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 00:07:02 -04:00
Use client_request fixture where possible
It: - saves repetetive boilerplate code - does some extra checks (eg checking for a `200` response) - makes the codebase less confusing to consistently do the same thing in the same way
This commit is contained in:
@@ -10,90 +10,83 @@ from tests.conftest import url_for_endpoint_with_token
|
||||
|
||||
|
||||
def test_should_show_overview_page(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
response = logged_in_client.get(url_for('main.user_profile'))
|
||||
|
||||
assert 'Your profile' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
page = client_request.get(('main.user_profile'))
|
||||
assert page.select_one('h1').text.strip() == 'Your profile'
|
||||
|
||||
|
||||
def test_should_show_name_page(
|
||||
logged_in_client
|
||||
client_request
|
||||
):
|
||||
response = logged_in_client.get(url_for('main.user_profile_name'))
|
||||
|
||||
assert 'Change your name' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
page = client_request.get(('main.user_profile_name'))
|
||||
assert page.select_one('h1').text.strip() == 'Change your name'
|
||||
|
||||
|
||||
def test_should_redirect_after_name_change(
|
||||
logged_in_client,
|
||||
api_user_active,
|
||||
client_request,
|
||||
mock_update_user_attribute,
|
||||
mock_email_is_not_already_in_use
|
||||
):
|
||||
new_name = 'New Name'
|
||||
data = {'new_name': new_name}
|
||||
response = logged_in_client.post(url_for(
|
||||
'main.user_profile_name'), data=data)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for('main.user_profile', _external=True)
|
||||
assert mock_update_user_attribute.called
|
||||
client_request.post(
|
||||
'main.user_profile_name',
|
||||
_data={'new_name': 'New Name'},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for('main.user_profile', _external=True),
|
||||
)
|
||||
assert mock_update_user_attribute.called is True
|
||||
|
||||
|
||||
def test_should_show_email_page(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
response = logged_in_client.get(url_for(
|
||||
'main.user_profile_email'))
|
||||
|
||||
assert 'Change your email address' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
page = client_request.get(
|
||||
'main.user_profile_email'
|
||||
)
|
||||
assert page.select_one('h1').text.strip() == 'Change your email address'
|
||||
|
||||
|
||||
def test_should_redirect_after_email_change(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
mock_login,
|
||||
mock_email_is_not_already_in_use,
|
||||
):
|
||||
data = {'email_address': 'new_notify@notify.gov.uk'}
|
||||
response = logged_in_client.post(
|
||||
url_for('main.user_profile_email'),
|
||||
data=data)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for(
|
||||
'main.user_profile_email_authenticate', _external=True)
|
||||
client_request.post(
|
||||
'main.user_profile_email',
|
||||
_data={'email_address': 'new_notify@notify.gov.uk'},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.user_profile_email_authenticate',
|
||||
_external=True,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def test_should_show_authenticate_after_email_change(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
session['new-email'] = 'new_notify@notify.gov.uk'
|
||||
response = logged_in_client.get(url_for('main.user_profile_email_authenticate'))
|
||||
|
||||
assert response.status_code == 200
|
||||
assert 'Change your email address' in response.get_data(as_text=True)
|
||||
assert 'Confirm' in response.get_data(as_text=True)
|
||||
page = client_request.get('main.user_profile_email_authenticate')
|
||||
|
||||
assert 'Change your email address' in page.text
|
||||
assert 'Confirm' in page.text
|
||||
|
||||
|
||||
def test_should_render_change_email_continue_after_authenticate_email(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
mock_verify_password,
|
||||
mock_send_change_email_verification,
|
||||
):
|
||||
data = {'password': '12345'}
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
session['new-email'] = 'new_notify@notify.gov.uk'
|
||||
response = logged_in_client.post(
|
||||
url_for('main.user_profile_email_authenticate'),
|
||||
data=data)
|
||||
assert response.status_code == 200
|
||||
assert 'Click the link in the email to confirm the change to your email address.' \
|
||||
in response.get_data(as_text=True)
|
||||
page = client_request.post(
|
||||
'main.user_profile_email_authenticate',
|
||||
data={'password': '12345'},
|
||||
_expected_status=200,
|
||||
)
|
||||
assert 'Click the link in the email to confirm the change to your email address.' in page.text
|
||||
|
||||
|
||||
def test_should_redirect_to_user_profile_when_user_confirms_email_link(
|
||||
@@ -113,12 +106,10 @@ def test_should_redirect_to_user_profile_when_user_confirms_email_link(
|
||||
|
||||
|
||||
def test_should_show_mobile_number_page(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
response = logged_in_client.get(url_for('main.user_profile_mobile_number'))
|
||||
|
||||
assert 'Change your mobile number' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
page = client_request.get(('main.user_profile_mobile_number'))
|
||||
assert 'Change your mobile number' in page.text
|
||||
|
||||
|
||||
@pytest.mark.parametrize('phone_number_to_register_with', [
|
||||
@@ -126,61 +117,66 @@ def test_should_show_mobile_number_page(
|
||||
'+1800-555-555',
|
||||
])
|
||||
def test_should_redirect_after_mobile_number_change(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
phone_number_to_register_with,
|
||||
):
|
||||
data = {'mobile_number': phone_number_to_register_with}
|
||||
response = logged_in_client.post(
|
||||
url_for('main.user_profile_mobile_number'),
|
||||
data=data)
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for(
|
||||
'main.user_profile_mobile_number_authenticate', _external=True)
|
||||
with logged_in_client.session_transaction() as session:
|
||||
client_request.post(
|
||||
'main.user_profile_mobile_number',
|
||||
_data={'mobile_number': phone_number_to_register_with},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.user_profile_mobile_number_authenticate',
|
||||
_external=True,
|
||||
)
|
||||
)
|
||||
with client_request.session_transaction() as session:
|
||||
assert session['new-mob'] == phone_number_to_register_with
|
||||
|
||||
|
||||
def test_should_show_authenticate_after_mobile_number_change(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
session['new-mob'] = '+441234123123'
|
||||
response = logged_in_client.get(
|
||||
url_for('main.user_profile_mobile_number_authenticate'))
|
||||
|
||||
assert 'Change your mobile number' in response.get_data(as_text=True)
|
||||
assert 'Confirm' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
page = client_request.get(
|
||||
'main.user_profile_mobile_number_authenticate',
|
||||
)
|
||||
|
||||
assert 'Change your mobile number' in page.text
|
||||
assert 'Confirm' in page.text
|
||||
|
||||
|
||||
def test_should_redirect_after_mobile_number_authenticate(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
mock_verify_password,
|
||||
mock_send_verify_code,
|
||||
):
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
session['new-mob'] = '+441234123123'
|
||||
data = {'password': '12345667'}
|
||||
response = logged_in_client.post(
|
||||
url_for('main.user_profile_mobile_number_authenticate'),
|
||||
data=data)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for(
|
||||
'main.user_profile_mobile_number_confirm', _external=True)
|
||||
client_request.post(
|
||||
'main.user_profile_mobile_number_authenticate',
|
||||
_data={'password': '12345667'},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.user_profile_mobile_number_confirm',
|
||||
_external=True,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def test_should_show_confirm_after_mobile_number_change(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
session['new-mob-password-confirmed'] = True
|
||||
response = logged_in_client.get(
|
||||
url_for('main.user_profile_mobile_number_confirm'))
|
||||
page = client_request.get(
|
||||
'main.user_profile_mobile_number_confirm'
|
||||
)
|
||||
|
||||
assert 'Change your mobile number' in response.get_data(as_text=True)
|
||||
assert 'Confirm' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
assert 'Change your mobile number' in page.text
|
||||
assert 'Confirm' in page.text
|
||||
|
||||
|
||||
@pytest.mark.parametrize('phone_number_to_register_with', [
|
||||
@@ -188,7 +184,7 @@ def test_should_show_confirm_after_mobile_number_change(
|
||||
'+1800-555-555',
|
||||
])
|
||||
def test_should_redirect_after_mobile_number_confirm(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
mocker,
|
||||
mock_update_user_attribute,
|
||||
mock_check_verify_code,
|
||||
@@ -203,63 +199,66 @@ def test_should_redirect_after_mobile_number_confirm(
|
||||
# first time (login decorator) return normally, second time (after 2FA return with new session id)
|
||||
mocker.patch('app.user_api_client.get_user', side_effect=[user_before, user_after])
|
||||
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
session['new-mob-password-confirmed'] = True
|
||||
session['new-mob'] = phone_number_to_register_with
|
||||
session['current_session_id'] = user_before.current_session_id
|
||||
data = {'sms_code': '12345'}
|
||||
response = logged_in_client.post(
|
||||
url_for('main.user_profile_mobile_number_confirm'),
|
||||
data=data)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for(
|
||||
'main.user_profile', _external=True)
|
||||
client_request.post(
|
||||
'main.user_profile_mobile_number_confirm',
|
||||
_data={'sms_code': '12345'},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.user_profile',
|
||||
_external=True,
|
||||
)
|
||||
)
|
||||
|
||||
# make sure the current_session_id has changed to what the API returned
|
||||
with logged_in_client.session_transaction() as session:
|
||||
with client_request.session_transaction() as session:
|
||||
assert session['current_session_id'] == user_after.current_session_id
|
||||
|
||||
|
||||
def test_should_show_password_page(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
):
|
||||
response = logged_in_client.get(url_for('main.user_profile_password'))
|
||||
page = client_request.get(('main.user_profile_password'))
|
||||
|
||||
assert 'Change your password' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
assert page.select_one('h1').text.strip() == 'Change your password'
|
||||
|
||||
|
||||
def test_should_redirect_after_password_change(
|
||||
logged_in_client,
|
||||
client_request,
|
||||
mock_update_user_password,
|
||||
mock_verify_password,
|
||||
):
|
||||
data = {
|
||||
'new_password': 'the new password',
|
||||
'old_password': 'the old password'}
|
||||
response = logged_in_client.post(
|
||||
url_for('main.user_profile_password'),
|
||||
data=data)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.location == url_for(
|
||||
'main.user_profile', _external=True)
|
||||
client_request.post(
|
||||
'main.user_profile_password',
|
||||
_data={
|
||||
'new_password': 'the new password',
|
||||
'old_password': 'the old password',
|
||||
},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.user_profile',
|
||||
_external=True,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def test_non_gov_user_cannot_see_change_email_link(
|
||||
logged_in_client,
|
||||
mock_get_non_govuser,
|
||||
client_request,
|
||||
api_nongov_user_active,
|
||||
):
|
||||
response = logged_in_client.get(url_for('main.user_profile'))
|
||||
assert '<a href="/user-profile/email">' not in response.get_data(as_text=True)
|
||||
assert 'Your profile' in response.get_data(as_text=True)
|
||||
assert response.status_code == 200
|
||||
client_request.login(api_nongov_user_active)
|
||||
page = client_request.get('main.user_profile')
|
||||
assert '<a href="/user-profile/email">' not in str(page)
|
||||
assert page.select_one('h1').text.strip() == 'Your profile'
|
||||
|
||||
|
||||
def test_non_gov_user_cannot_access_change_email_page(
|
||||
logged_in_client,
|
||||
mock_get_non_govuser,
|
||||
client_request,
|
||||
api_nongov_user_active,
|
||||
):
|
||||
response = logged_in_client.get(url_for('main.user_profile_email'))
|
||||
assert response.status_code == 403
|
||||
client_request.login(api_nongov_user_active)
|
||||
client_request.get('main.user_profile_email', _expected_status=403)
|
||||
|
||||
Reference in New Issue
Block a user