summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorMarvin Hagemeister <marvin@deno.com>2024-01-19 13:09:37 +0100
committerGitHub <noreply@github.com>2024-01-19 13:09:37 +0100
commit59f419bf410e861c49cdfa6c1b0e657cf8bcc8e3 (patch)
tree6312e6bf75bf2d01a2d70e9bc8d00aca4029ed94 /cli/tests
parentc62615bfe5a070c2517f3af3208d4308c72eb054 (diff)
fix(node/http): remoteAddress and remotePort not being set (#21998)
<!-- Before submitting a PR, please read https://deno.com/manual/contributing 1. Give the PR a descriptive title. Examples of good title: - fix(std/http): Fix race condition in server - docs(console): Update docstrings - feat(doc): Handle nested reexports Examples of bad title: - fix #7123 - update docs - fix bugs 2. Ensure there is a related issue and it is referenced in the PR text. 3. Ensure there are tests that cover the changes. 4. Ensure `cargo test` passes. 5. Ensure `./tools/format.js` passes without changing files. 6. Ensure `./tools/lint.js` passes. 7. Open as a draft PR if your work is still in progress. The CI won't run all steps, but you can add '[ci]' to a commit message to force it to. 8. If you would like to run the benchmarks on the CI, add the 'ci-bench' label. --> Ultimately, it came down to using incorrect property names in the `FakeSocket` constructor. The values are passed under `remoteAddress`, not `hostname` and `remotePort` instead of `port`. Fixes https://github.com/denoland/deno/issues/21980
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/unit_node/http_test.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/cli/tests/unit_node/http_test.ts b/cli/tests/unit_node/http_test.ts
index 3573416f8..7b2012471 100644
--- a/cli/tests/unit_node/http_test.ts
+++ b/cli/tests/unit_node/http_test.ts
@@ -184,6 +184,30 @@ Deno.test("[node/http] server can respond with 101, 204, 205, 304 status", async
}
});
+Deno.test("[node/http] IncomingRequest socket has remoteAddress + remotePort", async () => {
+ const { promise, resolve } = Promise.withResolvers<void>();
+
+ let remoteAddress: string | undefined;
+ let remotePort: number | undefined;
+ const server = http.createServer((req, res) => {
+ remoteAddress = req.socket.remoteAddress;
+ remotePort = req.socket.remotePort;
+ res.end();
+ });
+ server.listen(async () => {
+ // deno-lint-ignore no-explicit-any
+ const port = (server.address() as any).port;
+ const res = await fetch(
+ `http://127.0.0.1:${port}/`,
+ );
+ await res.arrayBuffer();
+ assertEquals(remoteAddress, "127.0.0.1");
+ assertEquals(typeof remotePort, "number");
+ server.close(() => resolve());
+ });
+ await promise;
+});
+
Deno.test("[node/http] request default protocol", async () => {
const deferred1 = Promise.withResolvers<void>();
const deferred2 = Promise.withResolvers<void>();