@@ -104,6 +104,12 @@ async def mock_gateway_request(url, **kwargs):
104104 else :
105105 raise HTTPError (404 , message = "Kernelspec does not exist: %s" % requested_kernelspec )
106106
107+ # Fetch kernelspec asset
108+ if endpoint .rfind ("/kernelspecs/" ) >= 0 and method == "GET" :
109+ response_buf = BytesIO (b"foo" )
110+ response = await ensure_async (HTTPResponse (request , 200 , buffer = response_buf ))
111+ return response
112+
107113 # Create kernel
108114 if endpoint .endswith ("/api/kernels" ) and method == "POST" :
109115 json_body = json .loads (kwargs ["body" ])
@@ -393,7 +399,7 @@ async def test_gateway_class_mappings(init_gateway, jp_serverapp):
393399 assert jp_serverapp .kernel_spec_manager_class .__name__ == "GatewayKernelSpecManager"
394400
395401
396- async def test_gateway_get_kernelspecs (init_gateway , jp_fetch ):
402+ async def test_gateway_get_kernelspecs (init_gateway , jp_fetch , jp_serverapp ):
397403 # Validate that kernelspecs come from gateway.
398404 with mocked_gateway :
399405 r = await jp_fetch ("api" , "kernelspecs" , method = "GET" )
@@ -412,6 +418,10 @@ async def test_gateway_get_named_kernelspec(init_gateway, jp_fetch):
412418 kspec_foo = json .loads (r .body .decode ("utf-8" ))
413419 assert kspec_foo .get ("name" ) == "kspec_foo"
414420
421+ r = await jp_fetch ("kernelspecs" , "kspec_foo" , "hi" , method = "GET" )
422+ assert r .code == 200
423+ assert r .body == b"foo"
424+
415425 with pytest .raises (tornado .httpclient .HTTPClientError ) as e :
416426 await jp_fetch ("api" , "kernelspecs" , "no_such_spec" , method = "GET" )
417427 assert expected_http_error (e , 404 )
@@ -443,7 +453,7 @@ async def test_gateway_session_lifecycle(init_gateway, jp_root_dir, jp_fetch):
443453 assert await is_kernel_running (jp_fetch , kernel_id ) is False
444454
445455
446- async def test_gateway_kernel_lifecycle (init_gateway , jp_fetch ):
456+ async def test_gateway_kernel_lifecycle (init_gateway , jp_serverapp , jp_ws_fetch , jp_fetch ):
447457 # Validate kernel lifecycle functions; create, interrupt, restart and delete.
448458
449459 # create
@@ -452,6 +462,12 @@ async def test_gateway_kernel_lifecycle(init_gateway, jp_fetch):
452462 # ensure kernel still considered running
453463 assert await is_kernel_running (jp_fetch , kernel_id ) is True
454464
465+ ws = await jp_ws_fetch ("api" , "kernels" , kernel_id , "channels" )
466+ ws .ping ()
467+ ws .write_message (b"hi" )
468+ ws .on_message (b"hi" )
469+ ws .close ()
470+
455471 # interrupt
456472 await interrupt_kernel (jp_fetch , kernel_id )
457473
0 commit comments