def test__no_autocreate_session_websocket(): application = Application() with ManagedServerLoop(application) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) websocket_open(server.io_loop, ws_url(server) + "?bokeh-protocol-version=1.0") sessions = server.get_sessions('/') assert 0 == len(sessions)
def test__no_generate_session_doc(): application = Application() with ManagedServerLoop(application, generate_session_ids=False) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) with (pytest.raises(HTTPError)) as info: http_get(server.io_loop, url(server)) assert 'No bokeh-session-id provided' in repr(info.value) sessions = server.get_sessions('/') assert 0 == len(sessions)
def test_server_applications_callable_arg(): def modify_doc(doc): doc.title = "Hello, world!" with ManagedServerLoop(modify_doc, port=0) as server: http_get(server.io_loop, url(server)) session = server.get_sessions('/')[0] assert session.document.title == "Hello, world!" with ManagedServerLoop({"/foo": modify_doc}, port=0) as server: http_get(server.io_loop, url(server) + "foo") session = server.get_sessions('/foo')[0] assert session.document.title == "Hello, world!"
def test__reject_unsigned_session_doc(): application = Application() with ManagedServerLoop(application, sign_sessions=True, secret_key='bar') as server: sessions = server.get_sessions('/') assert 0 == len(sessions) expected = 'foo' with (pytest.raises(HTTPError)) as info: http_get(server.io_loop, url(server) + "?bokeh-session-id=" + expected) assert 'Invalid session ID' in repr(info.value) sessions = server.get_sessions('/') assert 0 == len(sessions)
def test__autocreate_session_doc(): application = Application() with ManagedServerLoop(application) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = http_get(server.io_loop, url(server)) html = response.body sessionid = extract_sessionid_from_json(html) sessions = server.get_sessions('/') assert 1 == len(sessions) assert sessionid == sessions[0].id
def test__reject_unsigned_session_websocket(): application = Application() with ManagedServerLoop(application, sign_sessions=True, secret_key='bar') as server: sessions = server.get_sessions('/') assert 0 == len(sessions) expected = 'foo' url = ws_url(server) + \ "?bokeh-protocol-version=1.0" + \ "&bokeh-session-id=" + expected websocket_open(server.io_loop, url) sessions = server.get_sessions('/') assert 0 == len(sessions)
def test__autocreate_signed_session_doc(): application = Application() with ManagedServerLoop(application, sign_sessions=True, secret_key='foo') as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = http_get(server.io_loop, url(server)) html = response.body sessionid = extract_sessionid_from_json(html) sessions = server.get_sessions('/') assert 1 == len(sessions) assert sessionid == sessions[0].id assert check_session_id_signature(sessionid, signed=True, secret_key='foo')
def test__use_provided_session_websocket(): application = Application() with ManagedServerLoop(application) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) expected = 'foo' url = ws_url(server) + \ "?bokeh-protocol-version=1.0" + \ "&bokeh-session-id=" + expected websocket_open(server.io_loop, url) sessions = server.get_sessions('/') assert 1 == len(sessions) assert expected == sessions[0].id
def test__use_provided_session_doc(): application = Application() with ManagedServerLoop(application) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) expected = 'foo' response = http_get(server.io_loop, url(server) + "?bokeh-session-id=" + expected) html = response.body sessionid = extract_sessionid_from_json(html) assert expected == sessionid sessions = server.get_sessions('/') assert 1 == len(sessions) assert expected == sessions[0].id
def test__no_set_title_autoload(): application = Application() with ManagedServerLoop(application) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = http_get(server.io_loop, autoload_url(server)) js = response.body use_for_title = extract_use_for_title_from_json(js) assert use_for_title == "false"
async def test__use_provided_session_autoload_token(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) expected = 'foo' expected_token = generate_jwt_token(expected) response = await http_get( server.io_loop, autoload_url(server) + "&bokeh-token=" + expected_token) js = response.body token = extract_token_from_json(js) assert expected_token == token sessionid = get_session_id(token) assert expected == sessionid sessions = server.get_sessions('/') assert 1 == len(sessions) assert expected == sessions[0].id
async def test__exclude_cookies(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application, exclude_cookies=['custom']) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = await http_get(server.io_loop, url(server), headers={'Cookie': 'custom = test ; custom2 = test2'}) html = response.body token = extract_token_from_json(html) payload = get_token_payload(token) assert 'cookies' in payload assert payload['cookies'] == {'custom2': 'test2'}
async def test__exclude_headers(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application, exclude_headers=['Connection', 'Host']) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = await http_get(server.io_loop, url(server)) html = response.body token = extract_token_from_json(html) payload = get_token_payload(token) assert 'headers' in payload assert payload["headers"].get("Accept-Encoding") == "gzip"
async def test__include_headers(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application, include_headers=['Custom']) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = await http_get(server.io_loop, url(server), headers={'Custom': 'Test'}) html = response.body token = extract_token_from_json(html) payload = get_token_payload(token) assert 'headers' in payload assert payload['headers'] == {'Custom': 'Test'}
async def test__reject_expired_session_websocket(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application, session_token_expiration=1) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = await http_get(server.io_loop, url(server)) html = response.body token = extract_token_from_json(html) time.sleep(1.1) ws = await websocket_open(server.io_loop, ws_url(server), subprotocols=["bokeh", token]) assert await ws.read_queue.get() is None
async def test__accept_session_websocket(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application, session_token_expiration=1) as server: sessions = server.get_sessions('/') assert 0 == len(sessions) response = await http_get(server.io_loop, url(server)) html = response.body token = extract_token_from_json(html) ws = await websocket_open(server.io_loop, ws_url(server), subprotocols=["bokeh", token]) msg = await ws.read_queue.get() assert isinstance(msg, str) assert 'ACK' in msg
async def test_get_sessions(ManagedServerLoop) -> None: application = Application() with ManagedServerLoop(application) as server: server_sessions = server.get_sessions('/') assert len(server_sessions) == 0 await http_get(server.io_loop, url(server)) server_sessions = server.get_sessions('/') assert len(server_sessions) == 1 await http_get(server.io_loop, url(server)) server_sessions = server.get_sessions('/') assert len(server_sessions) == 2 server_sessions = server.get_sessions() assert len(server_sessions) == 2 with pytest.raises(ValueError): server.get_sessions("/foo") with ManagedServerLoop({"/foo": application, "/bar": application}) as server: await http_get(server.io_loop, url(server) + "foo") server_sessions = server.get_sessions('/foo') assert len(server_sessions) == 1 server_sessions = server.get_sessions('/bar') assert len(server_sessions) == 0 server_sessions = server.get_sessions() assert len(server_sessions) == 1 await http_get(server.io_loop, url(server) + "foo") server_sessions = server.get_sessions('/foo') assert len(server_sessions) == 2 server_sessions = server.get_sessions('/bar') assert len(server_sessions) == 0 server_sessions = server.get_sessions() assert len(server_sessions) == 2 await http_get(server.io_loop, url(server) + "bar") server_sessions = server.get_sessions('/foo') assert len(server_sessions) == 2 server_sessions = server.get_sessions('/bar') assert len(server_sessions) == 1 server_sessions = server.get_sessions() assert len(server_sessions) == 3
def test_get_sessions(): application = Application() with ManagedServerLoop(application) as server: server_sessions = server.get_sessions('/') assert len(server_sessions) == 0 http_get(server.io_loop, url(server)) server_sessions = server.get_sessions('/') assert len(server_sessions) == 1 http_get(server.io_loop, url(server)) server_sessions = server.get_sessions('/') assert len(server_sessions) == 2 server_sessions = server.get_sessions() assert len(server_sessions) == 2 with pytest.raises(ValueError): server.get_sessions("/foo") with ManagedServerLoop({"/foo": application, "/bar": application}) as server: http_get(server.io_loop, url(server) + "foo") server_sessions = server.get_sessions('/foo') assert len(server_sessions) == 1 server_sessions = server.get_sessions('/bar') assert len(server_sessions) == 0 server_sessions = server.get_sessions() assert len(server_sessions) == 1 http_get(server.io_loop, url(server) + "foo") server_sessions = server.get_sessions('/foo') assert len(server_sessions) == 2 server_sessions = server.get_sessions('/bar') assert len(server_sessions) == 0 server_sessions = server.get_sessions() assert len(server_sessions) == 2 http_get(server.io_loop, url(server) + "bar") server_sessions = server.get_sessions('/foo') assert len(server_sessions) == 2 server_sessions = server.get_sessions('/bar') assert len(server_sessions) == 1 server_sessions = server.get_sessions() assert len(server_sessions) == 3