Fixed scope related tests

This commit is contained in:
0mar
2021-03-12 09:40:36 +01:00
parent 7496fda089
commit c5ebee0ca0
5 changed files with 21 additions and 16 deletions

View File

@@ -447,6 +447,7 @@ class BaseHandler(RequestHandler):
else: # deprecated oauth tokens
user_from_oauth = self.get_current_user_oauth_token()
self.raw_scopes = scopes.get_scopes_for(user_from_oauth)
app_log.debug("Found scopes [%s]", ",".join(self.raw_scopes))
self.parsed_scopes = scopes.parse_scopes(self.raw_scopes)
@property

View File

@@ -101,6 +101,7 @@ async def test_auth_expired_page(app, user, disable_refresh):
assert user._auth_refreshed == before
# Fixme: Why does this text fail?
async def test_auth_expired_api(app, user, disable_refresh):
cookies = await app.login_user(user.name)
assert user._auth_refreshed

View File

@@ -17,11 +17,13 @@ from .utils import api_request
def test_orm_roles(db):
"""Test orm roles setup"""
user_role = orm.Role.find(db, name='user')
token_role = orm.Role.find(db, name='token')
if not user_role:
user_role = orm.Role(name='user', scopes=['all', 'read:all'])
user_role = orm.Role(name='user', scopes=['self'])
db.add(user_role)
db.commit()
if not token_role:
token_role = orm.Role(name='token', scopes=['all'])
db.add(token_role)
service_role = orm.Role(name='service', scopes=['users:servers'])
db.add(service_role)
db.commit()
@@ -53,8 +55,8 @@ def test_orm_roles(db):
# assigns it the default 'user' role
token = user.new_api_token()
user_token = orm.APIToken.find(db, token=token)
assert user_token in user_role.tokens
assert user_role in user_token.roles
assert user_token in token_role.tokens
assert token_role in user_token.roles
# check creating token with a specific role
token = service.new_api_token(roles=['service'])
@@ -66,7 +68,7 @@ def test_orm_roles(db):
db.delete(user)
db.commit()
assert user_role.users == []
assert user_token not in user_role.tokens
assert user_token not in token_role.tokens
# check deleting the service token removes it from 'service' role
db.delete(service_token)
db.commit()
@@ -356,11 +358,11 @@ async def test_load_roles_tokens(tmpdir, request):
assert culler_role in token.roles
# test if all other tokens have default 'user' role
user_role = orm.Role.find(db, 'user')
token_role = orm.Role.find(db, 'token')
sec_token = orm.APIToken.find(db, 'secret-token')
assert user_role in sec_token.roles
assert token_role in sec_token.roles
s_sec_token = orm.APIToken.find(db, 'super-secret-token')
assert user_role in s_sec_token.roles
assert token_role in s_sec_token.roles
@mark.role
@@ -375,7 +377,7 @@ async def test_load_roles_tokens(tmpdir, request):
)
async def test_get_new_token_via_api(app, headers, role_list, status):
user = add_user(app.db, app, name='user')
roles.add_role(app.db, {'name': 'reader', 'scopes': ['read:all']})
roles.add_role(app.db, {'name': 'reader', 'scopes': ['all']})
roles.add_role(app.db, {'name': 'user_creator', 'scopes': ['admin:users']})
if role_list:
body = json.dumps({'roles': role_list})
@@ -393,7 +395,7 @@ async def test_get_new_token_via_api(app, headers, role_list, status):
assert 'token' in reply
assert reply['user'] == 'user'
if not role_list:
assert reply['roles'] == ['user']
assert reply['roles'] == ['token']
else:
assert reply['roles'] == ['reader']
token_id = reply['id']

View File

@@ -9,6 +9,7 @@ from subprocess import Popen
from async_generator import asynccontextmanager
from tornado.ioloop import IOLoop
from ..roles import update_roles
from ..utils import maybe_future
from ..utils import random_port
from ..utils import url_path_join
@@ -93,6 +94,8 @@ async def test_external_service(app):
await app.proxy.add_all_services(app._service_map)
service = app._service_map[name]
api_token = service.orm.api_tokens[0]
update_roles(app.db, api_token, 'tokens', roles=['token'])
url = public_url(app, service) + '/api/users'
r = await async_requests.get(url, allow_redirects=False)
r.raise_for_status()

View File

@@ -50,11 +50,9 @@ async def test_singleuser_auth(app):
assert urlparse(r.url).path.endswith('/oauth2/authorize')
# submit the oauth form to complete authorization
r = await s.post(r.url, data={'scopes': ['identify']}, headers={'Referer': r.url})
assert (
urlparse(r.url)
.path.rstrip('/')
.endswith(url_path_join('/user/nandy', user.spawner.default_url or "/tree"))
)
final_url = urlparse(r.url).path.rstrip('/')
final_path = url_path_join('/user/nandy', user.spawner.default_url or "/tree")
assert final_url.endswith(final_path)
# user isn't authorized, should raise 403
assert r.status_code == 403
assert 'burgess' in r.text