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