1from packaging import version 2 3from unit.applications.lang.node import ApplicationNode 4from unit.applications.websockets import ApplicationWebsocket 5 6prerequisites = { 7 'modules': {'node': lambda v: version.parse(v) >= version.parse('14.16.0')} 8} 9 10client = ApplicationNode(es_modules=True) 11ws = ApplicationWebsocket() 12 13 14def assert_basic_application(): 15 resp = client.get() 16 assert resp['headers']['Content-Type'] == 'text/plain', 'basic header' 17 assert resp['body'] == 'Hello World\n', 'basic body' 18 19 20def test_node_es_modules_loader_http(): 21 client.load('loader/es_modules_http', name="app.mjs") 22 23 assert_basic_application() 24 25 26def test_node_es_modules_loader_http_indirect(): 27 client.load('loader/es_modules_http_indirect', name="app.js") 28 29 assert_basic_application() 30 31 32def test_node_es_modules_loader_websockets(): 33 client.load('loader/es_modules_websocket', name="app.mjs") 34 35 message = 'blah' 36 37 _, sock, _ = ws.upgrade() 38 39 ws.frame_write(sock, ws.OP_TEXT, message) 40 frame = ws.frame_read(sock) 41 42 assert message == frame['data'].decode('utf-8'), 'mirror' 43 44 ws.frame_write(sock, ws.OP_TEXT, message) 45 frame = ws.frame_read(sock) 46 47 assert message == frame['data'].decode('utf-8'), 'mirror 2' 48 49 sock.close() 50