mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-10 11:33:01 +00:00
test passing url params to spawner
This commit is contained in:
@@ -86,6 +86,8 @@ class MockSpawner(LocalProcessSpawner):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def user_env(self, env):
|
def user_env(self, env):
|
||||||
|
if self.handler:
|
||||||
|
env['HANDLER_ARGS'] = self.handler.request.query
|
||||||
return env
|
return env
|
||||||
|
|
||||||
@default('cmd')
|
@default('cmd')
|
||||||
|
@@ -604,6 +604,32 @@ def test_spawn(app):
|
|||||||
assert app.users.count_active_users()['pending'] == 0
|
assert app.users.count_active_users()['pending'] == 0
|
||||||
|
|
||||||
|
|
||||||
|
@mark.gen_test
|
||||||
|
def test_spawn_handler(app):
|
||||||
|
"""Test that the requesting Handler is passed to Spawner.handler"""
|
||||||
|
db = app.db
|
||||||
|
name = 'salmon'
|
||||||
|
user = add_user(db, app=app, name=name)
|
||||||
|
app_user = app.users[name]
|
||||||
|
|
||||||
|
# spawn via API with ?foo=bar
|
||||||
|
r = yield api_request(app, 'users', name, 'server', method='post', params={'foo': 'bar'})
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
# verify that request params got passed down
|
||||||
|
# implemented in MockSpawner
|
||||||
|
url = public_url(app, user)
|
||||||
|
r = yield async_requests.get(ujoin(url, 'env'))
|
||||||
|
env = r.json()
|
||||||
|
assert 'HANDLER_ARGS' in env
|
||||||
|
assert env['HANDLER_ARGS'] == 'foo=bar'
|
||||||
|
# make user spawner.handler doesn't persist after spawn finishes
|
||||||
|
assert app_user.spawner.handler is None
|
||||||
|
|
||||||
|
r = yield api_request(app, 'users', name, 'server', method='delete')
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
|
||||||
@mark.slow
|
@mark.slow
|
||||||
@mark.gen_test
|
@mark.gen_test
|
||||||
def test_slow_spawn(app, no_patience, slow_spawn):
|
def test_slow_spawn(app, no_patience, slow_spawn):
|
||||||
|
@@ -168,6 +168,31 @@ def test_spawn_redirect(app):
|
|||||||
assert path == ujoin(app.base_url, '/user/%s/' % name)
|
assert path == ujoin(app.base_url, '/user/%s/' % name)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.gen_test
|
||||||
|
def test_spawn_handler_access(app):
|
||||||
|
name = 'winston'
|
||||||
|
cookies = yield app.login_user(name)
|
||||||
|
u = app.users[orm.User.find(app.db, name)]
|
||||||
|
|
||||||
|
status = yield u.spawner.poll()
|
||||||
|
assert status is not None
|
||||||
|
|
||||||
|
# spawn server via browser link with ?arg=value
|
||||||
|
r = yield get_page('spawn', app, cookies=cookies, params={'arg': 'value'})
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
# verify that request params got passed down
|
||||||
|
# implemented in MockSpawner
|
||||||
|
r = yield async_requests.get(ujoin(public_url(app, u), 'env'))
|
||||||
|
env = r.json()
|
||||||
|
assert 'HANDLER_ARGS' in env
|
||||||
|
assert env['HANDLER_ARGS'] == 'arg=value'
|
||||||
|
|
||||||
|
# stop server
|
||||||
|
r = yield api_request(app, 'users', name, 'server', method='delete')
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.gen_test
|
@pytest.mark.gen_test
|
||||||
def test_spawn_admin_access(app, admin_access):
|
def test_spawn_admin_access(app, admin_access):
|
||||||
"""GET /user/:name as admin with admin-access spawns user's server"""
|
"""GET /user/:name as admin with admin-access spawns user's server"""
|
||||||
|
Reference in New Issue
Block a user