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>"
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>"
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>"
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>"
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")