xref: /unit/test/test_node_es_modules.py (revision 2616:ab2896c980ab)
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