mirror of
https://github.com/denoland/deno.git
synced 2025-01-07 06:46:59 -05:00
fix(ext/node): polyfill response._implicitHeader method (#18738)
This commit is contained in:
parent
772e4c033f
commit
51ffe30f2b
2 changed files with 35 additions and 1 deletions
29
cli/tests/unit_node/http_test.ts
Normal file
29
cli/tests/unit_node/http_test.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
import http from "node:http";
|
||||
import { assertEquals } from "../../../test_util/std/testing/asserts.ts";
|
||||
import { assertSpyCalls, spy } from "../../../test_util/std/testing/mock.ts";
|
||||
import { deferred } from "../../../test_util/std/async/deferred.ts";
|
||||
|
||||
Deno.test("[node/http] ServerResponse _implicitHeader", async () => {
|
||||
const d = deferred<void>();
|
||||
const server = http.createServer((_req, res) => {
|
||||
const writeHeadSpy = spy(res, "writeHead");
|
||||
// deno-lint-ignore no-explicit-any
|
||||
(res as any)._implicitHeader();
|
||||
assertSpyCalls(writeHeadSpy, 1);
|
||||
writeHeadSpy.restore();
|
||||
res.end("Hello World");
|
||||
});
|
||||
|
||||
server.listen(async () => {
|
||||
const { port } = server.address() as { port: number };
|
||||
const res = await fetch(`http://localhost:${port}`);
|
||||
assertEquals(await res.text(), "Hello World");
|
||||
server.close(() => {
|
||||
d.resolve();
|
||||
});
|
||||
});
|
||||
|
||||
await d;
|
||||
});
|
|
@ -485,7 +485,7 @@ export class ServerResponse extends NodeWritable {
|
|||
return this.#headers.has(name);
|
||||
}
|
||||
|
||||
writeHead(status: number, headers: Record<string, string>) {
|
||||
writeHead(status: number, headers: Record<string, string> = {}) {
|
||||
this.statusCode = status;
|
||||
for (const k in headers) {
|
||||
if (Object.hasOwn(headers, k)) {
|
||||
|
@ -540,6 +540,11 @@ export class ServerResponse extends NodeWritable {
|
|||
// @ts-expect-error The signature for cb is stricter than the one implemented here
|
||||
return super.end(chunk, encoding, cb);
|
||||
}
|
||||
|
||||
// Undocumented API used by `npm:compression`.
|
||||
_implicitHeader() {
|
||||
this.writeHead(this.statusCode);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(@AaronO): optimize
|
||||
|
|
Loading…
Reference in a new issue