Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions test/cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC6DCCAdACCQD/lk51johyKjANBgkqhkiG9w0BAQUFADA2MQswCQYDVQQGEwJ1
czELMAkGA1UECAwCY2ExCzAJBgNVBAcMAmxhMQ0wCwYDVQQKDAR0ZXN0MB4XDTIx
MTIyMjA3NDk1NFoXDTQ5MDUwODA3NDk1NFowNjELMAkGA1UEBhMCdXMxCzAJBgNV
BAgMAmNhMQswCQYDVQQHDAJsYTENMAsGA1UECgwEdGVzdDCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMGOnd6gl6vTB6FayQeSgaB9VPJfG7ldBLFGev9x
h1DJSy+j10qKocYmZ8H0Gc3VgkEqvt1jJe96c27wsKjZQjGDuzQJIur1tWOpy50z
fw+dqz71ZAC0ToAenM1sQrwDy3ZgShjpv9PUm6o7sGLG+H4A2AAu4jLlCt4ilrU4
zxGsLc68l+tEwdGmweFEOVjdMy5Q9v+WjleWB71G2zaQ3+EsczUeNHhi+mQXe5CE
elVhFodFJmSf9a4TBFFXSpfvtpbNt6Sp5yiYuxkZzzsdxEBfwdEXIuedPsVbf8Ui
xyM3KpRkTCh39mVJV9IzNpCvYkxwXBA2Vhf9SOf99SIFJ50CAwEAATANBgkqhkiG
9w0BAQUFAAOCAQEAOjvGvD9xEo9rwEfh7ShDCAqSJbvwLTKeIdarWYN7DeUH5MoH
V8QdoXu+bzOKzn2KFRTszKfgpYOvjaPcYl5F3pOlkwweM22Z4y2Jw1xS4nHouazk
3/JgaDjH0adqnfpUrYwCQOLf+X/oACdFQ9uOMk/fhxrmCwppRjh/ZReq1ulwSEsA
gZouTdmo5DL1ovO91pnpDoY29m3jhYzENyKCS8FgkvdIKHZf9nk2EXJayaJtXMKY
WLni24RT7dLqrATdmaaqfwp3hBNGePNeRTGI37x2hDmtkJaBOzch7Oq8pYiDrG5M
mbh2at3090tcnyZo6pbR7IQwviYBUvVUdKHfhg==
-----END CERTIFICATE-----
42 changes: 41 additions & 1 deletion test.js → test/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import fs from "node:fs";
import http from "node:http";
import https from "node:https";
import path from "node:path";
import url from "node:url";

import { test } from "uvu";
import * as assert from "uvu/assert";

import HttpRecorder from "./index.js";
import HttpRecorder from "../index.js";

test.before.each(() => {
HttpRecorder.disable();
Expand Down Expand Up @@ -197,6 +201,42 @@ test("request.end(callback)", () => {
});
});

test("https", () => {
return new Promise((resolve, reject) => {
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
const server = https.createServer(
{
key: fs.readFileSync(path.resolve(__dirname, "key.pem")),
cert: fs.readFileSync(path.resolve(__dirname, "cert.pem")),
},
function (req, res) {
res.writeHead(200);
res.end("Hello, World!");
}
);
const { port } = server.listen().address();

HttpRecorder.enable();
HttpRecorder.on("record", async ({ responseBody }) => {
try {
assert.equal(Buffer.concat(responseBody).toString(), "Hello, World!");
server.close();
resolve();
} catch (error) {
reject(error);
}
});

const emitWarning = process.emitWarning;
process.emitWarning = () => {};
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
const request = https.request(`https://localhost:${port}`, () => {
process.emitWarning = emitWarning;
});
request.end();
});
});

test("Calling .enable() multiple times is a no-op", () => {
HttpRecorder.enable();
HttpRecorder.enable();
Expand Down
27 changes: 27 additions & 0 deletions test/key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAwY6d3qCXq9MHoVrJB5KBoH1U8l8buV0EsUZ6/3GHUMlLL6PX
SoqhxiZnwfQZzdWCQSq+3WMl73pzbvCwqNlCMYO7NAki6vW1Y6nLnTN/D52rPvVk
ALROgB6czWxCvAPLdmBKGOm/09SbqjuwYsb4fgDYAC7iMuUK3iKWtTjPEawtzryX
60TB0abB4UQ5WN0zLlD2/5aOV5YHvUbbNpDf4SxzNR40eGL6ZBd7kIR6VWEWh0Um
ZJ/1rhMEUVdKl++2ls23pKnnKJi7GRnPOx3EQF/B0Rci550+xVt/xSLHIzcqlGRM
KHf2ZUlX0jM2kK9iTHBcEDZWF/1I5/31IgUnnQIDAQABAoIBAQCFjMTKzl24VcRH
Bd/9VI4SUUfib9MuQ8swEiRdylSGXk19UnwC18KleOxQe/+t8SqNklPdZ0LOiNvK
6VHLPxSYG394ePFZ0y1T1d1C2zxJZw24RBK7Fa2wYu7oIlGtbqTdSbT2mZodK+44
ODUNAqKENkrTXYX/fd/Qw2bfJZJiawkqVZx35liMYpuOE4QFFiFMBzfYy0GpOCCv
Zo/xVcpuaT2i+tliz/aM0Osr7w1O/8anQNmVBI3BgSeknpog+ICw0rUH7dqIda0r
lOvuxmhlXfYkQj0AOBBjJTYJqPCJKFo4JEK3ih0jiaZ4TvfuxFemnrmxM7y58dkJ
eONobsGVAoGBAPSHZtSBYVQ0hCMJo0Pj30mG5DqGK61mGgaHWUpQMek4ABQGOKGC
brAn/K3G6AILU4xnTTnUN5HPJOwHfzfSsSjmsxIfOU3QwjtXMqCk1vuUV2iGY52H
AVXuJWSB2KRMFE/j4kdEK1jQszbjC5qiDYIpFl0K223mVG29Oyxd2U47AoGBAMqj
FXrfPNXLletrWYA5aq/+DTaT85vVKXOfj70dkgwNy0vtf/qzdbqOlQJxyR6VyLvP
ALkEs8LCmepmIG6q8C4Jq3s7rc6HlCleoBWA25RvpZKT3zPRTC1wGovLQg/aCQ8f
OscTqEZAJ4pAlbzcKGdNf4GlNju3rVtji2T3Z8wHAoGAXA0owbCe0hMe9w2mv2Tl
5oj4G6vsf08jVvfWvinoUBI7vU4GPY6bWocDEOwC5NocrosowC9KaAJhtNSxqHMR
LAOEv7qvWMLQi4Qs09qZ74UNTpTgpSlwcEfBHc/fnSHit5xiz08zPjD6dhwMfz6n
9SrAd3Ah4IJHoDQPNYlyx4cCgYBHmap8WScQ0DfwEGV2llMpTpZyo4KfnIliDo5m
n208jx83e/sNpZ3CxqDGVVhgU0Kzgehad9vgxIxIM7/f+syVJ9uM1sCKSoPCvmnI
T1jHMVAK4+8pSxoksAjhPnfgTAWJb1qAf2SlNgQCqOF/8zbfkZWtRKhOH4/Ey/60
NWtavwKBgQCoOt5ftns8JcE7g+ZwRBG6K/2EgiSI8f1v0iG5FY/w5UNGD+fL39wA
X7J7FI3FSLmGRjKm08rR/d81XQkW0KZUPNgp3jqmO2dr1QFveRLE8Kscxxpw4P4X
MBXgfZDaOMOujRsVJZnauqsX9ACY1F7/+FamXpL1JKTbyUV4/lAy0Q==
-----END RSA PRIVATE KEY-----