mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-10 03:23:04 +00:00
add user list handler, first of many
This commit is contained in:
@@ -5,13 +5,31 @@ import requests
|
||||
from ..utils import url_path_join as ujoin
|
||||
from .. import orm
|
||||
|
||||
def add_user(db, **kwargs):
|
||||
user = orm.User(**kwargs)
|
||||
db.add(user)
|
||||
db.commit()
|
||||
return user
|
||||
|
||||
def auth_header(db, name):
|
||||
user = db.query(orm.User).filter(orm.User.name==name).first()
|
||||
if user is None:
|
||||
user = add_user(db, name=name)
|
||||
if not user.api_tokens:
|
||||
token = user.new_api_token()
|
||||
db.add(token)
|
||||
db.commit()
|
||||
else:
|
||||
token = user.api_tokens[0]
|
||||
return {'Authorization': 'token %s' % token.token}
|
||||
|
||||
def api_request(app, *api_path, **kwargs):
|
||||
"""Make an API request"""
|
||||
base_url = app.hub.server.url
|
||||
token = app.db.query(orm.APIToken).first()
|
||||
kwargs.setdefault('headers', {})
|
||||
kwargs['headers'].setdefault('Authorization', 'token %s' % token.token)
|
||||
headers = kwargs.setdefault('headers', {})
|
||||
|
||||
if 'Authorization' not in headers:
|
||||
headers.update(auth_header(app.db, 'admin'))
|
||||
|
||||
url = ujoin(base_url, 'api', *api_path)
|
||||
method = kwargs.pop('method', 'get')
|
||||
@@ -47,3 +65,22 @@ def test_auth_api(app):
|
||||
assert r.status_code == 403
|
||||
|
||||
|
||||
def test_get_users(app):
|
||||
db = app.db
|
||||
r = api_request(app, 'users')
|
||||
assert r.status_code == 200
|
||||
assert sorted(r.json(), key=lambda d: d['name']) == [
|
||||
{
|
||||
'name': 'admin',
|
||||
'server': None,
|
||||
},
|
||||
{
|
||||
'name': 'user',
|
||||
'server': None,
|
||||
}
|
||||
]
|
||||
|
||||
r = api_request(app, 'users',
|
||||
headers=auth_header(db, 'user'),
|
||||
)
|
||||
assert r.status_code == 403
|
||||
|
Reference in New Issue
Block a user