import pytest @pytest.mark.functional def test_user_edit(testapp, login_as): response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestUser/edit") form = response.forms[1] form["first_name"] = "Terry" form["last_name"] = "Gilliam" form["email"] = "terry@example.com" form.submit("Save_Changes") response = testapp.get("/users/", status=200) assert "Jon" not in response assert "Smith" not in response assert "jon@example.com" not in response assert "Terry" in response assert "Gilliam" in response assert "terry@example.com" in response @pytest.mark.functional def test_user_edit_cancel(testapp, login_as): response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestUser/edit") form = response.forms[1] form["first_name"] = "Terry" form["last_name"] = "Gilliam" form["email"] = "terry@example.com" form.submit("Cancel") response = testapp.get("/users/", status=200) assert "Jon" in response assert "Smith" in response assert "jon@example.com" in response assert "Terry" not in response assert "Gilliam" not in response assert "terry@example.com" not in response @pytest.mark.functional def test_user_edit_form_error(testapp, login_as): response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestUser/edit") form = response.forms[1] form["first_name"] = "" response = form.submit("Save_Changes") assert "There was a problem with your submission" in response @pytest.mark.functional def test_user_edit_invalid_user(testapp, login_as): response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/Unknown/edit").follow() assert "My Orders" in response @pytest.mark.functional def test_user_edit_reset_password(testapp, login_as, parse_latest_mail): response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestUser/edit") assert "Reset Password" in response assert "Delte User" not in response response = testapp.get("/users/TestUser/password").follow() assert "jon@example.com" in response assert "A password reset link has been sent" in response parsed = parse_latest_mail() assert "If you forgot your password" in parsed.body # same link target as forgotten password, rest is tested there assert parsed.link.startswith("http://localhost/reset?t=") @pytest.mark.functional def test_user_delete(testapp, login_as, parse_latest_mail): # noqa: ARG001 response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestInactive/edit") assert "Delete User" in response response = testapp.get("/users/TestInactive/delete") assert "I confirm that I want to delete this user." in response form = response.forms[1] form["confirmation"].checked = True form.submit("delete") response = testapp.get("/users") assert "has been deleted" in response assert "TestInactive" not in response @pytest.mark.functional def test_user_delete_cancel(testapp, login_as, parse_latest_mail): # noqa: ARG001 response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestInactive/edit") assert "Delete User" in response response = testapp.get("/users/TestInactive/delete") assert "I confirm that I want to delete this user." in response form = response.forms[1] form["confirmation"].checked = True form.submit("cancel") response = testapp.get("/users") assert "has been deleted" not in response assert "TestInactive" in response @pytest.mark.functional def test_user_delete_no_confirm(testapp, login_as, parse_latest_mail): # noqa: ARG001 response = testapp.get("/", status=302).follow() assert "Please Log In" in response response = login_as("TestAdmin", "jane").follow() assert "My Orders" in response response = testapp.get("/users/TestInactive/edit") assert "Delete User" in response response = testapp.get("/users/TestInactive/delete") assert "I confirm that I want to delete this user." in response form = response.forms[1] form["confirmation"].checked = False form.submit("delete") response = testapp.get("/users") assert "has been deleted" not in response assert "TestInactive" in response