示例#1
0
    def test_post_with_invalid_email(app_and_db, client,
                                     test_with_authenticated_user):
        new_email = "*****@*****.**"

        db = app_and_db[1]
        db.session.add(
            User(username="******", email=new_email, password="******"))
        db.session.commit()

        form = EditProfileForm(
            original_username=current_user.username,
            original_email=current_user.email,
            username="******",
            email=new_email,
        )
        client.post(url_for("auth.edit_profile"),
                    data=form.data,
                    follow_redirects=True)

        user = User.query.filter_by(username="******").first()
        token = get_confirmation_token(id=user.id, email=form.email.data)
        response = client.post(url_for("auth.activate_email", token=token),
                               follow_redirects=True)
        assert response.status_code == 200
        user = User.query.get(user.id)
        assert user.email != new_email
        assert b"You can not set this email address." in response.data
示例#2
0
 def test_post_with_valid_token(client, inactive_user):
     token = get_confirmation_token(id=1)
     response = client.post(url_for("auth.activate_account", token=token),
                            follow_redirects=True)
     assert response.status_code == 200
     user = User.query.get(1)
     assert user.is_active
     assert b"You have activated your account successfully." in response.data
示例#3
0
 def test_get(client, captured_templates, inactive_user):
     user = User.query.filter_by(username="******").first()
     token = get_confirmation_token(id=user.id)
     response = client.get(
         url_for("auth.complete_registration", token=token))
     assert response.status_code == 200
     assert len(captured_templates) == 1
     template, context = captured_templates[0]
     assert template.name == "auth/form.html"
     assert context["title"] == "Complete Registration"
     assert isinstance(context["form"], CompleteRegistrationForm)
示例#4
0
 def test_get(client, captured_templates, unlogged_user,
              test_with_anonymous_user):
     user = User.query.filter_by(username="******").first()
     token = get_confirmation_token(id=user.id)
     response = client.get(url_for("auth.reset_password", token=token))
     assert response.status_code == 200
     assert len(captured_templates) == 1
     template, context = captured_templates[0]
     assert template.name == "auth/form.html"
     assert context["title"] == "Change Password"
     assert isinstance(context["form"], ChangePasswordForm)
示例#5
0
def test_token():
    token = get_confirmation_token(_id=1, text="test_text")
    token = verify_token(token)
    _id = token.get("_id", None)
    text = token.get("text", None)
    assert _id == 1
    assert text == "test_text"

    token = get_confirmation_token(_id=5)
    token = verify_token(token)
    _id = token.get("_id", None)
    assert _id == 5

    token = verify_token(b"wrong_token")
    _id = token.get("_id", None)
    assert not _id

    token = verify_token(b"wrong_token")
    _id = token.get("_id", None)
    text = token.get("text", None)
    assert not _id
    assert not text
示例#6
0
def send_password_reset_confirmation(user: User) -> None:
    token = get_confirmation_token(id=user.id)
    tasks.send_email.delay(
        "eCon - Reset Your Password",
        sender=config["MAIL_DEFAULT_SENDER"],
        recipients=[user.email],
        text_body=render_template("email/reset_password.txt",
                                  user=user,
                                  token=token),
        html_body=render_template("email/reset_password.html",
                                  user=user,
                                  token=token),
    )
示例#7
0
def send_complete_registration_mail(user: User) -> None:
    token = get_confirmation_token(id=user.id)
    tasks.send_email.delay(
        "eCon - Complete Registration",
        sender=config["MAIL_DEFAULT_SENDER"],
        recipients=[user.email],
        text_body=render_template("email/complete_registration.txt",
                                  user=user,
                                  token=token),
        html_body=render_template("email/complete_registration.html",
                                  user=user,
                                  token=token),
    )
示例#8
0
def send_change_email_confirmation(email: str, user: User) -> None:
    token = get_confirmation_token(id=user.id, email=email)
    tasks.send_email.delay(
        "eCon - Change Your Email Address",
        sender=config["MAIL_DEFAULT_SENDER"],
        recipients=[email],
        text_body=render_template("email/change_email.txt",
                                  user=user,
                                  token=token),
        html_body=render_template("email/change_email.html",
                                  user=user,
                                  token=token),
    )
示例#9
0
def send_register_confirmation(user: User) -> None:
    token = get_confirmation_token(id=user.id)
    tasks.send_email.delay(
        "eCon - Activate Your Account",
        sender=config["MAIL_DEFAULT_SENDER"],
        recipients=[user.email],
        text_body=render_template("email/activate_account.txt",
                                  user=user,
                                  token=token),
        html_body=render_template("email/activate_account.html",
                                  user=user,
                                  token=token),
    )
示例#10
0
 def test_post_with_valid_token(client, unlogged_user,
                                test_with_anonymous_user):
     user = User.query.filter_by(username="******").first()
     token = get_confirmation_token(id=user.id)
     form = ChangePasswordForm(password="******",
                               password2="new_password")
     response = client.post(
         url_for("auth.reset_password", token=token),
         data=form.data,
         follow_redirects=True,
     )
     assert response.status_code == 200
     assert b"Your password has been reset." in response.data
     assert user.validate_password("new_password")
示例#11
0
 def test_post_with_valid_token(client, inactive_user):
     user = User.query.filter_by(username="******").first()
     token = get_confirmation_token(id=user.id)
     form = CompleteRegistrationForm(username="******",
                                     password="******",
                                     password2="new_password")
     response = client.post(
         url_for("auth.complete_registration", token=token),
         data=form.data,
         follow_redirects=True,
     )
     assert response.status_code == 200
     assert b"You have successfully complete the registration." in response.data
     assert user.username == "new_test_user"
     assert user.validate_password("new_password")
     assert user.is_active
示例#12
0
    def test_post_with_valid_email(client, mocker,
                                   test_with_authenticated_user):
        mocker.patch("app.auth.email.send_change_email_confirmation")
        form = EditProfileForm(
            original_username=current_user.username,
            original_email=current_user.email,
            username="******",
            email="*****@*****.**",
        )
        client.post(url_for("auth.edit_profile"),
                    data=form.data,
                    follow_redirects=True)

        token = get_confirmation_token(id=1, email=form.email.data)
        response = client.post(url_for("auth.activate_email", token=token),
                               follow_redirects=True)
        assert response.status_code == 200
        user = User.query.get(1)
        assert user.email == form.email.data
        assert b"You confirm your new email address." in response.data