def test_apps_session_cookies_expire(): # Given that I have an app with a cookie store that immediately expires session cookies cookie_store = CookieStore(b"secret", cookie_ttl=0) def set_username(username: str, session: Session) -> None: session["username"] = username def get_username(session: Session) -> Optional[str]: return session.get("username") app = App( components=[ SessionComponent(cookie_store), ], middleware=[ SessionMiddleware(cookie_store), ResponseRendererMiddleware(), ], routes=[ Route("/set-username/{username}", set_username), Route("/get-username", get_username), ], ) # And a client for that app client = testing.TestClient(app) # When I make a request to a handler that stores session data response = client.get(app.reverse_uri("set_username", username="******")) # Then I should get back a successful response assert response.status_code == 200 # And the response should contain my session cookie cookie = cookies.SimpleCookie() for data in response.headers.get_all("set-cookie"): cookie.load(data.replace("SameSite=Strict", "")) assert "__sess__" in cookie # When I make another request with that same cookie session_cookie = cookie.output(attrs=[], header="") response = client.get(app.reverse_uri("get_username"), headers={ "cookie": session_cookie, }) # Then I should get back nothing assert response.json() is None
def test_app_can_render_mail_templates(): mail = Mail( user="******", password="******", port=587, use_tls=True, suppress_send=True, ) mail.send = MagicMock(return_value=None) def template_handler(mail_templates: MailTemplates) -> Response: mail.send_message( subject="Test email", html=mail_templates.render("test_template.html", name="Molten"), recipients=["*****@*****.**"], ) return Response(HTTP_204, content="") app = App( components=[MailTemplatesComponent("./tests/mail_templates")], routes=[Route("/", template_handler, name="index")], ) client = testing.TestClient(app) # Given that a handler will use templating # When constructing and email response = client.get(app.reverse_uri("index")) # Then I should get back a successfull response assert response.status_code == 204 # and the handler should have called the Mail object # with the string value of the rendered template mail_msg = mail.send.call_args[0][0] assert "<th>Hey there Molten</th>" in mail_msg.html