summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/unit_node/http_test.ts50
1 files changed, 50 insertions, 0 deletions
diff --git a/cli/tests/unit_node/http_test.ts b/cli/tests/unit_node/http_test.ts
index 0d15bf889..4732781f8 100644
--- a/cli/tests/unit_node/http_test.ts
+++ b/cli/tests/unit_node/http_test.ts
@@ -649,3 +649,53 @@ Deno.test("[node/http] HTTPS server", async () => {
await Promise.all([promise, promise2]);
client.close();
});
+
+Deno.test(
+ "[node/http] client upgrade",
+ { permissions: { net: true } },
+ async () => {
+ const promise = deferred();
+ const server = http.createServer((_req, res) => {
+ res.writeHead(200, { "Content-Type": "text/plain" });
+ res.end("okay");
+ });
+ // @ts-ignore it's a socket for real
+ let serverSocket;
+ server.on("upgrade", (_req, socket, _head) => {
+ socket.write(
+ "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" +
+ "Upgrade: WebSocket\r\n" +
+ "Connection: Upgrade\r\n" +
+ "\r\n",
+ );
+ serverSocket = socket;
+ });
+
+ // Now that server is running
+ server.listen(1337, "127.0.0.1", () => {
+ // make a request
+ const options = {
+ port: 1337,
+ host: "127.0.0.1",
+ headers: {
+ "Connection": "Upgrade",
+ "Upgrade": "websocket",
+ },
+ };
+
+ const req = http.request(options);
+ req.end();
+
+ req.on("upgrade", (_res, socket, _upgradeHead) => {
+ socket.end();
+ // @ts-ignore it's a socket for real
+ serverSocket!.end();
+ server.close(() => {
+ promise.resolve();
+ });
+ });
+ });
+
+ await promise;
+ },
+);