@aws-cdk/integ-tests-alpha
Version:
CDK Integration Testing Constructs
92 lines • 10.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HttpApiCall = void 0;
const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const api_call_base_1 = require("./api-call-base");
const providers_1 = require("./providers");
const waiter_state_machine_1 = require("./waiter-state-machine");
/**
* Construct that creates a custom resource that will perform
* an HTTP API Call
*/
class HttpApiCall extends api_call_base_1.ApiCallBase {
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/integ-tests-alpha.HttpApiCall", version: "2.257.0-alpha.0" };
apiCallResource;
provider;
constructor(scope, id, props) {
super(scope, id);
try {
jsiiDeprecationWarnings._aws_cdk_integ_tests_alpha_HttpCallProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, HttpApiCall);
}
throw error;
}
let name = '';
if (!aws_cdk_lib_1.Token.isUnresolved(props.url)) {
const url = new URL(props.url);
name = `${url.hostname}${url.pathname}`.replace(/\/|\.|:/g, '');
}
this.provider = new providers_1.AssertionsProvider(this, 'HttpProvider');
this.apiCallResource = new aws_cdk_lib_1.CustomResource(this, 'Default', {
serviceToken: this.provider.serviceToken,
properties: {
parameters: props,
expected: aws_cdk_lib_1.Lazy.any({ produce: () => this.expectedResult }),
stateMachineArn: aws_cdk_lib_1.Lazy.string({ produce: () => this.stateMachineArn }),
flattenResponse: aws_cdk_lib_1.Lazy.string({ produce: () => this.flattenResponse }),
salt: Date.now().toString(),
},
resourceType: `${providers_1.HTTP_RESOURCE_TYPE}${name}`.substring(0, 60),
});
// Needed so that all the policies set up by the provider should be available before the custom resource is provisioned.
this.apiCallResource.node.addDependency(this.provider);
aws_cdk_lib_1.Aspects.of(this).add({
visit(node) {
if (node instanceof HttpApiCall) {
if (node.expectedResult) {
const result = node.apiCallResource.getAttString('assertion');
new aws_cdk_lib_1.CfnOutput(node, 'AssertionResults', {
value: result,
}).overrideLogicalId(`AssertionResults${id.replace(/[\W_]+/g, '')}`);
}
}
},
}, { priority: aws_cdk_lib_1.AspectPriority.MUTATING });
}
assertAtPath(_path, _expected) {
try {
jsiiDeprecationWarnings._aws_cdk_integ_tests_alpha_ExpectedResult(_expected);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, this.assertAtPath);
}
throw error;
}
return this;
}
waitForAssertions(options) {
try {
jsiiDeprecationWarnings._aws_cdk_integ_tests_alpha_WaiterStateMachineOptions(options);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, this.waitForAssertions);
}
throw error;
}
const waiter = new waiter_state_machine_1.WaiterStateMachine(this, 'WaitFor', {
...options,
});
this.stateMachineArn = waiter.stateMachineArn;
this.provider.addPolicyStatementFromSdkCall('states', 'StartExecution');
return this;
}
}
exports.HttpApiCall = HttpApiCall;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cC1jYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQThGO0FBRzlGLG1EQUE4QztBQUc5QywyQ0FBcUU7QUFFckUsaUVBQTREO0FBTTVEOzs7R0FHRztBQUNILE1BQWEsV0FBWSxTQUFRLDJCQUFXOztJQUN2QixlQUFlLENBQWlCO0lBQ25DLFFBQVEsQ0FBcUI7SUFFN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBTFIsV0FBVzs7OztRQU9wQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw4QkFBa0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN6RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3hDLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSztnQkFDakIsUUFBUSxFQUFFLGtCQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUQsZUFBZSxFQUFFLGtCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckUsZUFBZSxFQUFFLGtCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7YUFDNUI7WUFDRCxZQUFZLEVBQUUsR0FBRyw4QkFBa0IsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUM5RCxDQUFDLENBQUM7UUFFSCx3SEFBd0g7UUFDeEgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxxQkFBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbkIsS0FBSyxDQUFDLElBQWdCO2dCQUNwQixJQUFJLElBQUksWUFBWSxXQUFXLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUU5RCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFOzRCQUN0QyxLQUFLLEVBQUUsTUFBTTt5QkFDZCxDQUFDLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkUsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztTQUNGLEVBQUUsRUFBRSxRQUFRLEVBQUUsNEJBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzNDO0lBRU0sWUFBWSxDQUFDLEtBQWEsRUFBRSxTQUF5Qjs7Ozs7Ozs7OztRQUMxRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ00saUJBQWlCLENBQUMsT0FBK0M7Ozs7Ozs7Ozs7UUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3JELEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDO0tBQ2I7O0FBcERILGtDQXFEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzcGVjdFByaW9yaXR5LCBBc3BlY3RzLCBDZm5PdXRwdXQsIEN1c3RvbVJlc291cmNlLCBMYXp5LCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IElBcGlDYWxsIH0gZnJvbSAnLi9hcGktY2FsbC1iYXNlJztcbmltcG9ydCB7IEFwaUNhbGxCYXNlIH0gZnJvbSAnLi9hcGktY2FsbC1iYXNlJztcbmltcG9ydCB0eXBlIHsgRXhwZWN0ZWRSZXN1bHQgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IEh0dHBSZXF1ZXN0UGFyYW1ldGVycyB9IGZyb20gJy4vcHJvdmlkZXJzJztcbmltcG9ydCB7IEFzc2VydGlvbnNQcm92aWRlciwgSFRUUF9SRVNPVVJDRV9UWVBFIH0gZnJvbSAnLi9wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBXYWl0ZXJTdGF0ZU1hY2hpbmVPcHRpb25zIH0gZnJvbSAnLi93YWl0ZXItc3RhdGUtbWFjaGluZSc7XG5pbXBvcnQgeyBXYWl0ZXJTdGF0ZU1hY2hpbmUgfSBmcm9tICcuL3dhaXRlci1zdGF0ZS1tYWNoaW5lJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBIdHRwQXBpQ2FsbCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDYWxsUHJvcHMgZXh0ZW5kcyBIdHRwUmVxdWVzdFBhcmFtZXRlcnMgeyB9XG4vKipcbiAqIENvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBjdXN0b20gcmVzb3VyY2UgdGhhdCB3aWxsIHBlcmZvcm1cbiAqIGFuIEhUVFAgQVBJIENhbGxcbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBBcGlDYWxsIGV4dGVuZHMgQXBpQ2FsbEJhc2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpQ2FsbFJlc291cmNlOiBDdXN0b21SZXNvdXJjZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyOiBBc3NlcnRpb25zUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEh0dHBDYWxsUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IG5hbWUgPSAnJztcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy51cmwpKSB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHByb3BzLnVybCk7XG4gICAgICBuYW1lID0gYCR7dXJsLmhvc3RuYW1lfSR7dXJsLnBhdGhuYW1lfWAucmVwbGFjZSgvXFwvfFxcLnw6L2csICcnKTtcbiAgICB9XG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBBc3NlcnRpb25zUHJvdmlkZXIodGhpcywgJ0h0dHBQcm92aWRlcicpO1xuICAgIHRoaXMuYXBpQ2FsbFJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgcGFyYW1ldGVyczogcHJvcHMsXG4gICAgICAgIGV4cGVjdGVkOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuZXhwZWN0ZWRSZXN1bHQgfSksXG4gICAgICAgIHN0YXRlTWFjaGluZUFybjogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnN0YXRlTWFjaGluZUFybiB9KSxcbiAgICAgICAgZmxhdHRlblJlc3BvbnNlOiBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHRoaXMuZmxhdHRlblJlc3BvbnNlIH0pLFxuICAgICAgICBzYWx0OiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgcmVzb3VyY2VUeXBlOiBgJHtIVFRQX1JFU09VUkNFX1RZUEV9JHtuYW1lfWAuc3Vic3RyaW5nKDAsIDYwKSxcbiAgICB9KTtcblxuICAgIC8vIE5lZWRlZCBzbyB0aGF0IGFsbCB0aGUgcG9saWNpZXMgc2V0IHVwIGJ5IHRoZSBwcm92aWRlciBzaG91bGQgYmUgYXZhaWxhYmxlIGJlZm9yZSB0aGUgY3VzdG9tIHJlc291cmNlIGlzIHByb3Zpc2lvbmVkLlxuICAgIHRoaXMuYXBpQ2FsbFJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLnByb3ZpZGVyKTtcbiAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZCh7XG4gICAgICB2aXNpdChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgSHR0cEFwaUNhbGwpIHtcbiAgICAgICAgICBpZiAobm9kZS5leHBlY3RlZFJlc3VsdCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gbm9kZS5hcGlDYWxsUmVzb3VyY2UuZ2V0QXR0U3RyaW5nKCdhc3NlcnRpb24nKTtcblxuICAgICAgICAgICAgbmV3IENmbk91dHB1dChub2RlLCAnQXNzZXJ0aW9uUmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICAgICAgICAgIH0pLm92ZXJyaWRlTG9naWNhbElkKGBBc3NlcnRpb25SZXN1bHRzJHtpZC5yZXBsYWNlKC9bXFxXX10rL2csICcnKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSwgeyBwcmlvcml0eTogQXNwZWN0UHJpb3JpdHkuTVVUQVRJTkcgfSk7XG4gIH1cblxuICBwdWJsaWMgYXNzZXJ0QXRQYXRoKF9wYXRoOiBzdHJpbmcsIF9leHBlY3RlZDogRXhwZWN0ZWRSZXN1bHQpOiBJQXBpQ2FsbCB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgcHVibGljIHdhaXRGb3JBc3NlcnRpb25zKG9wdGlvbnM/OiBXYWl0ZXJTdGF0ZU1hY2hpbmVPcHRpb25zIHwgdW5kZWZpbmVkKTogSUFwaUNhbGwge1xuICAgIGNvbnN0IHdhaXRlciA9IG5ldyBXYWl0ZXJTdGF0ZU1hY2hpbmUodGhpcywgJ1dhaXRGb3InLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVNYWNoaW5lQXJuID0gd2FpdGVyLnN0YXRlTWFjaGluZUFybjtcbiAgICB0aGlzLnByb3ZpZGVyLmFkZFBvbGljeVN0YXRlbWVudEZyb21TZGtDYWxsKCdzdGF0ZXMnLCAnU3RhcnRFeGVjdXRpb24nKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19