UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

82 lines 8.24 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.startProxyServer = startProxyServer; exports.awsActionsFromRequests = awsActionsFromRequests; const fs_1 = require("fs"); const querystring = __importStar(require("node:querystring")); const os = __importStar(require("os")); const path = __importStar(require("path")); const mockttp = __importStar(require("mockttp")); async function startProxyServer(certDirRoot) { const certDir = await fs_1.promises.mkdtemp(path.join(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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLDRDQXFDQztBQWFELHdEQU1DO0FBL0RELDJCQUFvQztBQUNwQyw4REFBZ0Q7QUFDaEQsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixpREFBbUM7QUFHNUIsS0FBSyxVQUFVLGdCQUFnQixDQUFDLFdBQW9CO0lBQ3pELE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUU5Qyw2QkFBNkI7SUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzVELE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakMsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVuQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQzlCLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtLQUNoRCxDQUFDLENBQUM7SUFFSCxvREFBb0Q7SUFDcEQsa0RBQWtEO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTTtTQUMxQixhQUFhLEVBQUU7U0FDZixlQUFlLEVBQUUsQ0FBQztJQUVyQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFFdEQsd0JBQXdCO0lBQ3hCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV6QixPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87UUFDUCxNQUFNO1FBQ04sR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1FBQ2pELEtBQUssQ0FBQyxJQUFJO1lBQ1IsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsTUFBTSxhQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBYUQsU0FBZ0Isc0JBQXNCLENBQUMsUUFBNEI7SUFDakUsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUTthQUN4QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDN0MsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNyQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBZ0IsQ0FBQzthQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHF1ZXJ5c3RyaW5nIGZyb20gJ25vZGU6cXVlcnlzdHJpbmcnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIG1vY2t0dHAgZnJvbSAnbW9ja3R0cCc7XG5pbXBvcnQgdHlwZSB7IENvbXBsZXRlZFJlcXVlc3QgfSBmcm9tICdtb2NrdHRwJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UHJveHlTZXJ2ZXIoY2VydERpclJvb3Q/OiBzdHJpbmcpOiBQcm9taXNlPFByb3h5U2VydmVyPiB7XG4gIGNvbnN0IGNlcnREaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihjZXJ0RGlyUm9vdCA/PyBvcy50bXBkaXIoKSwgJ2Nkay0nKSk7XG4gIGNvbnN0IGNlcnRQYXRoID0gcGF0aC5qb2luKGNlcnREaXIsICdjZXJ0LnBlbScpO1xuICBjb25zdCBrZXlQYXRoID0gcGF0aC5qb2luKGNlcnREaXIsICdrZXkucGVtJyk7XG5cbiAgLy8gU2V0IHVwIGtleSBhbmQgY2VydGlmaWNhdGVcbiAgY29uc3QgeyBrZXksIGNlcnQgfSA9IGF3YWl0IG1vY2t0dHAuZ2VuZXJhdGVDQUNlcnRpZmljYXRlKCk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShrZXlQYXRoLCBrZXkpO1xuICBhd2FpdCBmcy53cml0ZUZpbGUoY2VydFBhdGgsIGNlcnQpO1xuXG4gIGNvbnN0IHNlcnZlciA9IG1vY2t0dHAuZ2V0TG9jYWwoe1xuICAgIGh0dHBzOiB7IGtleVBhdGg6IGtleVBhdGgsIGNlcnRQYXRoOiBjZXJ0UGF0aCB9LFxuICB9KTtcblxuICAvLyBXZSBkb24ndCBuZWVkIHRvIG1vZGlmeSBhbnkgcmVxdWVzdCwgc28gdGhlIHByb3h5XG4gIC8vIHBhc3NlcyB0aHJvdWdoIGFsbCByZXF1ZXN0cyB0byB0aGUgdGFyZ2V0IGhvc3QuXG4gIGNvbnN0IGVuZHBvaW50ID0gYXdhaXQgc2VydmVyXG4gICAgLmZvckFueVJlcXVlc3QoKVxuICAgIC50aGVuUGFzc1Rocm91Z2goKTtcblxuICBjb25zdCBwb3J0ID0gOTAwMCArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwKTtcblxuICAvLyBzZXJ2ZXIuZW5hYmxlRGVidWcoKTtcbiAgYXdhaXQgc2VydmVyLnN0YXJ0KHBvcnQpO1xuXG4gIHJldHVybiB7XG4gICAgY2VydFBhdGgsXG4gICAga2V5UGF0aCxcbiAgICBzZXJ2ZXIsXG4gICAgdXJsOiBzZXJ2ZXIudXJsLFxuICAgIHBvcnQ6IHNlcnZlci5wb3J0LFxuICAgIGdldFNlZW5SZXF1ZXN0czogKCkgPT4gZW5kcG9pbnQuZ2V0U2VlblJlcXVlc3RzKCksXG4gICAgYXN5bmMgc3RvcCgpIHtcbiAgICAgIGF3YWl0IHNlcnZlci5zdG9wKCk7XG4gICAgICBhd2FpdCBmcy5ybShjZXJ0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm94eVNlcnZlciB7XG4gIHJlYWRvbmx5IGNlcnRQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtleVBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmVyOiBtb2NrdHRwLk1vY2t0dHA7XG4gIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG5cbiAgZ2V0U2VlblJlcXVlc3RzKCk6IFByb21pc2U8Q29tcGxldGVkUmVxdWVzdFtdPjtcbiAgc3RvcCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXdzQWN0aW9uc0Zyb21SZXF1ZXN0cyhyZXF1ZXN0czogQ29tcGxldGVkUmVxdWVzdFtdKTogc3RyaW5nW10ge1xuICByZXR1cm4gWy4uLm5ldyBTZXQocmVxdWVzdHNcbiAgICAubWFwKHJlcSA9PiByZXEuYm9keS5idWZmZXIudG9TdHJpbmcoJ3V0Zi04JykpXG4gICAgLm1hcChib2R5ID0+IHF1ZXJ5c3RyaW5nLmRlY29kZShib2R5KSlcbiAgICAubWFwKHggPT4geC5BY3Rpb24gYXMgc3RyaW5nKVxuICAgIC5maWx0ZXIoYWN0aW9uID0+IGFjdGlvbiAhPSBudWxsKSldO1xufVxuIl19