UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

44 lines 7.95 kB
"use strict"; 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==