示例#1
0
def test_register_post_no_confirmation(session, app, client, mocker):
    endpoint = endpoints.RegisterEndpoint(
        User,
        secret="s0secret",
        sender=SENDER,
        form_template="<html>${error}</html>")
    mocker.patch.object(endpoint, "send_email_confirmation")

    @app.post("/register")
    async def _post(
            username: str = fastapi.Form(None),
            password: str = fastapi.Form(None),
            confirm_password: str = fastapi.Form(None),
            email: str = fastapi.Form(None),
    ):
        return await endpoint.on_post(BASE_URL,
                                      session,
                                      username=username,
                                      email=email,
                                      password=password,
                                      confirm_password=confirm_password)

    res = client.post("/register",
                      data={
                          "username": "******",
                          "password": "******",
                          "confirm_password": "******",
                          "email": "*****@*****.**",
                      })
    assert res.status_code == 400
    assert res.text == "<html>The specified passwords do not match.</html>"
示例#2
0
def test_register_post_duplicate_username(session, app, client, mocker):
    user = User(username="******", email="*****@*****.**")
    session.add(user)
    session.commit()

    endpoint = endpoints.RegisterEndpoint(
        User,
        secret="s0secret",
        sender=SENDER,
        form_template="<html>${error}</html>")
    mocker.patch.object(endpoint, "send_email_confirmation")

    @app.post("/register")
    async def _post(
            username: str = fastapi.Form(None),
            password: str = fastapi.Form(None),
            confirm_password: str = fastapi.Form(None),
            email: str = fastapi.Form(None),
    ):
        return await endpoint.on_post(BASE_URL,
                                      session,
                                      username=username,
                                      email=email,
                                      password=password,
                                      confirm_password=confirm_password)

    res = client.post("/register",
                      data={
                          "username": "******",
                          "password": "******",
                          "email": "*****@*****.**",
                      })
    assert res.status_code == 409
    assert res.text == "<html>That username already exists.</html>"
示例#3
0
def test_register_post(session, app, client, mocker):
    endpoint = endpoints.RegisterEndpoint(
        User,
        secret="s0secret",
        sender=SENDER,
        sent_template="<html>${email}</html>",
    )
    mocker.patch.object(endpoint, "send_email_confirmation")

    @app.post("/register")
    async def _post(
            username: str = fastapi.Form(None),
            password: str = fastapi.Form(None),
            email: str = fastapi.Form(None),
    ):
        return await endpoint.on_post(BASE_URL,
                                      session,
                                      username=username,
                                      password=password,
                                      email=email)

    recipient = "*****@*****.**"
    res = client.post("/register",
                      data={
                          "username": "******",
                          "password": "******",
                          "email": recipient
                      })
    assert res.status_code == 200
    assert res.text == f"<html>{recipient}</html>"
示例#4
0
def test_register_get(session, app, client):
    endpoint = endpoints.RegisterEndpoint(
        User,
        secret="s0secret",
        sender=SENDER,
        form_template="<html>${title}</html>",
    )

    @app.get("/register")
    async def _get():
        return await endpoint.on_get()

    res = client.get("/register")
    assert res.status_code == 200
    assert res.text == "<html>FastAPI-SQLAlchemy</html>"
示例#5
0
def test_register_post_redo_unconfirmed(session, app, client, mocker):
    user = User(username="******", email="*****@*****.**")
    session.add(user)
    session.commit()

    endpoint = endpoints.RegisterEndpoint(
        User,
        secret="s0secret",
        sender=SENDER,
        sent_template="<html>${username} <${email}></html>")
    mocker.patch.object(endpoint, "send_email_confirmation")

    @app.post("/register")
    async def _post(
            username: str = fastapi.Form(None),
            password: str = fastapi.Form(None),
            confirm_password: str = fastapi.Form(None),
            email: str = fastapi.Form(None),
    ):
        return await endpoint.on_post(BASE_URL,
                                      session,
                                      username=username,
                                      email=email,
                                      password=password,
                                      confirm_password=confirm_password)

    res = client.post("/register",
                      data={
                          "username": "******",
                          "password": "******",
                          "email": "*****@*****.**",
                      })
    assert res.status_code == 200
    assert res.text == "<html>testuser <*****@*****.**></html>"

    assert user.verify("passw0rd")