diff options
Diffstat (limited to 'test/js')
-rw-r--r-- | test/js/node/http/fixtures/cert.key | 28 | ||||
-rw-r--r-- | test/js/node/http/fixtures/cert.pem | 23 | ||||
-rw-r--r-- | test/js/node/http/node-http.test.ts | 57 |
3 files changed, 105 insertions, 3 deletions
diff --git a/test/js/node/http/fixtures/cert.key b/test/js/node/http/fixtures/cert.key new file mode 100644 index 000000000..bf41b7883 --- /dev/null +++ b/test/js/node/http/fixtures/cert.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCIzOJskt6VkEJY +XKSJv/Gdil3XYkjk3NVc/+m+kzqnkTRbPtT9w+IGWgmJhuf9DJPLCwHFAEFarVwV +x16Q0PbU4ajXaLRHEYGhrH10oTMjQnJ24xVm26mxRXPQa5vaLpWJqNyIdNLIQLe+ +UXUOzSGGsFTRMAjvYrkzjBe4ZUnaZV+aFY/ug0jfzeA1dJjzKZs6+yTJRbsuWUEb +8MsDmT4v+kBZDKdaDn7AFDWRVqx/38BnqsRzkM0CxpnyT2kRzw5zQajIE13gdTJo +1EHvYSUkkxrY5m30Rl9BuBBZBjhMzOHq0fYVVooHO+sf4XHPgvFTTxJum85u7J1J +oEUjrLKtAgMBAAECggEACInVNhaiqu4infZGVMy0rXMV8VwSlapM7O2SLtFsr0nK +XUmaLK6dvGzBPKK9dxdiYCFzPlMKQTkhzsAvYFWSmm3tRmikG+11TFyCRhXLpc8/ +ark4vD9Io6ZkmKUmyKLwtXNjNGcqQtJ7RXc7Ga3nAkueN6JKZHqieZusXVeBGQ70 +YH1LKyVNBeJggbj+g9rqaksPyNJQ8EWiNTJkTRQPazZ0o1VX/fzDFyr/a5npFtHl +4BHfafv9o1Xyr70Kie8CYYRJNViOCN+ylFs7Gd3XRaAkSkgMT/7DzrHdEM2zrrHK +yNg2gyDVX9UeEJG2X5UtU0o9BVW7WBshz/2hqIUHoQKBgQC8zsRFvC7u/rGr5vRR +mhZZG+Wvg03/xBSuIgOrzm+Qie6mAzOdVmfSL/pNV9EFitXt1yd2ROo31AbS7Evy +Bm/QVKr2mBlmLgov3B7O/e6ABteooOL7769qV/v+yo8VdEg0biHmsfGIIXDe3Lwl +OT0XwF9r/SeZLbw1zfkSsUVG/QKBgQC5fANM3Dc9LEek+6PHv5+eC1cKkyioEjUl +/y1VUD00aABI1TUcdLF3BtFN2t/S6HW0hrP3KwbcUfqC25k+GDLh1nM6ZK/gI3Yn +IGtCHxtE3S6jKhE9QcK/H+PzGVKWge9SezeYRP0GHJYDrTVTA8Kt9HgoZPPeReJl ++Ss9c8ThcQKBgECX6HQHFnNzNSufXtSQB7dCoQizvjqTRZPxVRoxDOABIGExVTYt +umUhPtu5AGyJ+/hblEeU+iBRbGg6qRzK8PPwE3E7xey8MYYAI5YjL7YjISKysBUL +AhM6uJ6Jg/wOBSnSx8xZ8kzlS+0izUda1rjKeprCSArSp8IsjlrDxPStAoGAEcPr ++P+altRX5Fhpvmb/Hb8OTif8G+TqjEIdkG9H/W38oP0ywg/3M2RGxcMx7txu8aR5 +NjI7zPxZFxF7YvQkY3cLwEsGgVxEI8k6HLIoBXd90Qjlb82NnoqqZY1GWL4HMwo0 +L/Rjm6M/Rwje852Hluu0WoIYzXA6F/Q+jPs6nzECgYAxx4IbDiGXuenkwSF1SUyj +NwJXhx4HDh7U6EO/FiPZE5BHE3BoTrFu3o1lzverNk7G3m+j+m1IguEAalHlukYl +rip9iUISlKYqbYZdLBoLwHAfHhszdrjqn8/v6oqbB5yR3HXjPFUWJo0WJ2pqJp56 +ZshgmQQ/5Khoj6x0/dMPSg== +-----END PRIVATE KEY----- diff --git a/test/js/node/http/fixtures/cert.pem b/test/js/node/http/fixtures/cert.pem new file mode 100644 index 000000000..8ae1c1ea4 --- /dev/null +++ b/test/js/node/http/fixtures/cert.pem @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIUN7coIsdMcLo9amZfkwogu0YkeLEwDQYJKoZIhvcNAQEL +BQAwfjELMAkGA1UEBhMCU0UxDjAMBgNVBAgMBVN0YXRlMREwDwYDVQQHDAhMb2Nh +dGlvbjEaMBgGA1UECgwRT3JnYW5pemF0aW9uIE5hbWUxHDAaBgNVBAsME09yZ2Fu +aXphdGlvbmFsIFVuaXQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0yMzA5MjExNDE2 +MjNaFw0yNDA5MjAxNDE2MjNaMH4xCzAJBgNVBAYTAlNFMQ4wDAYDVQQIDAVTdGF0 +ZTERMA8GA1UEBwwITG9jYXRpb24xGjAYBgNVBAoMEU9yZ2FuaXphdGlvbiBOYW1l +MRwwGgYDVQQLDBNPcmdhbml6YXRpb25hbCBVbml0MRIwEAYDVQQDDAlsb2NhbGhv +c3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCIzOJskt6VkEJYXKSJ +v/Gdil3XYkjk3NVc/+m+kzqnkTRbPtT9w+IGWgmJhuf9DJPLCwHFAEFarVwVx16Q +0PbU4ajXaLRHEYGhrH10oTMjQnJ24xVm26mxRXPQa5vaLpWJqNyIdNLIQLe+UXUO +zSGGsFTRMAjvYrkzjBe4ZUnaZV+aFY/ug0jfzeA1dJjzKZs6+yTJRbsuWUEb8MsD +mT4v+kBZDKdaDn7AFDWRVqx/38BnqsRzkM0CxpnyT2kRzw5zQajIE13gdTJo1EHv +YSUkkxrY5m30Rl9BuBBZBjhMzOHq0fYVVooHO+sf4XHPgvFTTxJum85u7J1JoEUj +rLKtAgMBAAGjXDBaMA4GA1UdDwEB/wQEAwIDiDATBgNVHSUEDDAKBggrBgEFBQcD +ATAUBgNVHREEDTALgglsb2NhbGhvc3QwHQYDVR0OBBYEFNzx4Rfs9m8XR5ML0WsI +sorKmB4PMA0GCSqGSIb3DQEBCwUAA4IBAQB87iQy8R0fiOky9WTcyzVeMaavS3MX +iTe1BRn1OCyDq+UiwwoNz7zdzZJFEmRtFBwPNFOe4HzLu6E+7yLFR552eYRHlqIi +/fiLb5JiZfPtokUHeqwELWBsoXtU8vKxViPiLZ09jkWOPZWo7b/xXd6QYykBfV91 +usUXLzyTD2orMagpqNksLDGS3p3ggHEJBZtRZA8R7kPEw98xZHznOQpr26iv8kYz +ZWdLFoFdwgFBSfxePKax5rfo+FbwdrcTX0MhbORyiu2XsBAghf8s2vKDkHg2UQE8 +haonxFYMFaASfaZ/5vWKYDTCJkJ67m/BtkpRafFEO+ad1i1S61OjfxH4 +-----END CERTIFICATE----- diff --git a/test/js/node/http/node-http.test.ts b/test/js/node/http/node-http.test.ts index 326699665..206e6dc8c 100644 --- a/test/js/node/http/node-http.test.ts +++ b/test/js/node/http/node-http.test.ts @@ -10,19 +10,22 @@ import { validateHeaderValue, ServerResponse, } from "node:http"; +import { createServer as createHttpsServer } from "node:https"; import { createTest } from "node-harness"; import url from "node:url"; import { tmpdir } from "node:os"; import { spawnSync } from "node:child_process"; +import nodefs from "node:fs"; +import { join as joinPath } from "node:path"; const { describe, expect, it, beforeAll, afterAll, createDoneDotAll } = createTest(import.meta.path); -function listen(server: Server): Promise<URL> { +function listen(server: Server, protocol: string = "http"): Promise<URL> { return new Promise((resolve, reject) => { server.listen({ port: 0 }, (err, hostname, port) => { if (err) { reject(err); } else { - resolve(new URL(`http://${hostname}:${port}`)); + resolve(new URL(`${protocol}://${hostname}:${port}`)); } }); setTimeout(() => reject("Timed out"), 5000); @@ -47,7 +50,22 @@ describe("node:http", () => { server.close(); } }); - + it("is not marked encrypted (#5867)", async () => { + try { + var server = createServer((req, res) => { + expect(req.connection.encrypted).toBe(undefined); + res.writeHead(200, { "Content-Type": "text/plain" }); + res.end("Hello World"); + }); + const url = await listen(server); + const res = await fetch(new URL("", url)); + expect(await res.text()).toBe("Hello World"); + } catch (e) { + throw e; + } finally { + server.close(); + } + }); it("request & response body streaming (large)", async () => { try { const bodyBlob = new Blob(["hello world", "hello world".repeat(9000)]); @@ -943,3 +961,36 @@ describe("node:http", () => { }); }); }); +describe("node https server", async () => { + const httpsOptions = { + key: nodefs.readFileSync(joinPath(import.meta.dir, "fixtures", "cert.key")), + cert: nodefs.readFileSync(joinPath(import.meta.dir, "fixtures", "cert.pem")), + }; + const createServer = onRequest => { + return new Promise(resolve => { + const server = createHttpsServer(httpsOptions, (req, res) => { + onRequest(req, res); + }); + listen(server, "https").then(url => { + resolve({ + server, + done: () => server.close(), + url, + }); + }); + }); + }; + it("is marked encrypted (#5867)", async () => { + const { server, url, done } = await createServer(async (req, res) => { + expect(req.connection.encrypted).toBe(true); + res.end(); + }); + try { + await fetch(url); + } catch (e) { + throw e; + } finally { + done(); + } + }); +}); |