@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
44 lines • 7.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
const lib_1 = require("../../../lib");
(0, lib_1.integTest)('deploy with change-set method uses change set for approval diff', (0, lib_1.withDefaultFixture)(async (fixture) => {
let changeSetVerified = false;
const stackName = fixture.fullStackName('test-2');
const changeSetName = `${fixture.stackNamePrefix}-approval-diff-test`;
// Deploy with --require-approval=any-change without --yes.
// The CLI will create a change set for the approval diff, pause for confirmation,
// and then execute the same change set after the user confirms.
const output = await fixture.cdkDeploy('test-2', {
options: ['--require-approval=any-change', '--method=change-set', `--change-set-name=${changeSetName}`],
neverRequireApproval: false,
interact: [
{
prompt: /Do you wish to deploy these changes/,
input: 'y',
beforeInput: async () => {
// While the CLI is paused at the approval prompt, verify that
// the named change set has been created and is ready for execution.
const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.ListChangeSetsCommand({ StackName: stackName }));
const changeSets = response.Summaries ?? [];
const namedChangeSet = changeSets.find(cs => cs.ChangeSetName === changeSetName);
expect(namedChangeSet).toBeDefined();
expect(namedChangeSet?.Status).toEqual('CREATE_COMPLETE');
changeSetVerified = true;
},
},
],
modEnv: {
FORCE_COLOR: '0',
},
});
// The approval diff should contain resource information from the change set
expect(output).toContain('AWS::SNS::Topic');
expect(output).toContain('Do you wish to deploy these changes');
// Verify the beforeInput callback actually ran
expect(changeSetVerified).toBe(true);
// Verify the stack was actually deployed
const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({ StackName: fixture.fullStackName('test-2') }));
expect(response.Stacks?.[0].StackStatus).toEqual('CREATE_COMPLETE');
}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS13aXRoLWNoYW5nZS1zZXQtYXBwcm92YWwtZGlmZi5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstZGVwbG95LXdpdGgtY2hhbmdlLXNldC1hcHByb3ZhbC1kaWZmLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBFQUE4RjtBQUM5RixzQ0FBNkQ7QUFFN0QsSUFBQSxlQUFTLEVBQ1AsaUVBQWlFLEVBQ2pFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ25DLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxxQkFBcUIsQ0FBQztJQUV0RSwyREFBMkQ7SUFDM0Qsa0ZBQWtGO0lBQ2xGLGdFQUFnRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO1FBQy9DLE9BQU8sRUFBRSxDQUFDLCtCQUErQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixhQUFhLEVBQUUsQ0FBQztRQUN2RyxvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLFFBQVEsRUFBRTtZQUNSO2dCQUNFLE1BQU0sRUFBRSxxQ0FBcUM7Z0JBQzdDLEtBQUssRUFBRSxHQUFHO2dCQUNWLFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDdEIsOERBQThEO29CQUM5RCxvRUFBb0U7b0JBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwRCxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQ3BELENBQUM7b0JBQ0YsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7b0JBQzVDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxLQUFLLGFBQWEsQ0FBQyxDQUFDO29CQUNqRixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzFELGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDM0IsQ0FBQzthQUNGO1NBQ0Y7UUFDRCxNQUFNLEVBQUU7WUFDTixXQUFXLEVBQUUsR0FBRztTQUNqQjtLQUNGLENBQUMsQ0FBQztJQUVILDRFQUE0RTtJQUM1RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBRWhFLCtDQUErQztJQUMvQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMseUNBQXlDO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNwRCxJQUFJLDZDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUMxRSxDQUFDO0lBQ0YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpYmVTdGFja3NDb21tYW5kLCBMaXN0Q2hhbmdlU2V0c0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdkZXBsb3kgd2l0aCBjaGFuZ2Utc2V0IG1ldGhvZCB1c2VzIGNoYW5nZSBzZXQgZm9yIGFwcHJvdmFsIGRpZmYnLFxuICB3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBsZXQgY2hhbmdlU2V0VmVyaWZpZWQgPSBmYWxzZTtcbiAgICBjb25zdCBzdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ3Rlc3QtMicpO1xuICAgIGNvbnN0IGNoYW5nZVNldE5hbWUgPSBgJHtmaXh0dXJlLnN0YWNrTmFtZVByZWZpeH0tYXBwcm92YWwtZGlmZi10ZXN0YDtcblxuICAgIC8vIERlcGxveSB3aXRoIC0tcmVxdWlyZS1hcHByb3ZhbD1hbnktY2hhbmdlIHdpdGhvdXQgLS15ZXMuXG4gICAgLy8gVGhlIENMSSB3aWxsIGNyZWF0ZSBhIGNoYW5nZSBzZXQgZm9yIHRoZSBhcHByb3ZhbCBkaWZmLCBwYXVzZSBmb3IgY29uZmlybWF0aW9uLFxuICAgIC8vIGFuZCB0aGVuIGV4ZWN1dGUgdGhlIHNhbWUgY2hhbmdlIHNldCBhZnRlciB0aGUgdXNlciBjb25maXJtcy5cbiAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgndGVzdC0yJywge1xuICAgICAgb3B0aW9uczogWyctLXJlcXVpcmUtYXBwcm92YWw9YW55LWNoYW5nZScsICctLW1ldGhvZD1jaGFuZ2Utc2V0JywgYC0tY2hhbmdlLXNldC1uYW1lPSR7Y2hhbmdlU2V0TmFtZX1gXSxcbiAgICAgIG5ldmVyUmVxdWlyZUFwcHJvdmFsOiBmYWxzZSxcbiAgICAgIGludGVyYWN0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9tcHQ6IC9EbyB5b3Ugd2lzaCB0byBkZXBsb3kgdGhlc2UgY2hhbmdlcy8sXG4gICAgICAgICAgaW5wdXQ6ICd5JyxcbiAgICAgICAgICBiZWZvcmVJbnB1dDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgLy8gV2hpbGUgdGhlIENMSSBpcyBwYXVzZWQgYXQgdGhlIGFwcHJvdmFsIHByb21wdCwgdmVyaWZ5IHRoYXRcbiAgICAgICAgICAgIC8vIHRoZSBuYW1lZCBjaGFuZ2Ugc2V0IGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGlzIHJlYWR5IGZvciBleGVjdXRpb24uXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICAgICAgICAgIG5ldyBMaXN0Q2hhbmdlU2V0c0NvbW1hbmQoeyBTdGFja05hbWU6IHN0YWNrTmFtZSB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VTZXRzID0gcmVzcG9uc2UuU3VtbWFyaWVzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgbmFtZWRDaGFuZ2VTZXQgPSBjaGFuZ2VTZXRzLmZpbmQoY3MgPT4gY3MuQ2hhbmdlU2V0TmFtZSA9PT0gY2hhbmdlU2V0TmFtZSk7XG4gICAgICAgICAgICBleHBlY3QobmFtZWRDaGFuZ2VTZXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBleHBlY3QobmFtZWRDaGFuZ2VTZXQ/LlN0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gICAgICAgICAgICBjaGFuZ2VTZXRWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgRk9SQ0VfQ09MT1I6ICcwJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBUaGUgYXBwcm92YWwgZGlmZiBzaG91bGQgY29udGFpbiByZXNvdXJjZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjaGFuZ2Ugc2V0XG4gICAgZXhwZWN0KG91dHB1dCkudG9Db250YWluKCdBV1M6OlNOUzo6VG9waWMnKTtcbiAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJ0RvIHlvdSB3aXNoIHRvIGRlcGxveSB0aGVzZSBjaGFuZ2VzJyk7XG5cbiAgICAvLyBWZXJpZnkgdGhlIGJlZm9yZUlucHV0IGNhbGxiYWNrIGFjdHVhbGx5IHJhblxuICAgIGV4cGVjdChjaGFuZ2VTZXRWZXJpZmllZCkudG9CZSh0cnVlKTtcblxuICAgIC8vIFZlcmlmeSB0aGUgc3RhY2sgd2FzIGFjdHVhbGx5IGRlcGxveWVkXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgbmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogZml4dHVyZS5mdWxsU3RhY2tOYW1lKCd0ZXN0LTInKSB9KSxcbiAgICApO1xuICAgIGV4cGVjdChyZXNwb25zZS5TdGFja3M/LlswXS5TdGFja1N0YXR1cykudG9FcXVhbCgnQ1JFQVRFX0NPTVBMRVRFJyk7XG4gIH0pLFxuKTtcbiJdfQ==