UNPKG

@aws-cdk/integ-tests-alpha

Version:

CDK Integration Testing Constructs

42 lines 6.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AwsApiCallHandler = void 0; /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable no-console */ const aws_custom_resource_sdk_adapter_1 = require("@aws-cdk/aws-custom-resource-sdk-adapter"); const base_1 = require("./base"); const utils_1 = require("./utils"); class AwsApiCallHandler extends base_1.CustomResourceHandler { async processEvent(request) { const apiCall = new aws_custom_resource_sdk_adapter_1.ApiCall(request.service, request.api); const parameters = request.parameters ? (0, utils_1.decodeParameters)(request.parameters) : {}; console.log(`SDK request to ${apiCall.service}.${apiCall.action} with parameters ${JSON.stringify(parameters)}`); const response = await apiCall.invoke({ parameters }); console.log(`SDK response received ${JSON.stringify(response)}`); delete response.$metadata; let resp; if (request.outputPaths || request.flattenResponse === 'true') { // Flatten and explode JSON fields const flattened = (0, aws_custom_resource_sdk_adapter_1.flatten)((0, utils_1.deepParseJson)({ apiCallResponse: response })); resp = request.outputPaths ? filterKeys(flattened, request.outputPaths) : flattened; } else { // Otherwise just return the response as-is, without exploding JSON fields resp = { apiCallResponse: response }; } console.log(`Returning result ${JSON.stringify(resp)}`); return resp; } } exports.AwsApiCallHandler = AwsApiCallHandler; function filterKeys(object, searchStrings) { return Object.entries(object).reduce((filteredObject, [key, value]) => { for (const searchString of searchStrings) { if (key.startsWith(`apiCallResponse.${searchString}`)) { filteredObject[key] = value; } } return filteredObject; }, {}); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFzRDtBQUN0RCwrQkFBK0I7QUFDL0IsOEZBQTRFO0FBQzVFLGlDQUErQztBQUUvQyxtQ0FBMEQ7QUFFMUQsTUFBYSxpQkFBa0IsU0FBUSw0QkFBdUY7SUFDbEgsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUEwQjtRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLHlDQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBZ0IsRUFBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqSCxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBNEIsQ0FBQztRQUVqRixPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFFMUIsSUFBSSxJQUFtRCxDQUFDO1FBQ3hELElBQUksT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzlELGtDQUFrQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHlDQUFPLEVBQUMsSUFBQSxxQkFBYSxFQUFDLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RixDQUFDO2FBQU0sQ0FBQztZQUNOLDBFQUEwRTtZQUMxRSxJQUFJLEdBQUcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDO0tBQ2I7Q0FDRjtBQXZCRCw4Q0F1QkM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxNQUFjLEVBQUUsYUFBdUI7SUFDekQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQXlDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUMvRixLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQXBpQ2FsbCwgZmxhdHRlbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jdXN0b20tcmVzb3VyY2Utc2RrLWFkYXB0ZXInO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2VIYW5kbGVyIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB0eXBlIHsgQXdzQXBpQ2FsbFJlcXVlc3QsIEF3c0FwaUNhbGxSZXN1bHQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlY29kZVBhcmFtZXRlcnMsIGRlZXBQYXJzZUpzb24gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEF3c0FwaUNhbGxIYW5kbGVyIGV4dGVuZHMgQ3VzdG9tUmVzb3VyY2VIYW5kbGVyPEF3c0FwaUNhbGxSZXF1ZXN0LCBBd3NBcGlDYWxsUmVzdWx0IHwgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+IHtcbiAgcHJvdGVjdGVkIGFzeW5jIHByb2Nlc3NFdmVudChyZXF1ZXN0OiBBd3NBcGlDYWxsUmVxdWVzdCk6IFByb21pc2U8QXdzQXBpQ2FsbFJlc3VsdCB8IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgYXBpQ2FsbCA9IG5ldyBBcGlDYWxsKHJlcXVlc3Quc2VydmljZSwgcmVxdWVzdC5hcGkpO1xuXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHJlcXVlc3QucGFyYW1ldGVycyA/IGRlY29kZVBhcmFtZXRlcnMocmVxdWVzdC5wYXJhbWV0ZXJzKSA6IHt9O1xuICAgIGNvbnNvbGUubG9nKGBTREsgcmVxdWVzdCB0byAke2FwaUNhbGwuc2VydmljZX0uJHthcGlDYWxsLmFjdGlvbn0gd2l0aCBwYXJhbWV0ZXJzICR7SlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycyl9YCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlDYWxsLmludm9rZSh7IHBhcmFtZXRlcnMgfSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBjb25zb2xlLmxvZyhgU0RLIHJlc3BvbnNlIHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWApO1xuICAgIGRlbGV0ZSByZXNwb25zZS4kbWV0YWRhdGE7XG5cbiAgICBsZXQgcmVzcDogQXdzQXBpQ2FsbFJlc3VsdCB8IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIGlmIChyZXF1ZXN0Lm91dHB1dFBhdGhzIHx8IHJlcXVlc3QuZmxhdHRlblJlc3BvbnNlID09PSAndHJ1ZScpIHtcbiAgICAgIC8vIEZsYXR0ZW4gYW5kIGV4cGxvZGUgSlNPTiBmaWVsZHNcbiAgICAgIGNvbnN0IGZsYXR0ZW5lZCA9IGZsYXR0ZW4oZGVlcFBhcnNlSnNvbih7IGFwaUNhbGxSZXNwb25zZTogcmVzcG9uc2UgfSkpO1xuICAgICAgcmVzcCA9IHJlcXVlc3Qub3V0cHV0UGF0aHMgPyBmaWx0ZXJLZXlzKGZsYXR0ZW5lZCwgcmVxdWVzdC5vdXRwdXRQYXRocykgOiBmbGF0dGVuZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgcmVzcG9uc2UgYXMtaXMsIHdpdGhvdXQgZXhwbG9kaW5nIEpTT04gZmllbGRzXG4gICAgICByZXNwID0geyBhcGlDYWxsUmVzcG9uc2U6IHJlc3BvbnNlIH07XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGBSZXR1cm5pbmcgcmVzdWx0ICR7SlNPTi5zdHJpbmdpZnkocmVzcCl9YCk7XG4gICAgcmV0dXJuIHJlc3A7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmlsdGVyS2V5cyhvYmplY3Q6IG9iamVjdCwgc2VhcmNoU3RyaW5nczogc3RyaW5nW10pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdCkucmVkdWNlKChmaWx0ZXJlZE9iamVjdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgZm9yIChjb25zdCBzZWFyY2hTdHJpbmcgb2Ygc2VhcmNoU3RyaW5ncykge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKGBhcGlDYWxsUmVzcG9uc2UuJHtzZWFyY2hTdHJpbmd9YCkpIHtcbiAgICAgICAgZmlsdGVyZWRPYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRPYmplY3Q7XG4gIH0sIHt9KTtcbn1cbiJdfQ==