@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
43 lines • 6.47 kB
JavaScript
;
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