diff options
author | Satya Rohith <me@satyarohith.com> | 2024-03-07 19:28:46 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-07 19:28:46 +0530 |
commit | 588dd5e66961999cfafd4504444e685629a92173 (patch) | |
tree | 1e64ad6f88e4d77f6d12d2e09f8b038563844b24 /tests/unit_node/http2_test.ts | |
parent | 0fb67ce43ea828db17fefc8df0ef8ec30b1a25c3 (diff) |
fix(ext/node): http2.createServer (#22708)
Diffstat (limited to 'tests/unit_node/http2_test.ts')
-rw-r--r-- | tests/unit_node/http2_test.ts | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/tests/unit_node/http2_test.ts b/tests/unit_node/http2_test.ts index fd9cdd0ec..872e6641e 100644 --- a/tests/unit_node/http2_test.ts +++ b/tests/unit_node/http2_test.ts @@ -3,6 +3,7 @@ import * as http2 from "node:http2"; import * as net from "node:net"; import { assert, assertEquals } from "@std/assert/mod.ts"; +import { curlRequest } from "../unit/test_util.ts"; for (const url of ["http://127.0.0.1:4246", "https://127.0.0.1:4247"]) { Deno.test(`[node/http2 client] ${url}`, { @@ -108,35 +109,6 @@ Deno.test(`[node/http2 client createConnection]`, { assertEquals(receivedData, "hello world\n"); }); -// TODO(bartlomieju): reenable sanitizers -Deno.test("[node/http2 server]", { sanitizeOps: false }, async () => { - const server = http2.createServer(); - server.listen(0); - const port = (<net.AddressInfo> server.address()).port; - const sessionPromise = new Promise<http2.Http2Session>((resolve) => - server.on("session", resolve) - ); - - const responsePromise = fetch(`http://localhost:${port}/path`, { - method: "POST", - body: "body", - }); - - const session = await sessionPromise; - const stream = await new Promise<http2.ServerHttp2Stream>((resolve) => - session.on("stream", resolve) - ); - await new Promise((resolve) => stream.on("headers", resolve)); - await new Promise((resolve) => stream.on("data", resolve)); - await new Promise((resolve) => stream.on("end", resolve)); - stream.respond(); - stream.end(); - const resp = await responsePromise; - await resp.text(); - - await new Promise((resolve) => server.close(resolve)); -}); - Deno.test("[node/http2 client GET https://www.example.com]", async () => { const clientSession = http2.connect("https://www.example.com"); const req = clientSession.request({ @@ -165,3 +137,30 @@ Deno.test("[node/http2 client GET https://www.example.com]", async () => { assertEquals(status, 200); assert(chunk.length > 0); }); + +Deno.test("[node/http2.createServer()]", { + // TODO(satyarohith): enable the test on windows. + ignore: Deno.build.os === "windows", +}, async () => { + const server = http2.createServer((_req, res) => { + res.setHeader("Content-Type", "text/html"); + res.setHeader("X-Foo", "bar"); + res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" }); + res.write("Hello, World!"); + res.end(); + }); + server.listen(0); + const port = (<net.AddressInfo> server.address()).port; + const endpoint = `http://localhost:${port}`; + + const response = await curlRequest([ + endpoint, + "--http2-prior-knowledge", + ]); + assertEquals(response, "Hello, World!"); + server.close(); + // Wait to avoid leaking the timer from here + // https://github.com/denoland/deno/blob/749b6e45e58ac87188027f79fe403d130f86bd73/ext/node/polyfills/net.ts#L2396-L2402 + // Issue: https://github.com/denoland/deno/issues/22764 + await new Promise<void>((resolve) => server.on("close", resolve)); +}); |