21 lines
711 B
JavaScript
21 lines
711 B
JavaScript
const { test } = require('node:test');
|
|||
|
|
const assert = require('node:assert');
|
||
|
|
const WebSocket = require('ws');
|
||
|
|
const { startServer } = require('../server');
|
||
|
|
|
||
|
|
test('stop() resolves even while an overlay WebSocket client is connected', async () => {
|
||
|
|
const handle = await startServer({ port: 9300 });
|
||
|
|
const client = new WebSocket(`ws://127.0.0.1:${handle.port}`);
|
||
|
|
client.on('error', () => {});
|
||
|
|
await new Promise((resolve) => client.on('open', resolve));
|
||
|
|
|
||
|
|
let timer;
|
||
|
|
const result = await Promise.race([
|
||
|
|
handle.stop().then(() => 'stopped'),
|
||
|
|
new Promise((resolve) => { timer = setTimeout(() => resolve('hung'), 2000); }),
|
||
|
|
]);
|
||
|
|
clearTimeout(timer);
|
||
|
|
|
||
|
|
assert.strictEqual(result, 'stopped');
|
||
|
|
});
|