mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-11 05:43:44 -05:00
77 lines
2.5 KiB
Python
77 lines
2.5 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_request):
|
||
client_request.logout()
|
||
page = client_request.get(".forgot_password")
|
||
assert "We’ll send you an email to create a new password." in page.text
|
||
|
||
|
||
@pytest.mark.parametrize(
|
||
"email_address", ["test@user.gsa.gov", "someuser@notgovernment.com"]
|
||
)
|
||
def test_should_redirect_to_password_reset_sent_for_valid_email(
|
||
client_request,
|
||
fake_uuid,
|
||
email_address,
|
||
mocker,
|
||
):
|
||
client_request.logout()
|
||
sample_user = user_json(email_address=email_address)
|
||
mocker.patch("app.user_api_client.send_reset_password_url", return_value=None)
|
||
page = client_request.post(
|
||
".forgot_password",
|
||
_data={"email_address": sample_user["email_address"]},
|
||
_expected_status=200,
|
||
)
|
||
assert "Click the link in the email to reset your password." in page.text
|
||
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_request,
|
||
fake_uuid,
|
||
mocker,
|
||
):
|
||
client_request.logout()
|
||
sample_user = user_json(email_address="test@user.gsa.gov")
|
||
mocker.patch("app.user_api_client.send_reset_password_url", return_value=None)
|
||
client_request.post_url(
|
||
url_for(".forgot_password") + f"?next=/services/{SERVICE_ONE_ID}/templates",
|
||
_data={"email_address": sample_user["email_address"]},
|
||
_expected_status=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_request,
|
||
api_user_active,
|
||
mocker,
|
||
):
|
||
client_request.logout()
|
||
mocker.patch(
|
||
"app.user_api_client.send_reset_password_url",
|
||
side_effect=HTTPError(Response(status=404), "Not found"),
|
||
)
|
||
page = client_request.post(
|
||
".forgot_password",
|
||
_data={"email_address": api_user_active["email_address"]},
|
||
_expected_status=200,
|
||
)
|
||
assert "Click the link in the email to reset your password." in page.text
|
||
app.user_api_client.send_reset_password_url.assert_called_once_with(
|
||
api_user_active["email_address"], next_string=None
|
||
)
|