@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
95 lines • 7.17 kB
JavaScript
;
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.MemoryStream = void 0;
exports.registerSecrets = registerSecrets;
exports.redactSecrets = redactSecrets;
/**
* Routines for corking stdout and stderr
*/
const stream = __importStar(require("stream"));
/**
* Values that must be scrubbed from any buffered test output
*
* Registered values are process-global because `MemoryStream`s are created per test,
* while credentials are established once per worker process.
*/
const SECRETS = new Set();
/**
* Register values to be replaced with a placeholder in all buffered output
*/
function registerSecrets(...values) {
for (const value of values) {
SECRETS.add(value);
}
}
/**
* Replace every registered secret in the given text with a placeholder
*/
function redactSecrets(text) {
let ret = text;
for (const secret of SECRETS) {
ret = ret.split(secret).join('<REDACTED>');
}
return ret;
}
class MemoryStream extends stream.Writable {
parts = new Array();
_write(chunk, _encoding, callback) {
this.parts.push(chunk);
callback();
}
/**
* The buffered output, with all registered secrets redacted
*/
buffer() {
return Buffer.from(redactSecrets(Buffer.concat(this.parts).toString()));
}
clear() {
this.parts.splice(0, this.parts.length);
}
async flushTo(strm) {
const flushed = strm.write(this.buffer());
if (!flushed) {
return new Promise(ok => strm.once('drain', ok));
}
return;
}
toString() {
return this.buffer().toString();
}
}
exports.MemoryStream = MemoryStream;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ya2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvcmtpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLDBDQUlDO0FBS0Qsc0NBTUM7QUEvQkQ7O0dBRUc7QUFDSCwrQ0FBaUM7QUFFakM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRWxDOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEdBQUcsTUFBcUI7SUFDdEQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQUMsSUFBWTtJQUN4QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDZixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBYSxZQUFhLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDdkMsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFFN0IsTUFBTSxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFFBQXdDO1FBQ3RGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBMkI7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBOUJELG9DQThCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm91dGluZXMgZm9yIGNvcmtpbmcgc3Rkb3V0IGFuZCBzdGRlcnJcbiAqL1xuaW1wb3J0ICogYXMgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5cbi8qKlxuICogVmFsdWVzIHRoYXQgbXVzdCBiZSBzY3J1YmJlZCBmcm9tIGFueSBidWZmZXJlZCB0ZXN0IG91dHB1dFxuICpcbiAqIFJlZ2lzdGVyZWQgdmFsdWVzIGFyZSBwcm9jZXNzLWdsb2JhbCBiZWNhdXNlIGBNZW1vcnlTdHJlYW1gcyBhcmUgY3JlYXRlZCBwZXIgdGVzdCxcbiAqIHdoaWxlIGNyZWRlbnRpYWxzIGFyZSBlc3RhYmxpc2hlZCBvbmNlIHBlciB3b3JrZXIgcHJvY2Vzcy5cbiAqL1xuY29uc3QgU0VDUkVUUyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHZhbHVlcyB0byBiZSByZXBsYWNlZCB3aXRoIGEgcGxhY2Vob2xkZXIgaW4gYWxsIGJ1ZmZlcmVkIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTZWNyZXRzKC4uLnZhbHVlczogQXJyYXk8c3RyaW5nPikge1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIFNFQ1JFVFMuYWRkKHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcGxhY2UgZXZlcnkgcmVnaXN0ZXJlZCBzZWNyZXQgaW4gdGhlIGdpdmVuIHRleHQgd2l0aCBhIHBsYWNlaG9sZGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWRhY3RTZWNyZXRzKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCByZXQgPSB0ZXh0O1xuICBmb3IgKGNvbnN0IHNlY3JldCBvZiBTRUNSRVRTKSB7XG4gICAgcmV0ID0gcmV0LnNwbGl0KHNlY3JldCkuam9pbignPFJFREFDVEVEPicpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlTdHJlYW0gZXh0ZW5kcyBzdHJlYW0uV3JpdGFibGUge1xuICBwcml2YXRlIHBhcnRzID0gbmV3IEFycmF5PEJ1ZmZlcj4oKTtcblxuICBwdWJsaWMgX3dyaXRlKGNodW5rOiBCdWZmZXIsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wYXJ0cy5wdXNoKGNodW5rKTtcbiAgICBjYWxsYmFjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBidWZmZXJlZCBvdXRwdXQsIHdpdGggYWxsIHJlZ2lzdGVyZWQgc2VjcmV0cyByZWRhY3RlZFxuICAgKi9cbiAgcHVibGljIGJ1ZmZlcigpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocmVkYWN0U2VjcmV0cyhCdWZmZXIuY29uY2F0KHRoaXMucGFydHMpLnRvU3RyaW5nKCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnBhcnRzLnNwbGljZSgwLCB0aGlzLnBhcnRzLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmx1c2hUbyhzdHJtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmbHVzaGVkID0gc3RybS53cml0ZSh0aGlzLmJ1ZmZlcigpKTtcbiAgICBpZiAoIWZsdXNoZWQpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShvayA9PiBzdHJtLm9uY2UoJ2RyYWluJywgb2spKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcigpLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==