UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

43 lines 6.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const client_iam_1 = require("@aws-sdk/client-iam"); const lib_1 = require("../../../lib"); (0, lib_1.integTest)('cdk diagnose after changeset failure (auto-import)', (0, lib_1.withSpecificFixture)('diagnose-app', async (fixture) => { const roleName = `${fixture.stackNamePrefix}-diagnose-import-role`; try { // Step 1: Deploy with RETAIN so the role survives stack deletion await fixture.cdkDeploy('diagnose-import-fail', { modEnv: { REMOVAL_POLICY: 'retain' }, }); // Step 2: Delete the stack — the role survives because of RETAIN await fixture.cdkDestroy('diagnose-import-fail', { modEnv: { REMOVAL_POLICY: 'retain' }, }); // Step 3: Re-deploy with DESTROY (no retain) and --import-existing-resources // This should fail because CloudFormation requires DeletionPolicy=Retain for import const deployOutput = await fixture.cdkDeploy('diagnose-import-fail', { modEnv: { REMOVAL_POLICY: 'destroy' }, options: ['--import-existing-resources'], allowErrExit: true, }); expect(deployOutput).toContain('DeletionPolicy'); // Step 4: Run cdk diagnose const diagnoseOutput = await fixture.cdk(['--unstable=diagnose', 'diagnose', fixture.fullStackName('diagnose-import-fail')], { modEnv: { REMOVAL_POLICY: 'destroy' }, allowErrExit: true, }); // The diagnose output should mention the import issue expect(diagnoseOutput).toContain('diagnose-import-fail'); expect(diagnoseOutput).toContain('DeletionPolicy'); } finally { // Clean up: delete the role if it was retained try { await fixture.aws.iam.send(new client_iam_1.DeleteRoleCommand({ RoleName: roleName })); } catch { // Role may already be deleted } } })); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRpYWdub3NlLWNoYW5nZXNldC1mYWlsdXJlLmludGVndGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNkay1kaWFnbm9zZS1jaGFuZ2VzZXQtZmFpbHVyZS5pbnRlZ3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxvREFBd0Q7QUFDeEQsc0NBQThEO0FBRTlELElBQUEsZUFBUyxFQUNQLG9EQUFvRCxFQUNwRCxJQUFBLHlCQUFtQixFQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDcEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSx1QkFBdUIsQ0FBQztJQUVuRSxJQUFJLENBQUM7UUFDSCxpRUFBaUU7UUFDakUsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFO1lBQzlDLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUU7U0FDckMsQ0FBQyxDQUFDO1FBRUgsaUVBQWlFO1FBQ2pFLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztRQUVILDZFQUE2RTtRQUM3RSxvRkFBb0Y7UUFDcEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFO1lBQ25FLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDckMsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7WUFDeEMsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWpELDJCQUEyQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3RDLENBQUMscUJBQXFCLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUNsRjtZQUNFLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUU7WUFDckMsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FDRixDQUFDO1FBRUYsc0RBQXNEO1FBQ3RELE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckQsQ0FBQztZQUFTLENBQUM7UUFDVCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSw4QkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDhCQUE4QjtRQUNoQyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWxldGVSb2xlQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1pYW0nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoU3BlY2lmaWNGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIGRpYWdub3NlIGFmdGVyIGNoYW5nZXNldCBmYWlsdXJlIChhdXRvLWltcG9ydCknLFxuICB3aXRoU3BlY2lmaWNGaXh0dXJlKCdkaWFnbm9zZS1hcHAnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHJvbGVOYW1lID0gYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LWRpYWdub3NlLWltcG9ydC1yb2xlYDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTdGVwIDE6IERlcGxveSB3aXRoIFJFVEFJTiBzbyB0aGUgcm9sZSBzdXJ2aXZlcyBzdGFjayBkZWxldGlvblxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koJ2RpYWdub3NlLWltcG9ydC1mYWlsJywge1xuICAgICAgICBtb2RFbnY6IHsgUkVNT1ZBTF9QT0xJQ1k6ICdyZXRhaW4nIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gU3RlcCAyOiBEZWxldGUgdGhlIHN0YWNrIOKAlCB0aGUgcm9sZSBzdXJ2aXZlcyBiZWNhdXNlIG9mIFJFVEFJTlxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCdkaWFnbm9zZS1pbXBvcnQtZmFpbCcsIHtcbiAgICAgICAgbW9kRW52OiB7IFJFTU9WQUxfUE9MSUNZOiAncmV0YWluJyB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFN0ZXAgMzogUmUtZGVwbG95IHdpdGggREVTVFJPWSAobm8gcmV0YWluKSBhbmQgLS1pbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzXG4gICAgICAvLyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2UgQ2xvdWRGb3JtYXRpb24gcmVxdWlyZXMgRGVsZXRpb25Qb2xpY3k9UmV0YWluIGZvciBpbXBvcnRcbiAgICAgIGNvbnN0IGRlcGxveU91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdkaWFnbm9zZS1pbXBvcnQtZmFpbCcsIHtcbiAgICAgICAgbW9kRW52OiB7IFJFTU9WQUxfUE9MSUNZOiAnZGVzdHJveScgfSxcbiAgICAgICAgb3B0aW9uczogWyctLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMnXSxcbiAgICAgICAgYWxsb3dFcnJFeGl0OiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChkZXBsb3lPdXRwdXQpLnRvQ29udGFpbignRGVsZXRpb25Qb2xpY3knKTtcblxuICAgICAgLy8gU3RlcCA0OiBSdW4gY2RrIGRpYWdub3NlXG4gICAgICBjb25zdCBkaWFnbm9zZU91dHB1dCA9IGF3YWl0IGZpeHR1cmUuY2RrKFxuICAgICAgICBbJy0tdW5zdGFibGU9ZGlhZ25vc2UnLCAnZGlhZ25vc2UnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2RpYWdub3NlLWltcG9ydC1mYWlsJyldLFxuICAgICAgICB7XG4gICAgICAgICAgbW9kRW52OiB7IFJFTU9WQUxfUE9MSUNZOiAnZGVzdHJveScgfSxcbiAgICAgICAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICAvLyBUaGUgZGlhZ25vc2Ugb3V0cHV0IHNob3VsZCBtZW50aW9uIHRoZSBpbXBvcnQgaXNzdWVcbiAgICAgIGV4cGVjdChkaWFnbm9zZU91dHB1dCkudG9Db250YWluKCdkaWFnbm9zZS1pbXBvcnQtZmFpbCcpO1xuICAgICAgZXhwZWN0KGRpYWdub3NlT3V0cHV0KS50b0NvbnRhaW4oJ0RlbGV0aW9uUG9saWN5Jyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENsZWFuIHVwOiBkZWxldGUgdGhlIHJvbGUgaWYgaXQgd2FzIHJldGFpbmVkXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmaXh0dXJlLmF3cy5pYW0uc2VuZChuZXcgRGVsZXRlUm9sZUNvbW1hbmQoeyBSb2xlTmFtZTogcm9sZU5hbWUgfSkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIFJvbGUgbWF5IGFscmVhZHkgYmUgZGVsZXRlZFxuICAgICAgfVxuICAgIH1cbiAgfSksXG4pO1xuIl19