示例#1
0
async def test__use_provided_session_websocket(ManagedServerLoop) -> None:
    application = Application()
    with ManagedServerLoop(application) as server:
        sessions = server.get_sessions('/')
        assert 0 == len(sessions)

        expected = 'foo'
        token = generate_jwt_token(expected)
        await websocket_open(server.io_loop,
                             ws_url(server),
                             subprotocols=["bokeh", token])

        sessions = server.get_sessions('/')
        assert 1 == len(sessions)
        assert expected == sessions[0].id
示例#2
0
async def test__reject_no_token_websocket(ManagedServerLoop: MSL) -> None:
    application = Application()
    with ManagedServerLoop(application) as server:
        sessions = server.get_sessions('/')
        assert 0 == len(sessions)

        await http_get(server.io_loop, url(server))

        sessions = server.get_sessions('/')
        assert 1 == len(sessions)

        ws = await websocket_open(server.io_loop,
                                  ws_url(server),
                                  subprotocols=["foo"])
        assert await ws.read_queue.get() is None
示例#3
0
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
示例#4
0
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
示例#5
0
async def test__reject_unsigned_session_websocket(
        ManagedServerLoop: MSL) -> None:
    application = Application()
    with ManagedServerLoop(application, sign_sessions=True,
                           secret_key='bar') as server:
        sessions = server.get_sessions('/')
        assert 0 == len(sessions)

        expected = 'foo'
        token = generate_jwt_token(expected)
        await websocket_open(server.io_loop,
                             ws_url(server),
                             subprotocols=["bokeh", token])

        sessions = server.get_sessions('/')
        assert 0 == len(sessions)
示例#6
0
async def test__reject_wrong_subprotocol_websocket(ManagedServerLoop) -> None:
    application = Application()
    with ManagedServerLoop(application) 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)

        sessions = server.get_sessions('/')
        assert 1 == len(sessions)

        ws = await websocket_open(server.io_loop,
                                  ws_url(server),
                                  subprotocols=["foo", token])
        assert await ws.read_queue.get() is None