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