| 393 | |
| 394 | |
| 395 | def test_session_expiration(app, client): |
| 396 | permanent = True |
| 397 | |
| 398 | @app.route("/") |
| 399 | def index(): |
| 400 | flask.session["test"] = 42 |
| 401 | flask.session.permanent = permanent |
| 402 | return "" |
| 403 | |
| 404 | @app.route("/test") |
| 405 | def test(): |
| 406 | return str(flask.session.permanent) |
| 407 | |
| 408 | rv = client.get("/") |
| 409 | assert "set-cookie" in rv.headers |
| 410 | match = re.search(r"(?i)\bexpires=([^;]+)", rv.headers["set-cookie"]) |
| 411 | expires = parse_date(match.group()) |
| 412 | expected = datetime.now(timezone.utc) + app.permanent_session_lifetime |
| 413 | assert expires.year == expected.year |
| 414 | assert expires.month == expected.month |
| 415 | assert expires.day == expected.day |
| 416 | |
| 417 | rv = client.get("/test") |
| 418 | assert rv.data == b"True" |
| 419 | |
| 420 | permanent = False |
| 421 | rv = client.get("/") |
| 422 | assert "set-cookie" in rv.headers |
| 423 | match = re.search(r"\bexpires=([^;]+)", rv.headers["set-cookie"]) |
| 424 | assert match is None |
| 425 | |
| 426 | |
| 427 | def test_session_stored_last(app, client): |