You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.7 KiB
178 lines
5.7 KiB
import pytest |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_reset(testapp, parse_latest_mail): |
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
form = response.form |
|
form["username"] = "TestAdmin" |
|
form["password"] = "jixx" # noqa: S105 |
|
response = form.submit("Log In") |
|
assert "Credentials are invalid" in response |
|
|
|
response = testapp.get("/forgot", status=200) |
|
assert "Forgot your Password?" in response |
|
|
|
form = response.form |
|
form["email_or_username"] = "jane@example.com" |
|
response = form.submit("Send_Reset_Link").follow() |
|
assert "An email for the password reset was sent" in response |
|
|
|
parsed = parse_latest_mail() |
|
assert "If you forgot your password" in parsed.body |
|
|
|
response = testapp.get(parsed.link) |
|
assert "You can now set a new password" in response |
|
|
|
form = response.form |
|
form["new_password"] = "jixx" # noqa: S105 |
|
response = form.submit("Reset_Password").follow() |
|
assert "You changed your Password." in response |
|
|
|
response = testapp.get("/", status=302).follow() |
|
form = response.form |
|
form["username"] = "TestAdmin" |
|
form["password"] = "jane" # noqa: S105 |
|
response = form.submit("Log In") |
|
assert "Credentials are invalid" in response |
|
|
|
response = testapp.get("/", status=302).follow() |
|
form = response.form |
|
form["username"] = "TestAdmin" |
|
form["password"] = "jixx" # noqa: S105 |
|
response = form.submit("Log In").follow() |
|
assert "My Orders" in response |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_cancel_forgot_password(testapp): |
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/forgot", status=200) |
|
assert "Forgot your Password?" in response |
|
|
|
form = response.form |
|
form["email_or_username"] = "jane@example.com" |
|
response = form.submit("Cancel").follow().follow() |
|
assert "Please Log In" in response |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_reset_user_or_email_not_found(testapp): |
|
from pyramid_mailer import get_mailer |
|
|
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/forgot", status=200) |
|
assert "Forgot your Password?" in response |
|
|
|
form = response.form |
|
form["email_or_username"] = "Unknown User" |
|
response = form.submit("Send_Reset_Link").follow() |
|
assert "An email for the password reset was sent" in response |
|
|
|
registry = testapp.app.registry |
|
mailer = get_mailer(registry) |
|
assert len(mailer.outbox) == 0 |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_reset_cancel_after_token(testapp, parse_latest_mail): |
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/forgot", status=200) |
|
assert "Forgot your Password?" in response |
|
|
|
form = response.form |
|
form["email_or_username"] = "jane@example.com" |
|
response = form.submit("Send_Reset_Link").follow() |
|
assert "An email for the password reset was sent" in response |
|
|
|
parsed = parse_latest_mail() |
|
assert "If you forgot your password" in parsed.body |
|
|
|
response = testapp.get(parsed.link) |
|
assert "You can now set a new password" in response |
|
|
|
form = response.form |
|
form["new_password"] = "jixx" # noqa: S105 |
|
response = form.submit("Cancel").follow(status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/", status=302).follow() |
|
form = response.form |
|
form["username"] = "TestAdmin" |
|
form["password"] = "jane" # noqa: S105 |
|
response = form.submit("Log In").follow() |
|
assert "My Orders" in response |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_reset_empty_password(testapp, parse_latest_mail): |
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/forgot", status=200) |
|
assert "Forgot your Password?" in response |
|
|
|
form = response.form |
|
form["email_or_username"] = "jane@example.com" |
|
response = form.submit("Send_Reset_Link").follow() |
|
assert "An email for the password reset was sent" in response |
|
|
|
parsed = parse_latest_mail() |
|
assert "If you forgot your password" in parsed.body |
|
|
|
response = testapp.get(parsed.link) |
|
assert "You can now set a new password" in response |
|
|
|
form = response.form |
|
form["new_password"] = "" |
|
response = form.submit("Reset_Password") |
|
assert "There was a problem with your submission" in response |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_reset_invalid_token(testapp): |
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/reset?t=invalid").follow(status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
|
|
@pytest.mark.functional |
|
def test_password_reset_form_invalid_token(testapp, parse_latest_mail): |
|
response = testapp.get("/", status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
response = testapp.get("/forgot", status=200) |
|
assert "Forgot your Password?" in response |
|
|
|
form = response.form |
|
form["email_or_username"] = "jane@example.com" |
|
response = form.submit("Send_Reset_Link").follow() |
|
assert "An email for the password reset was sent" in response |
|
|
|
parsed = parse_latest_mail() |
|
assert "If you forgot your password" in parsed.body |
|
|
|
response = testapp.get(parsed.link) |
|
assert "You can now set a new password" in response |
|
|
|
form = response.form |
|
form.action = "/reset?t=invalid" |
|
form["new_password"] = "jixx" # noqa: S105 |
|
response = form.submit("Reset_Password").follow(status=302).follow() |
|
assert "Please Log In" in response |
|
|
|
form = response.form |
|
form["username"] = "TestAdmin" |
|
form["password"] = "jane" # noqa: S105 |
|
response = form.submit("Log In").follow() |
|
assert "My Orders" in response
|
|
|