* Spin up an HTTP server that upgrades to WebSocket via upgradeToWebSocket(). * Returns the server, its port, and a promise that resolves to the * server-side WebSocketConnection once a client connects.
()
| 45 | * server-side WebSocketConnection once a client connects. |
| 46 | */ |
| 47 | function createTestServer(): { |
| 48 | server: http.Server; |
| 49 | port: () => number; |
| 50 | wsPromise: Promise<WebSocketConnection>; |
| 51 | } { |
| 52 | let resolveWs: (ws: WebSocketConnection) => void; |
| 53 | const wsPromise = new Promise<WebSocketConnection>((resolve) => { |
| 54 | resolveWs = resolve; |
| 55 | }); |
| 56 | |
| 57 | const server = http.createServer(); |
| 58 | // Suppress ECONNRESET on any server connection during teardown |
| 59 | server.on("connection", (socket) => { |
| 60 | socket.on("error", () => {}); |
| 61 | }); |
| 62 | server.on("upgrade", (req, socket) => { |
| 63 | socket.on("error", () => {}); |
| 64 | const ws = upgradeToWebSocket(req, socket as net.Socket); |
| 65 | resolveWs(ws); |
| 66 | }); |
| 67 | |
| 68 | server.listen(0); // random available port |
| 69 | |
| 70 | return { |
| 71 | server, |
| 72 | port: () => (server.address() as net.AddressInfo).port, |
| 73 | wsPromise, |
| 74 | }; |
| 75 | } |
| 76 | |
| 77 | /** |
| 78 | * Open a raw TCP connection to the test server and send an HTTP upgrade |
no test coverage detected
searching dependent graphs…