@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
49 lines • 6.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.startProxyServer = startProxyServer;
exports.awsActionsFromRequests = awsActionsFromRequests;
const fs_1 = require("fs");
const querystring = require("node:querystring");
const os = require("os");
const path = require("path");
const mockttp = require("mockttp");
async function startProxyServer(certDirRoot) {
const certDir = await fs_1.promises.mkdtemp(path.join(certDirRoot !== null && certDirRoot !== void 0 ? certDirRoot : os.tmpdir(), 'cdk-'));
const certPath = path.join(certDir, 'cert.pem');
const keyPath = path.join(certDir, 'key.pem');
// Set up key and certificate
const { key, cert } = await mockttp.generateCACertificate();
await fs_1.promises.writeFile(keyPath, key);
await fs_1.promises.writeFile(certPath, cert);
const server = mockttp.getLocal({
https: { keyPath: keyPath, certPath: certPath },
});
// We don't need to modify any request, so the proxy
// passes through all requests to the target host.
const endpoint = await server
.forAnyRequest()
.thenPassThrough();
const port = 9000 + Math.floor(Math.random() * 10000);
// server.enableDebug();
await server.start(port);
return {
certPath,
keyPath,
server,
url: server.url,
port: server.port,
getSeenRequests: () => endpoint.getSeenRequests(),
async stop() {
await server.stop();
await fs_1.promises.rm(certDir, { recursive: true, force: true });
},
};
}
function awsActionsFromRequests(requests) {
return [...new Set(requests
.map(req => req.body.buffer.toString('utf-8'))
.map(body => querystring.decode(body))
.map(x => x.Action)
.filter(action => action != null))];
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLDRDQXFDQztBQWFELHdEQU1DO0FBL0RELDJCQUFvQztBQUNwQyxnREFBZ0Q7QUFDaEQseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFHNUIsS0FBSyxVQUFVLGdCQUFnQixDQUFDLFdBQW9CO0lBQ3pELE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsYUFBWCxXQUFXLGNBQVgsV0FBVyxHQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLDZCQUE2QjtJQUM3QixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDNUQsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqQyxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRW5DLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDOUIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO0tBQ2hELENBQUMsQ0FBQztJQUVILG9EQUFvRDtJQUNwRCxrREFBa0Q7SUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNO1NBQzFCLGFBQWEsRUFBRTtTQUNmLGVBQWUsRUFBRSxDQUFDO0lBRXJCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUV0RCx3QkFBd0I7SUFDeEIsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpCLE9BQU87UUFDTCxRQUFRO1FBQ1IsT0FBTztRQUNQLE1BQU07UUFDTixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7UUFDZixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7UUFDakIsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7UUFDakQsS0FBSyxDQUFDLElBQUk7WUFDUixNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixNQUFNLGFBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFhRCxTQUFnQixzQkFBc0IsQ0FBQyxRQUE0QjtJQUNqRSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRO2FBQ3hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFnQixDQUFDO2FBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcXVlcnlzdHJpbmcgZnJvbSAnbm9kZTpxdWVyeXN0cmluZyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdvcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgbW9ja3R0cCBmcm9tICdtb2NrdHRwJztcbmltcG9ydCB7IENvbXBsZXRlZFJlcXVlc3QgfSBmcm9tICdtb2NrdHRwJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UHJveHlTZXJ2ZXIoY2VydERpclJvb3Q/OiBzdHJpbmcpOiBQcm9taXNlPFByb3h5U2VydmVyPiB7XG4gIGNvbnN0IGNlcnREaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihjZXJ0RGlyUm9vdCA/PyBvcy50bXBkaXIoKSwgJ2Nkay0nKSk7XG4gIGNvbnN0IGNlcnRQYXRoID0gcGF0aC5qb2luKGNlcnREaXIsICdjZXJ0LnBlbScpO1xuICBjb25zdCBrZXlQYXRoID0gcGF0aC5qb2luKGNlcnREaXIsICdrZXkucGVtJyk7XG5cbiAgLy8gU2V0IHVwIGtleSBhbmQgY2VydGlmaWNhdGVcbiAgY29uc3QgeyBrZXksIGNlcnQgfSA9IGF3YWl0IG1vY2t0dHAuZ2VuZXJhdGVDQUNlcnRpZmljYXRlKCk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShrZXlQYXRoLCBrZXkpO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoY2VydFBhdGgsIGNlcnQpO1xuXG4gIGNvbnN0IHNlcnZlciA9IG1vY2t0dHAuZ2V0TG9jYWwoe1xuICAgIGh0dHBzOiB7IGtleVBhdGg6IGtleVBhdGgsIGNlcnRQYXRoOiBjZXJ0UGF0aCB9LFxuICB9KTtcblxuICAvLyBXZSBkb24ndCBuZWVkIHRvIG1vZGlmeSBhbnkgcmVxdWVzdCwgc28gdGhlIHByb3h5XG4gIC8vIHBhc3NlcyB0aHJvdWdoIGFsbCByZXF1ZXN0cyB0byB0aGUgdGFyZ2V0IGhvc3QuXG4gIGNvbnN0IGVuZHBvaW50ID0gYXdhaXQgc2VydmVyXG4gICAgLmZvckFueVJlcXVlc3QoKVxuICAgIC50aGVuUGFzc1Rocm91Z2goKTtcblxuICBjb25zdCBwb3J0ID0gOTAwMCArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKTtcblxuICAvLyBzZXJ2ZXIuZW5hYmxlRGVidWcoKTtcbiAgYXdhaXQgc2VydmVyLnN0YXJ0KHBvcnQpO1xuXG4gIHJldHVybiB7XG4gICAgY2VydFBhdGgsXG4gICAga2V5UGF0aCxcbiAgICBzZXJ2ZXIsXG4gICAgdXJsOiBzZXJ2ZXIudXJsLFxuICAgIHBvcnQ6IHNlcnZlci5wb3J0LFxuICAgIGdldFNlZW5SZXF1ZXN0czogKCkgPT4gZW5kcG9pbnQuZ2V0U2VlblJlcXVlc3RzKCksXG4gICAgYXN5bmMgc3RvcCgpIHtcbiAgICAgIGF3YWl0IHNlcnZlci5zdG9wKCk7XG4gICAgICBhd2FpdCBmcy5ybShjZXJ0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm94eVNlcnZlciB7XG4gIHJlYWRvbmx5IGNlcnRQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtleVBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmVyOiBtb2NrdHRwLk1vY2t0dHA7XG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG5cbiAgZ2V0U2VlblJlcXVlc3RzKCk6IFByb21pc2U8Q29tcGxldGVkUmVxdWVzdFtdPjtcbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXdzQWN0aW9uc0Zyb21SZXF1ZXN0cyhyZXF1ZXN0czogQ29tcGxldGVkUmVxdWVzdFtdKTogc3RyaW5nW10ge1xuICByZXR1cm4gWy4uLm5ldyBTZXQocmVxdWVzdHNcbiAgICAubWFwKHJlcSA9PiByZXEuYm9keS5idWZmZXIudG9TdHJpbmcoJ3V0Zi04JykpXG4gICAgLm1hcChib2R5ID0+IHF1ZXJ5c3RyaW5nLmRlY29kZShib2R5KSlcbiAgICAubWFwKHggPT4geC5BY3Rpb24gYXMgc3RyaW5nKVxuICAgIC5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbiAhPSBudWxsKSldO1xufVxuIl19