diff options
author | Matt Mastracci <matthew@mastracci.com> | 2024-04-19 18:09:50 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-19 18:09:50 -0600 |
commit | 365e1f48f7059f94d4eeb8f5ba8b3949b686b355 (patch) | |
tree | 94016de6377130ba9acff9c725614c609fb3a38f /tests/unit/serve_test.ts | |
parent | 93a40c1c643873ca3199a8cb2a6f29f0ca5bab68 (diff) |
feat(ext/http): Add `addr` to HttpServer (#23442)
Adds an `addr` field to `HttpServer` to simplify the pattern
`Deno.serve({ onListen({ port } => listenPort = port })`. This becomes:
`const server = Deno.serve({}); port = server.addr.port`.
Changes:
- Refactors `serve` overloads to split TLS out (in preparation for
landing a place for the TLS SNI information)
- Adds an `addr` field to `HttpServer` that matches the `addr` field of
the corresponding `Deno.Listener`s.
Diffstat (limited to 'tests/unit/serve_test.ts')
-rw-r--r-- | tests/unit/serve_test.ts | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts index 9b2870ebd..048529ae9 100644 --- a/tests/unit/serve_test.ts +++ b/tests/unit/serve_test.ts @@ -43,7 +43,10 @@ function onListen( } async function makeServer( - handler: (req: Request) => Response | Promise<Response>, + handler: ( + req: Request, + info: Deno.ServeHandlerInfo, + ) => Response | Promise<Response>, ): Promise< { finished: Promise<void>; @@ -432,7 +435,7 @@ Deno.test(async function httpServerRejectsOnAddrInUse() { Deno.test({ permissions: { net: true } }, async function httpServerBasic() { const ac = new AbortController(); const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers<Deno.NetAddr>(); const server = Deno.serve({ handler: async (request, { remoteAddr }) => { @@ -447,11 +450,13 @@ Deno.test({ permissions: { net: true } }, async function httpServerBasic() { }, port: servePort, signal: ac.signal, - onListen: onListen(listeningDeferred.resolve), + onListen: (addr) => listeningDeferred.resolve(addr), onError: createOnErrorCb(ac), }); - await listeningDeferred.promise; + const addr = await listeningDeferred.promise; + assertEquals(addr.hostname, server.addr.hostname); + assertEquals(addr.port, server.addr.port); const resp = await fetch(`http://127.0.0.1:${servePort}/`, { headers: { "connection": "close" }, }); @@ -472,7 +477,7 @@ Deno.test( async function httpServerOnListener() { const ac = new AbortController(); const deferred = Promise.withResolvers<void>(); - const listeningDeferred = Promise.withResolvers<void>(); + const listeningDeferred = Promise.withResolvers(); const listener = Deno.listen({ port: servePort }); const server = serveHttpOnListener( listener, @@ -3812,7 +3817,7 @@ Deno.test( permissions: { run: true, read: true, write: true }, }, async function httpServerUnixDomainSocket() { - const { promise, resolve } = Promise.withResolvers<{ path: string }>(); + const { promise, resolve } = Promise.withResolvers<Deno.UnixAddr>(); const ac = new AbortController(); const filePath = tmpUnixSocketPath(); const server = Deno.serve( @@ -3830,7 +3835,7 @@ Deno.test( }, ); - assertEquals(await promise, { path: filePath }); + assertEquals((await promise).path, filePath); assertEquals( "hello world!", await curlRequest(["--unix-socket", filePath, "http://localhost"]), |