mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-04-27 20:51:00 -04:00
This change has been made following PR review, to ensure that special signs are transformed correctly when passing through the next URL.
71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
import pytest
|
||
from flask import Response, url_for
|
||
from notifications_python_client.errors import HTTPError
|
||
|
||
import app
|
||
from tests import user_json
|
||
from tests.conftest import SERVICE_ONE_ID
|
||
|
||
|
||
def test_should_render_forgot_password(client):
|
||
response = client.get(url_for('.forgot_password'))
|
||
assert response.status_code == 200
|
||
assert 'We’ll send you an email to create a new password.' \
|
||
in response.get_data(as_text=True)
|
||
|
||
|
||
@pytest.mark.parametrize('email_address', [
|
||
'test@user.gov.uk',
|
||
'someuser@notgovernment.com'
|
||
])
|
||
def test_should_redirect_to_password_reset_sent_for_valid_email(
|
||
client,
|
||
fake_uuid,
|
||
email_address,
|
||
mocker,
|
||
):
|
||
sample_user = user_json(email_address=email_address)
|
||
mocker.patch('app.user_api_client.send_reset_password_url', return_value=None)
|
||
response = client.post(
|
||
url_for('.forgot_password'),
|
||
data={'email_address': sample_user['email_address']})
|
||
assert response.status_code == 200
|
||
assert 'Click the link in the email to reset your password.' \
|
||
in response.get_data(as_text=True)
|
||
app.user_api_client.send_reset_password_url.assert_called_once_with(sample_user['email_address'], next_string=None)
|
||
|
||
|
||
def test_forgot_password_sends_next_link_with_reset_password_email_request(
|
||
client,
|
||
fake_uuid,
|
||
mocker,
|
||
):
|
||
sample_user = user_json(email_address='test@user.gov.uk')
|
||
mocker.patch('app.user_api_client.send_reset_password_url', return_value=None)
|
||
response = client.post(
|
||
url_for('.forgot_password') + f"?next=/services/{SERVICE_ONE_ID}/templates",
|
||
data={'email_address': sample_user['email_address']})
|
||
assert response.status_code == 200
|
||
app.user_api_client.send_reset_password_url.assert_called_once_with(
|
||
sample_user['email_address'], next_string=f'/services/{SERVICE_ONE_ID}/templates'
|
||
)
|
||
|
||
|
||
def test_should_redirect_to_password_reset_sent_for_missing_email(
|
||
client,
|
||
api_user_active,
|
||
mocker,
|
||
):
|
||
|
||
mocker.patch('app.user_api_client.send_reset_password_url', side_effect=HTTPError(Response(status=404),
|
||
'Not found'))
|
||
response = client.post(
|
||
url_for('.forgot_password'),
|
||
data={'email_address': api_user_active['email_address']})
|
||
assert response.status_code == 200
|
||
assert 'Click the link in the email to reset your password.' \
|
||
in response.get_data(as_text=True)
|
||
app.user_api_client.send_reset_password_url.assert_called_once_with(
|
||
api_user_active['email_address'], next_string=None
|
||
)
|