@aws-cdk/integ-tests-alpha
Version:
CDK Integration Testing Constructs
97 lines • 11.6 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.260.0-alpha.0" };
apiCallResource;
provider;
providerLogLevel;
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;
}
this.providerLogLevel = props.providerLogLevel;
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', {
providerLogLevel: props.providerLogLevel,
});
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,
providerLogLevel: this.providerLogLevel,
});
this.stateMachineArn = waiter.stateMachineArn;
this.provider.addPolicyStatementFromSdkCall('states', 'StartExecution');
return this;
}
}
exports.HttpApiCall = HttpApiCall;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaHR0cC1jYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQThGO0FBSTlGLG1EQUE4QztBQUc5QywyQ0FBcUU7QUFFckUsaUVBQTREO0FBTTVEOzs7R0FHRztBQUNILE1BQWEsV0FBWSxTQUFRLDJCQUFXOztJQUN2QixlQUFlLENBQWlCO0lBQ25DLFFBQVEsQ0FBcUI7SUFDNUIsZ0JBQWdCLENBQXVCO0lBRXhELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7OytDQU5SLFdBQVc7Ozs7UUFRcEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUUvQyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSw4QkFBa0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQzNELGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN6RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3hDLFVBQVUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSztnQkFDakIsUUFBUSxFQUFFLGtCQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUQsZUFBZSxFQUFFLGtCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckUsZUFBZSxFQUFFLGtCQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7YUFDNUI7WUFDRCxZQUFZLEVBQUUsR0FBRyw4QkFBa0IsR0FBRyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUM5RCxDQUFDLENBQUM7UUFFSCx3SEFBd0g7UUFDeEgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxxQkFBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbkIsS0FBSyxDQUFDLElBQWdCO2dCQUNwQixJQUFJLElBQUksWUFBWSxXQUFXLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUU5RCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFOzRCQUN0QyxLQUFLLEVBQUUsTUFBTTt5QkFDZCxDQUFDLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkUsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztTQUNGLEVBQUUsRUFBRSxRQUFRLEVBQUUsNEJBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQzNDO0lBRU0sWUFBWSxDQUFDLEtBQWEsRUFBRSxTQUF5Qjs7Ozs7Ozs7OztRQUMxRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ00saUJBQWlCLENBQUMsT0FBK0M7Ozs7Ozs7Ozs7UUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3JELEdBQUcsT0FBTztZQUNWLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUM7S0FDYjs7QUExREgsa0NBMkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNwZWN0UHJpb3JpdHksIEFzcGVjdHMsIENmbk91dHB1dCwgQ3VzdG9tUmVzb3VyY2UsIExhenksIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBBcHBsaWNhdGlvbkxvZ0xldmVsIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJQXBpQ2FsbCB9IGZyb20gJy4vYXBpLWNhbGwtYmFzZSc7XG5pbXBvcnQgeyBBcGlDYWxsQmFzZSB9IGZyb20gJy4vYXBpLWNhbGwtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IEV4cGVjdGVkUmVzdWx0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBIdHRwUmVxdWVzdFBhcmFtZXRlcnMsIFByb3ZpZGVyT3B0aW9ucyB9IGZyb20gJy4vcHJvdmlkZXJzJztcbmltcG9ydCB7IEFzc2VydGlvbnNQcm92aWRlciwgSFRUUF9SRVNPVVJDRV9UWVBFIH0gZnJvbSAnLi9wcm92aWRlcnMnO1xuaW1wb3J0IHR5cGUgeyBXYWl0ZXJTdGF0ZU1hY2hpbmVPcHRpb25zIH0gZnJvbSAnLi93YWl0ZXItc3RhdGUtbWFjaGluZSc7XG5pbXBvcnQgeyBXYWl0ZXJTdGF0ZU1hY2hpbmUgfSBmcm9tICcuL3dhaXRlci1zdGF0ZS1tYWNoaW5lJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBIdHRwQXBpQ2FsbCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBDYWxsUHJvcHMgZXh0ZW5kcyBIdHRwUmVxdWVzdFBhcmFtZXRlcnMsIFByb3ZpZGVyT3B0aW9ucyB7fVxuLyoqXG4gKiBDb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGEgY3VzdG9tIHJlc291cmNlIHRoYXQgd2lsbCBwZXJmb3JtXG4gKiBhbiBIVFRQIEFQSSBDYWxsXG4gKi9cbmV4cG9ydCBjbGFzcyBIdHRwQXBpQ2FsbCBleHRlbmRzIEFwaUNhbGxCYXNlIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwaUNhbGxSZXNvdXJjZTogQ3VzdG9tUmVzb3VyY2U7XG4gIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogQXNzZXJ0aW9uc1Byb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyTG9nTGV2ZWw/OiBBcHBsaWNhdGlvbkxvZ0xldmVsO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBIdHRwQ2FsbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvdmlkZXJMb2dMZXZlbCA9IHByb3BzLnByb3ZpZGVyTG9nTGV2ZWw7XG5cbiAgICBsZXQgbmFtZSA9ICcnO1xuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLnVybCkpIHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocHJvcHMudXJsKTtcbiAgICAgIG5hbWUgPSBgJHt1cmwuaG9zdG5hbWV9JHt1cmwucGF0aG5hbWV9YC5yZXBsYWNlKC9cXC98XFwufDovZywgJycpO1xuICAgIH1cbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IEFzc2VydGlvbnNQcm92aWRlcih0aGlzLCAnSHR0cFByb3ZpZGVyJywge1xuICAgICAgcHJvdmlkZXJMb2dMZXZlbDogcHJvcHMucHJvdmlkZXJMb2dMZXZlbCxcbiAgICB9KTtcbiAgICB0aGlzLmFwaUNhbGxSZXNvdXJjZSA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHBhcmFtZXRlcnM6IHByb3BzLFxuICAgICAgICBleHBlY3RlZDogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLmV4cGVjdGVkUmVzdWx0IH0pLFxuICAgICAgICBzdGF0ZU1hY2hpbmVBcm46IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gdGhpcy5zdGF0ZU1hY2hpbmVBcm4gfSksXG4gICAgICAgIGZsYXR0ZW5SZXNwb25zZTogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLmZsYXR0ZW5SZXNwb25zZSB9KSxcbiAgICAgICAgc2FsdDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogYCR7SFRUUF9SRVNPVVJDRV9UWVBFfSR7bmFtZX1gLnN1YnN0cmluZygwLCA2MCksXG4gICAgfSk7XG5cbiAgICAvLyBOZWVkZWQgc28gdGhhdCBhbGwgdGhlIHBvbGljaWVzIHNldCB1cCBieSB0aGUgcHJvdmlkZXIgc2hvdWxkIGJlIGF2YWlsYWJsZSBiZWZvcmUgdGhlIGN1c3RvbSByZXNvdXJjZSBpcyBwcm92aXNpb25lZC5cbiAgICB0aGlzLmFwaUNhbGxSZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5wcm92aWRlcik7XG4gICAgQXNwZWN0cy5vZih0aGlzKS5hZGQoe1xuICAgICAgdmlzaXQobm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEh0dHBBcGlDYWxsKSB7XG4gICAgICAgICAgaWYgKG5vZGUuZXhwZWN0ZWRSZXN1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG5vZGUuYXBpQ2FsbFJlc291cmNlLmdldEF0dFN0cmluZygnYXNzZXJ0aW9uJyk7XG5cbiAgICAgICAgICAgIG5ldyBDZm5PdXRwdXQobm9kZSwgJ0Fzc2VydGlvblJlc3VsdHMnLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQsXG4gICAgICAgICAgICB9KS5vdmVycmlkZUxvZ2ljYWxJZChgQXNzZXJ0aW9uUmVzdWx0cyR7aWQucmVwbGFjZSgvW1xcV19dKy9nLCAnJyl9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sIHsgcHJpb3JpdHk6IEFzcGVjdFByaW9yaXR5Lk1VVEFUSU5HIH0pO1xuICB9XG5cbiAgcHVibGljIGFzc2VydEF0UGF0aChfcGF0aDogc3RyaW5nLCBfZXhwZWN0ZWQ6IEV4cGVjdGVkUmVzdWx0KTogSUFwaUNhbGwge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHB1YmxpYyB3YWl0Rm9yQXNzZXJ0aW9ucyhvcHRpb25zPzogV2FpdGVyU3RhdGVNYWNoaW5lT3B0aW9ucyB8IHVuZGVmaW5lZCk6IElBcGlDYWxsIHtcbiAgICBjb25zdCB3YWl0ZXIgPSBuZXcgV2FpdGVyU3RhdGVNYWNoaW5lKHRoaXMsICdXYWl0Rm9yJywge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHByb3ZpZGVyTG9nTGV2ZWw6IHRoaXMucHJvdmlkZXJMb2dMZXZlbCxcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlTWFjaGluZUFybiA9IHdhaXRlci5zdGF0ZU1hY2hpbmVBcm47XG4gICAgdGhpcy5wcm92aWRlci5hZGRQb2xpY3lTdGF0ZW1lbnRGcm9tU2RrQ2FsbCgnc3RhdGVzJywgJ1N0YXJ0RXhlY3V0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==