summaryrefslogtreecommitdiff
path: root/tests/unit
diff options
context:
space:
mode:
authorseb <sebastian.messier@gmail.com>2024-08-20 14:25:41 -0700
committerGitHub <noreply@github.com>2024-08-20 21:25:41 +0000
commita3a54bc747abe8ca4cd7b0bdbb3e5276a062e914 (patch)
treeb19daffbd66872fd00ce54e7a87da6c02d34e3a8 /tests/unit
parent37279e0b0a4300318da472bf0a8bdb894746537f (diff)
fix(ext/net): validate port in Deno.{connect,serve,listen} (#24399)
Co-authored-by: Will Leach <4619280+melbourne2991@users.noreply.github.com> Co-authored-by: Luca Casonato <hello@lcas.dev> Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/serve_test.ts82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts
index 827a094dc..ea5a7d3ef 100644
--- a/tests/unit/serve_test.ts
+++ b/tests/unit/serve_test.ts
@@ -861,6 +861,88 @@ Deno.test(
},
);
+Deno.test({ permissions: { net: true } }, async function validPortString() {
+ const server = Deno.serve({
+ handler: (_request) => new Response(),
+ port: "4501" as unknown as number,
+ });
+ assertEquals(server.addr.transport, "tcp");
+ assertEquals(server.addr.port, 4501);
+ await server.shutdown();
+});
+
+Deno.test({ permissions: { net: true } }, function invalidPortFloat() {
+ assertThrows(
+ () =>
+ Deno.serve({
+ handler: (_request) => new Response(),
+ port: 45.1,
+ }),
+ TypeError,
+ `Invalid port: 45.1`,
+ );
+});
+
+Deno.test({ permissions: { net: true } }, function invalidPortNaN() {
+ assertThrows(
+ () =>
+ Deno.serve({
+ handler: (_request) => new Response(),
+ port: NaN,
+ }),
+ TypeError,
+ `Invalid port: NaN`,
+ );
+});
+
+Deno.test({ permissions: { net: true } }, function invalidPortString() {
+ assertThrows(
+ () =>
+ Deno.serve({
+ handler: (_request) => new Response(),
+ port: "some-non-number-string" as unknown as number,
+ }),
+ TypeError,
+ `Invalid port: 'some-non-number-string'`,
+ );
+});
+
+Deno.test({ permissions: { net: true } }, function invalidPortTooSmall() {
+ assertThrows(
+ () =>
+ Deno.serve({
+ handler: (_request) => new Response(),
+ port: -111,
+ }),
+ RangeError,
+ `Invalid port (out of range): -111`,
+ );
+});
+
+Deno.test({ permissions: { net: true } }, function invalidPortTooLarge() {
+ assertThrows(
+ () =>
+ Deno.serve({
+ handler: (_request) => new Response(),
+ port: 100000,
+ }),
+ RangeError,
+ `Invalid port (out of range): 100000`,
+ );
+});
+
+Deno.test({ permissions: { net: true } }, function invalidPortType() {
+ assertThrows(
+ () =>
+ Deno.serve({
+ handler: (_request) => new Response(),
+ port: true as unknown as number,
+ }),
+ TypeError,
+ `Invalid port (expected number): true`,
+ );
+});
+
function createUrlTest(
name: string,
methodAndPath: string,