Pass xsrf token in tests to /hub/api requests

This commit is contained in:
Erik Sundell
2023-05-11 23:13:59 +02:00
parent b3365fbe45
commit c09e83a6c8

View File

@@ -389,7 +389,9 @@ async def test_idle_server_culled():
) )
async with User(username, hub_url, partial(login_dummy, password="")) as u: async with User(username, hub_url, partial(login_dummy, password="")) as u:
# Login the user
await u.login() await u.login()
# Start user's server # Start user's server
await u.ensure_server_simulate() await u.ensure_server_simulate()
# Assert that the user exists # Assert that the user exists
@@ -400,12 +402,23 @@ async def test_idle_server_culled():
r = await u.session.get(user_url, allow_redirects=False) r = await u.session.get(user_url, allow_redirects=False)
assert r.status == 200 assert r.status == 200
# Extract the xsrf token from the _xsrf cookie set after visiting
# /hub/login with the u.session
hub_cookie = u.session.cookie_jar.filter_cookies(str(u.hub_url / "hub/api/user"))
assert "_xsrf" in hub_cookie
hub_xsrf_token = hub_cookie["_xsrf"].value
# Check that we can talk to JupyterHub itself # Check that we can talk to JupyterHub itself
# use this as a proxy for whether the user still exists # use this as a proxy for whether the user still exists
async def hub_api_request(): async def hub_api_request():
r = await u.session.get( r = await u.session.get(
u.hub_url / "hub/api/user", u.hub_url / "hub/api/user",
headers={"Referer": str(u.hub_url / "hub/")}, headers={
# Referer is needed for JupyterHub <=3
"Referer": str(u.hub_url / "hub/"),
# X-XSRFToken is needed for JupyterHub >=4
"X-XSRFToken": hub_xsrf_token,
},
allow_redirects=False, allow_redirects=False,
) )
return r return r