@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
45 lines • 8.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const client_ssm_1 = require("@aws-sdk/client-ssm");
const lib_1 = require("../../../lib");
/**
* Regression test for https://github.com/aws/aws-cdk-cli/issues/641 (the "mixed" case).
*
* A single resource has BOTH a template-visible change (ReceiveMessageWaitTimeSeconds) AND a change
* that only the change set knows about (QueueName, resolved at deploy time from an SSM parameter).
* The change-set diff must surface both - in particular it must not let the visible change hide the
* (replacing) hidden change.
*/
(0, lib_1.integTest)('cdk diff --method=change-set surfaces change-set-only changes alongside template changes on the same resource', (0, lib_1.withDefaultFixture)(async (fixture) => {
const parameterName = `/cdk-integ/${fixture.randomString}/queue-name-mixed`;
const queueNameV1 = `cdktest-${fixture.randomString}-m1`;
const queueNameV2 = `cdktest-${fixture.randomString}-m2`;
const stackName = fixture.fullStackName('ssm-resolve-queue');
// GIVEN - deployed with an initial SSM value and an initial receive-wait-time
await fixture.aws.ssm.send(new client_ssm_1.PutParameterCommand({
Name: parameterName,
Type: 'String',
Value: queueNameV1,
}));
fixture.aws.addCleanup(() => fixture.aws.ssm.send(new client_ssm_1.DeleteParameterCommand({ Name: parameterName })));
await fixture.cdkDeploy('ssm-resolve-queue', {
modEnv: { SSM_PARAMETER_NAME: parameterName, SSM_RESOLVE_QUEUE_WAIT_TIME: '10' },
});
// WHEN - the SSM value changes out-of-band (queue name -> replacement, only in the change set)
await fixture.aws.ssm.send(new client_ssm_1.PutParameterCommand({
Name: parameterName,
Type: 'String',
Value: queueNameV2,
Overwrite: true,
}));
// ...and the template also changes the receive-wait-time (a normal, template-visible update)
const diff = await fixture.cdk(['diff', '--method=change-set', stackName], {
modEnv: { SSM_PARAMETER_NAME: parameterName, SSM_RESOLVE_QUEUE_WAIT_TIME: '20' },
});
// THEN - both the template-visible change and the change-set-only change are reported
expect(diff).not.toContain('There were no differences');
expect(diff).toContain('AWS::SQS::Queue');
expect(diff).toContain('ReceiveMessageWaitTimeSeconds'); // template-detected update
expect(diff).toContain('QueueName'); // change-set-only replacement
}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNkay1kaWZmLS0tbWV0aG9kLWNoYW5nZS1zZXQtc3VyZmFjZXMtY2hhbmdlLXNldC1vbmx5LWNoYW5nZXMtYWxvbmdzaWRlLXRlbXBsYXRlLWNoYW5nZXMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWNkay1kaWZmLS0tbWV0aG9kLWNoYW5nZS1zZXQtc3VyZmFjZXMtY2hhbmdlLXNldC1vbmx5LWNoYW5nZXMtYWxvbmdzaWRlLXRlbXBsYXRlLWNoYW5nZXMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0RBQWtGO0FBQ2xGLHNDQUE2RDtBQUU3RDs7Ozs7OztHQU9HO0FBQ0gsSUFBQSxlQUFTLEVBQ1AsK0dBQStHLEVBQy9HLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLE1BQU0sYUFBYSxHQUFHLGNBQWMsT0FBTyxDQUFDLFlBQVksbUJBQW1CLENBQUM7SUFDNUUsTUFBTSxXQUFXLEdBQUcsV0FBVyxPQUFPLENBQUMsWUFBWSxLQUFLLENBQUM7SUFDekQsTUFBTSxXQUFXLEdBQUcsV0FBVyxPQUFPLENBQUMsWUFBWSxLQUFLLENBQUM7SUFDekQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTdELDhFQUE4RTtJQUM5RSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLGdDQUFtQixDQUFDO1FBQ2pELElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLFdBQVc7S0FDbkIsQ0FBQyxDQUFDLENBQUM7SUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxtQ0FBc0IsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4RyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUU7UUFDM0MsTUFBTSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBRTtLQUNqRixDQUFDLENBQUM7SUFFSCwrRkFBK0Y7SUFDL0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQ0FBbUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxXQUFXO1FBQ2xCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUosNkZBQTZGO0lBQzdGLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxTQUFTLENBQUMsRUFBRTtRQUN6RSxNQUFNLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFO0tBQ2pGLENBQUMsQ0FBQztJQUVILHNGQUFzRjtJQUN0RixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLENBQUMsQ0FBQywyQkFBMkI7SUFDcEYsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtBQUNyRSxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsZXRlUGFyYW1ldGVyQ29tbWFuZCwgUHV0UGFyYW1ldGVyQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG4vKipcbiAqIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrLWNsaS9pc3N1ZXMvNjQxICh0aGUgXCJtaXhlZFwiIGNhc2UpLlxuICpcbiAqIEEgc2luZ2xlIHJlc291cmNlIGhhcyBCT1RIIGEgdGVtcGxhdGUtdmlzaWJsZSBjaGFuZ2UgKFJlY2VpdmVNZXNzYWdlV2FpdFRpbWVTZWNvbmRzKSBBTkQgYSBjaGFuZ2VcbiAqIHRoYXQgb25seSB0aGUgY2hhbmdlIHNldCBrbm93cyBhYm91dCAoUXVldWVOYW1lLCByZXNvbHZlZCBhdCBkZXBsb3kgdGltZSBmcm9tIGFuIFNTTSBwYXJhbWV0ZXIpLlxuICogVGhlIGNoYW5nZS1zZXQgZGlmZiBtdXN0IHN1cmZhY2UgYm90aCAtIGluIHBhcnRpY3VsYXIgaXQgbXVzdCBub3QgbGV0IHRoZSB2aXNpYmxlIGNoYW5nZSBoaWRlIHRoZVxuICogKHJlcGxhY2luZykgaGlkZGVuIGNoYW5nZS5cbiAqL1xuaW50ZWdUZXN0KFxuICAnY2RrIGRpZmYgLS1tZXRob2Q9Y2hhbmdlLXNldCBzdXJmYWNlcyBjaGFuZ2Utc2V0LW9ubHkgY2hhbmdlcyBhbG9uZ3NpZGUgdGVtcGxhdGUgY2hhbmdlcyBvbiB0aGUgc2FtZSByZXNvdXJjZScsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlck5hbWUgPSBgL2Nkay1pbnRlZy8ke2ZpeHR1cmUucmFuZG9tU3RyaW5nfS9xdWV1ZS1uYW1lLW1peGVkYDtcbiAgICBjb25zdCBxdWV1ZU5hbWVWMSA9IGBjZGt0ZXN0LSR7Zml4dHVyZS5yYW5kb21TdHJpbmd9LW0xYDtcbiAgICBjb25zdCBxdWV1ZU5hbWVWMiA9IGBjZGt0ZXN0LSR7Zml4dHVyZS5yYW5kb21TdHJpbmd9LW0yYDtcbiAgICBjb25zdCBzdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3NzbS1yZXNvbHZlLXF1ZXVlJyk7XG5cbiAgICAvLyBHSVZFTiAtIGRlcGxveWVkIHdpdGggYW4gaW5pdGlhbCBTU00gdmFsdWUgYW5kIGFuIGluaXRpYWwgcmVjZWl2ZS13YWl0LXRpbWVcbiAgICBhd2FpdCBmaXh0dXJlLmF3cy5zc20uc2VuZChuZXcgUHV0UGFyYW1ldGVyQ29tbWFuZCh7XG4gICAgICBOYW1lOiBwYXJhbWV0ZXJOYW1lLFxuICAgICAgVHlwZTogJ1N0cmluZycsXG4gICAgICBWYWx1ZTogcXVldWVOYW1lVjEsXG4gICAgfSkpO1xuICAgIGZpeHR1cmUuYXdzLmFkZENsZWFudXAoKCkgPT4gZml4dHVyZS5hd3Muc3NtLnNlbmQobmV3IERlbGV0ZVBhcmFtZXRlckNvbW1hbmQoeyBOYW1lOiBwYXJhbWV0ZXJOYW1lIH0pKSk7XG5cbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnc3NtLXJlc29sdmUtcXVldWUnLCB7XG4gICAgICBtb2RFbnY6IHsgU1NNX1BBUkFNRVRFUl9OQU1FOiBwYXJhbWV0ZXJOYW1lLCBTU01fUkVTT0xWRV9RVUVVRV9XQUlUX1RJTUU6ICcxMCcgfSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU4gLSB0aGUgU1NNIHZhbHVlIGNoYW5nZXMgb3V0LW9mLWJhbmQgKHF1ZXVlIG5hbWUgLT4gcmVwbGFjZW1lbnQsIG9ubHkgaW4gdGhlIGNoYW5nZSBzZXQpXG4gICAgYXdhaXQgZml4dHVyZS5hd3Muc3NtLnNlbmQobmV3IFB1dFBhcmFtZXRlckNvbW1hbmQoe1xuICAgICAgTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgIFR5cGU6ICdTdHJpbmcnLFxuICAgICAgVmFsdWU6IHF1ZXVlTmFtZVYyLFxuICAgICAgT3ZlcndyaXRlOiB0cnVlLFxuICAgIH0pKTtcblxuICAgIC8vIC4uLmFuZCB0aGUgdGVtcGxhdGUgYWxzbyBjaGFuZ2VzIHRoZSByZWNlaXZlLXdhaXQtdGltZSAoYSBub3JtYWwsIHRlbXBsYXRlLXZpc2libGUgdXBkYXRlKVxuICAgIGNvbnN0IGRpZmYgPSBhd2FpdCBmaXh0dXJlLmNkayhbJ2RpZmYnLCAnLS1tZXRob2Q9Y2hhbmdlLXNldCcsIHN0YWNrTmFtZV0sIHtcbiAgICAgIG1vZEVudjogeyBTU01fUEFSQU1FVEVSX05BTUU6IHBhcmFtZXRlck5hbWUsIFNTTV9SRVNPTFZFX1FVRVVFX1dBSVRfVElNRTogJzIwJyB9LFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTiAtIGJvdGggdGhlIHRlbXBsYXRlLXZpc2libGUgY2hhbmdlIGFuZCB0aGUgY2hhbmdlLXNldC1vbmx5IGNoYW5nZSBhcmUgcmVwb3J0ZWRcbiAgICBleHBlY3QoZGlmZikubm90LnRvQ29udGFpbignVGhlcmUgd2VyZSBubyBkaWZmZXJlbmNlcycpO1xuICAgIGV4cGVjdChkaWZmKS50b0NvbnRhaW4oJ0FXUzo6U1FTOjpRdWV1ZScpO1xuICAgIGV4cGVjdChkaWZmKS50b0NvbnRhaW4oJ1JlY2VpdmVNZXNzYWdlV2FpdFRpbWVTZWNvbmRzJyk7IC8vIHRlbXBsYXRlLWRldGVjdGVkIHVwZGF0ZVxuICAgIGV4cGVjdChkaWZmKS50b0NvbnRhaW4oJ1F1ZXVlTmFtZScpOyAvLyBjaGFuZ2Utc2V0LW9ubHkgcmVwbGFjZW1lbnRcbiAgfSksXG4pO1xuIl19