UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

51 lines 8.66 kB
"use strict"; 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 * * When a resource's name (or any property) is resolved at deploy time from an SSM parameter, * the synthesized CloudFormation template is identical regardless of the parameter's value. * A template-only diff therefore reports "no differences", but the change set that * `--method=change-set` creates *does* know the value changed. * * This test deploys a queue whose name comes from an SSM parameter, changes the parameter * out-of-band, and asserts that the change-set diff surfaces the (replacing) change while the * template-only diff does not. */ (0, lib_1.integTest)('cdk diff --method=change-set detects SSM-parameter-driven changes that template diff misses', (0, lib_1.withDefaultFixture)(async (fixture) => { const parameterName = `/cdk-integ/${fixture.randomString}/queue-name`; const queueNameV1 = `cdktest-${fixture.randomString}-q1`; const queueNameV2 = `cdktest-${fixture.randomString}-q2`; const stackName = fixture.fullStackName('ssm-resolve-queue'); // GIVEN - an SSM parameter with an initial value, and a deployed stack that names its queue after it 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 }, }); // WHEN - the SSM parameter value changes out-of-band (the CDK app/template is unchanged) await fixture.aws.ssm.send(new client_ssm_1.PutParameterCommand({ Name: parameterName, Type: 'String', Value: queueNameV2, Overwrite: true, })); // THEN - a template-only diff sees nothing, because the template is byte-for-byte identical const templateDiff = await fixture.cdk(['diff', '--method=template', stackName], { modEnv: { SSM_PARAMETER_NAME: parameterName }, }); expect(templateDiff).toContain('There were no differences'); // ...but the change-set diff surfaces the queue change (a replacement, since QueueName is immutable) const changeSetDiff = await fixture.cdk(['diff', '--method=change-set', stackName], { modEnv: { SSM_PARAMETER_NAME: parameterName }, }); expect(changeSetDiff).not.toContain('There were no differences'); expect(changeSetDiff).toContain('AWS::SQS::Queue'); })); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNkay1kaWZmLS0tbWV0aG9kLWNoYW5nZS1zZXQtZGV0ZWN0cy1zc20tcGFyYW1ldGVyLWRyaXZlbi1jaGFuZ2VzLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1jZGstZGlmZi0tLW1ldGhvZC1jaGFuZ2Utc2V0LWRldGVjdHMtc3NtLXBhcmFtZXRlci1kcml2ZW4tY2hhbmdlcy5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvREFBa0Y7QUFDbEYsc0NBQTZEO0FBRTdEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsSUFBQSxlQUFTLEVBQ1AsNkZBQTZGLEVBQzdGLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLE1BQU0sYUFBYSxHQUFHLGNBQWMsT0FBTyxDQUFDLFlBQVksYUFBYSxDQUFDO0lBQ3RFLE1BQU0sV0FBVyxHQUFHLFdBQVcsT0FBTyxDQUFDLFlBQVksS0FBSyxDQUFDO0lBQ3pELE1BQU0sV0FBVyxHQUFHLFdBQVcsT0FBTyxDQUFDLFlBQVksS0FBSyxDQUFDO0lBQ3pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUU3RCxxR0FBcUc7SUFDckcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQ0FBbUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxXQUFXO0tBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksbUNBQXNCLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFFO1FBQzNDLE1BQU0sRUFBRSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRTtLQUM5QyxDQUFDLENBQUM7SUFFSCx5RkFBeUY7SUFDekYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQ0FBbUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxXQUFXO1FBQ2xCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBRUosNEZBQTRGO0lBQzVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsRUFBRTtRQUMvRSxNQUFNLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUU7S0FDOUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRTVELHFHQUFxRztJQUNyRyxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDbEYsTUFBTSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFO0tBQzlDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDakUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWxldGVQYXJhbWV0ZXJDb21tYW5kLCBQdXRQYXJhbWV0ZXJDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbi8qKlxuICogUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGstY2xpL2lzc3Vlcy82NDFcbiAqXG4gKiBXaGVuIGEgcmVzb3VyY2UncyBuYW1lIChvciBhbnkgcHJvcGVydHkpIGlzIHJlc29sdmVkIGF0IGRlcGxveSB0aW1lIGZyb20gYW4gU1NNIHBhcmFtZXRlcixcbiAqIHRoZSBzeW50aGVzaXplZCBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSBpcyBpZGVudGljYWwgcmVnYXJkbGVzcyBvZiB0aGUgcGFyYW1ldGVyJ3MgdmFsdWUuXG4gKiBBIHRlbXBsYXRlLW9ubHkgZGlmZiB0aGVyZWZvcmUgcmVwb3J0cyBcIm5vIGRpZmZlcmVuY2VzXCIsIGJ1dCB0aGUgY2hhbmdlIHNldCB0aGF0XG4gKiBgLS1tZXRob2Q9Y2hhbmdlLXNldGAgY3JlYXRlcyAqZG9lcyoga25vdyB0aGUgdmFsdWUgY2hhbmdlZC5cbiAqXG4gKiBUaGlzIHRlc3QgZGVwbG95cyBhIHF1ZXVlIHdob3NlIG5hbWUgY29tZXMgZnJvbSBhbiBTU00gcGFyYW1ldGVyLCBjaGFuZ2VzIHRoZSBwYXJhbWV0ZXJcbiAqIG91dC1vZi1iYW5kLCBhbmQgYXNzZXJ0cyB0aGF0IHRoZSBjaGFuZ2Utc2V0IGRpZmYgc3VyZmFjZXMgdGhlIChyZXBsYWNpbmcpIGNoYW5nZSB3aGlsZSB0aGVcbiAqIHRlbXBsYXRlLW9ubHkgZGlmZiBkb2VzIG5vdC5cbiAqL1xuaW50ZWdUZXN0KFxuICAnY2RrIGRpZmYgLS1tZXRob2Q9Y2hhbmdlLXNldCBkZXRlY3RzIFNTTS1wYXJhbWV0ZXItZHJpdmVuIGNoYW5nZXMgdGhhdCB0ZW1wbGF0ZSBkaWZmIG1pc3NlcycsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlck5hbWUgPSBgL2Nkay1pbnRlZy8ke2ZpeHR1cmUucmFuZG9tU3RyaW5nfS9xdWV1ZS1uYW1lYDtcbiAgICBjb25zdCBxdWV1ZU5hbWVWMSA9IGBjZGt0ZXN0LSR7Zml4dHVyZS5yYW5kb21TdHJpbmd9LXExYDtcbiAgICBjb25zdCBxdWV1ZU5hbWVWMiA9IGBjZGt0ZXN0LSR7Zml4dHVyZS5yYW5kb21TdHJpbmd9LXEyYDtcbiAgICBjb25zdCBzdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3NzbS1yZXNvbHZlLXF1ZXVlJyk7XG5cbiAgICAvLyBHSVZFTiAtIGFuIFNTTSBwYXJhbWV0ZXIgd2l0aCBhbiBpbml0aWFsIHZhbHVlLCBhbmQgYSBkZXBsb3llZCBzdGFjayB0aGF0IG5hbWVzIGl0cyBxdWV1ZSBhZnRlciBpdFxuICAgIGF3YWl0IGZpeHR1cmUuYXdzLnNzbS5zZW5kKG5ldyBQdXRQYXJhbWV0ZXJDb21tYW5kKHtcbiAgICAgIE5hbWU6IHBhcmFtZXRlck5hbWUsXG4gICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgIFZhbHVlOiBxdWV1ZU5hbWVWMSxcbiAgICB9KSk7XG4gICAgZml4dHVyZS5hd3MuYWRkQ2xlYW51cCgoKSA9PiBmaXh0dXJlLmF3cy5zc20uc2VuZChuZXcgRGVsZXRlUGFyYW1ldGVyQ29tbWFuZCh7IE5hbWU6IHBhcmFtZXRlck5hbWUgfSkpKTtcblxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdzc20tcmVzb2x2ZS1xdWV1ZScsIHtcbiAgICAgIG1vZEVudjogeyBTU01fUEFSQU1FVEVSX05BTUU6IHBhcmFtZXRlck5hbWUgfSxcbiAgICB9KTtcblxuICAgIC8vIFdIRU4gLSB0aGUgU1NNIHBhcmFtZXRlciB2YWx1ZSBjaGFuZ2VzIG91dC1vZi1iYW5kICh0aGUgQ0RLIGFwcC90ZW1wbGF0ZSBpcyB1bmNoYW5nZWQpXG4gICAgYXdhaXQgZml4dHVyZS5hd3Muc3NtLnNlbmQobmV3IFB1dFBhcmFtZXRlckNvbW1hbmQoe1xuICAgICAgTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgIFR5cGU6ICdTdHJpbmcnLFxuICAgICAgVmFsdWU6IHF1ZXVlTmFtZVYyLFxuICAgICAgT3ZlcndyaXRlOiB0cnVlLFxuICAgIH0pKTtcblxuICAgIC8vIFRIRU4gLSBhIHRlbXBsYXRlLW9ubHkgZGlmZiBzZWVzIG5vdGhpbmcsIGJlY2F1c2UgdGhlIHRlbXBsYXRlIGlzIGJ5dGUtZm9yLWJ5dGUgaWRlbnRpY2FsXG4gICAgY29uc3QgdGVtcGxhdGVEaWZmID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgJy0tbWV0aG9kPXRlbXBsYXRlJywgc3RhY2tOYW1lXSwge1xuICAgICAgbW9kRW52OiB7IFNTTV9QQVJBTUVURVJfTkFNRTogcGFyYW1ldGVyTmFtZSB9LFxuICAgIH0pO1xuICAgIGV4cGVjdCh0ZW1wbGF0ZURpZmYpLnRvQ29udGFpbignVGhlcmUgd2VyZSBubyBkaWZmZXJlbmNlcycpO1xuXG4gICAgLy8gLi4uYnV0IHRoZSBjaGFuZ2Utc2V0IGRpZmYgc3VyZmFjZXMgdGhlIHF1ZXVlIGNoYW5nZSAoYSByZXBsYWNlbWVudCwgc2luY2UgUXVldWVOYW1lIGlzIGltbXV0YWJsZSlcbiAgICBjb25zdCBjaGFuZ2VTZXREaWZmID0gYXdhaXQgZml4dHVyZS5jZGsoWydkaWZmJywgJy0tbWV0aG9kPWNoYW5nZS1zZXQnLCBzdGFja05hbWVdLCB7XG4gICAgICBtb2RFbnY6IHsgU1NNX1BBUkFNRVRFUl9OQU1FOiBwYXJhbWV0ZXJOYW1lIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KGNoYW5nZVNldERpZmYpLm5vdC50b0NvbnRhaW4oJ1RoZXJlIHdlcmUgbm8gZGlmZmVyZW5jZXMnKTtcbiAgICBleHBlY3QoY2hhbmdlU2V0RGlmZikudG9Db250YWluKCdBV1M6OlNRUzo6UXVldWUnKTtcbiAgfSksXG4pO1xuIl19