diff options
author | seb <sebastian.messier@gmail.com> | 2024-08-20 14:25:41 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-20 21:25:41 +0000 |
commit | a3a54bc747abe8ca4cd7b0bdbb3e5276a062e914 (patch) | |
tree | b19daffbd66872fd00ce54e7a87da6c02d34e3a8 /tests/unit | |
parent | 37279e0b0a4300318da472bf0a8bdb894746537f (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.ts | 82 |
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, |