From 7082ea60ee223f35e22625de954c10df69cd74e3 Mon Sep 17 00:00:00 2001 From: Min RK Date: Wed, 11 Feb 2015 11:16:41 -0800 Subject: [PATCH] fix filter check in Proxy.check_routes and test that check_routes works as intended --- jupyterhub/orm.py | 2 +- jupyterhub/tests/conftest.py | 1 - jupyterhub/tests/test_proxy.py | 24 +++++++++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/jupyterhub/orm.py b/jupyterhub/orm.py index 02b9789e..a107b922 100644 --- a/jupyterhub/orm.py +++ b/jupyterhub/orm.py @@ -199,7 +199,7 @@ class Proxy(Base): if not routes: routes = yield self.get_routes() - have_routes = { r['user'] for r in routes if 'user' in r } + have_routes = { r['user'] for r in routes.values() if 'user' in r } futures = [] db = inspect(self).session for user in db.query(User).filter(User.server != None): diff --git a/jupyterhub/tests/conftest.py b/jupyterhub/tests/conftest.py index 5b5dad4c..77c42ddd 100644 --- a/jupyterhub/tests/conftest.py +++ b/jupyterhub/tests/conftest.py @@ -47,7 +47,6 @@ def io_loop(): @fixture(scope='module') def app(request): app = MockHub.instance(log_level=logging.DEBUG) - print(app) app.start([]) def fin(): MockHub.clear_instance() diff --git a/jupyterhub/tests/test_proxy.py b/jupyterhub/tests/test_proxy.py index e81dc387..55be87c0 100644 --- a/jupyterhub/tests/test_proxy.py +++ b/jupyterhub/tests/test_proxy.py @@ -4,6 +4,7 @@ import json import os from subprocess import Popen +from .. import orm from .mocking import MockHub from .test_api import api_request from ..utils import wait_for_http_server @@ -19,7 +20,10 @@ def test_external_proxy(request, io_loop): proxy_api_port=proxy_port, proxy_auth_token=auth_token, ) - request.addfinalizer(app.stop) + def fin(): + MockHub.clear_instance() + app.stop() + request.addfinalizer(fin) env = os.environ.copy() env['CONFIGPROXY_AUTH_TOKEN'] = auth_token cmd = [app.proxy_cmd, @@ -102,3 +106,21 @@ def test_external_proxy(request, io_loop): routes = io_loop.run_sync(app.proxy.get_routes) assert sorted(routes.keys()) == ['/', '/user/river'] +def test_check_routes(app, io_loop): + proxy = app.proxy + r = api_request(app, 'users/zoe', method='post') + r.raise_for_status() + r = api_request(app, 'users/zoe/server', method='post') + r.raise_for_status() + zoe = orm.User.find(app.db, 'zoe') + assert zoe is not None + before = sorted(io_loop.run_sync(app.proxy.get_routes)) + assert '/user/zoe' in before + io_loop.run_sync(app.proxy.check_routes) + io_loop.run_sync(lambda : proxy.delete_user(zoe)) + during = sorted(io_loop.run_sync(app.proxy.get_routes)) + assert '/user/zoe' not in during + io_loop.run_sync(app.proxy.check_routes) + after = sorted(io_loop.run_sync(app.proxy.get_routes)) + assert '/user/zoe' in after + assert before == after