From e9573b6e241e4b32bbd040b278b453dc620963a0 Mon Sep 17 00:00:00 2001 From: Min RK Date: Tue, 6 Feb 2018 17:02:23 +0100 Subject: [PATCH] fixup test_orm with new User wrapper user.db is evaluated immediately, rather than on first request, which means we can't do User(orm.User) before adding the orm.User to the db --- jupyterhub/tests/test_orm.py | 18 ++++++++++-------- jupyterhub/user.py | 11 ++++------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/jupyterhub/tests/test_orm.py b/jupyterhub/tests/test_orm.py index eea53c30..33ffc203 100644 --- a/jupyterhub/tests/test_orm.py +++ b/jupyterhub/tests/test_orm.py @@ -42,9 +42,10 @@ def test_server(db): def test_user(db): - user = User(orm.User(name='kaylee')) - db.add(user) + orm_user = orm.User(name='kaylee') + db.add(orm_user) db.commit() + user = User(orm_user) spawner = user.spawners[''] spawner.orm_spawner.state = {'pid': 4234} assert user.name == 'kaylee' @@ -164,13 +165,13 @@ def test_spawn_fails(db): @gen.coroutine def start(self): raise RuntimeError("Split the party") - + user = User(orm_user, { 'spawner_class': BadSpawner, 'config': None, 'statsd': EmptyClass(), }) - + with pytest.raises(RuntimeError) as exc: yield user.spawn() assert user.spawners[''].server is None @@ -194,15 +195,16 @@ def test_groups(db): @pytest.mark.gen_test def test_auth_state(db): - user = User(orm.User(name='eve')) - db.add(user.orm_user) + orm_user = orm.User(name='eve') + db.add(orm_user) db.commit() - + user = User(orm_user) + ck = crypto.CryptKeeper.instance() # starts empty assert user.encrypted_auth_state is None - + # can't set auth_state without keys state = {'key': 'value'} ck.keys = [] diff --git a/jupyterhub/user.py b/jupyterhub/user.py index 7e20b3c3..4e908c5f 100644 --- a/jupyterhub/user.py +++ b/jupyterhub/user.py @@ -136,13 +136,10 @@ class User: log = app_log settings = None - def __init__(self, orm_user, settings=None, **kwargs): - self.orm_user = orm_user - self.db = inspect(orm_user).session + def __init__(self, orm_user, settings=None, db=None): + self.db = db or inspect(orm_user).session self.settings = settings or {} - for key, attr in kwargs: - print('setting', key, attr) - setattr(self, key, attr) + self.orm_user = orm_user self.allow_named_servers = self.settings.get('allow_named_servers', False) @@ -225,7 +222,7 @@ class User: @property def spawner(self): return self.spawners[''] - + @spawner.setter def spawner(self, spawner): self.spawners[''] = spawner