@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
44 lines • 6.79 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)('import-existing-resources error message includes construct paths', (0, lib_1.withSpecificFixture)('import-existing-resources-app', async (fixture) => {
const roleName = `${fixture.stackNamePrefix}-import-role`;
try {
// Step 1: Deploy with RETAIN so the role exists and can survive stack deletion
await fixture.cdkDeploy('import-existing', {
modEnv: { REMOVAL_POLICY: 'retain' },
});
// Step 2: Delete the stack — the role survives because of RETAIN
await fixture.cdkDestroy('import-existing', {
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 stdErr = await fixture.cdkDeploy('import-existing', {
modEnv: { REMOVAL_POLICY: 'destroy' },
options: ['--import-existing-resources'],
allowErrExit: true,
});
// This error text is word-wrapped, only check presence of individual words
expect(stdErr).toContain('DeletionPolicy');
expect(stdErr).toContain('MyRole');
expect(stdErr).toContain('RemovalPolicy.RETAIN');
expect(stdErr).toContain('https://docs.aws.amazon.com/cdk/v2/guide/resources.html#resources-removal');
// Step 4: Deploy with RETAIN and --import-existing-resources — this should succeed
await fixture.cdkDeploy('import-existing', {
modEnv: { REMOVAL_POLICY: 'retain' },
options: ['--import-existing-resources'],
});
}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMtZXJyb3ItbWVzc2FnZS1pbmNsdWRlcy1jb25zdHJ1Y3QtcGF0aHMuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMtZXJyb3ItbWVzc2FnZS1pbmNsdWRlcy1jb25zdHJ1Y3QtcGF0aHMuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0RBQXdEO0FBQ3hELHNDQUE4RDtBQUU5RCxJQUFBLGVBQVMsRUFDUCxrRUFBa0UsRUFDbEUsSUFBQSx5QkFBbUIsRUFBQywrQkFBK0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsR0FBRyxPQUFPLENBQUMsZUFBZSxjQUFjLENBQUM7SUFFMUQsSUFBSSxDQUFDO1FBQ0gsK0VBQStFO1FBQy9FLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztRQUVILGlFQUFpRTtRQUNqRSxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7WUFDMUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRTtTQUNyQyxDQUFDLENBQUM7UUFFSCw2RUFBNkU7UUFDN0Usb0ZBQW9GO1FBQ3BGLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRTtZQUN4RCxNQUFNLEVBQUUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILDJFQUEyRTtRQUMzRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBRXRHLG1GQUFtRjtRQUNuRixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUU7WUFDekMsTUFBTSxFQUFFLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRTtZQUNwQyxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO1lBQVMsQ0FBQztRQUNULCtDQUErQztRQUMvQyxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLDhCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsOEJBQThCO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbGV0ZVJvbGVDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWlhbSc7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhTcGVjaWZpY0ZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoXG4gICdpbXBvcnQtZXhpc3RpbmctcmVzb3VyY2VzIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgY29uc3RydWN0IHBhdGhzJyxcbiAgd2l0aFNwZWNpZmljRml4dHVyZSgnaW1wb3J0LWV4aXN0aW5nLXJlc291cmNlcy1hcHAnLCBhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHJvbGVOYW1lID0gYCR7Zml4dHVyZS5zdGFja05hbWVQcmVmaXh9LWltcG9ydC1yb2xlYDtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTdGVwIDE6IERlcGxveSB3aXRoIFJFVEFJTiBzbyB0aGUgcm9sZSBleGlzdHMgYW5kIGNhbiBzdXJ2aXZlIHN0YWNrIGRlbGV0aW9uXG4gICAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnaW1wb3J0LWV4aXN0aW5nJywge1xuICAgICAgICBtb2RFbnY6IHsgUkVNT1ZBTF9QT0xJQ1k6ICdyZXRhaW4nIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gU3RlcCAyOiBEZWxldGUgdGhlIHN0YWNrIOKAlCB0aGUgcm9sZSBzdXJ2aXZlcyBiZWNhdXNlIG9mIFJFVEFJTlxuICAgICAgYXdhaXQgZml4dHVyZS5jZGtEZXN0cm95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ3JldGFpbicgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTdGVwIDM6IFJlLWRlcGxveSB3aXRoIERFU1RST1kgKG5vIHJldGFpbikgYW5kIC0taW1wb3J0LWV4aXN0aW5nLXJlc291cmNlc1xuICAgICAgLy8gVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIENsb3VkRm9ybWF0aW9uIHJlcXVpcmVzIERlbGV0aW9uUG9saWN5PVJldGFpbiBmb3IgaW1wb3J0XG4gICAgICBjb25zdCBzdGRFcnIgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnaW1wb3J0LWV4aXN0aW5nJywge1xuICAgICAgICBtb2RFbnY6IHsgUkVNT1ZBTF9QT0xJQ1k6ICdkZXN0cm95JyB9LFxuICAgICAgICBvcHRpb25zOiBbJy0taW1wb3J0LWV4aXN0aW5nLXJlc291cmNlcyddLFxuICAgICAgICBhbGxvd0VyckV4aXQ6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgLy8gVGhpcyBlcnJvciB0ZXh0IGlzIHdvcmQtd3JhcHBlZCwgb25seSBjaGVjayBwcmVzZW5jZSBvZiBpbmRpdmlkdWFsIHdvcmRzXG4gICAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ0RlbGV0aW9uUG9saWN5Jyk7XG4gICAgICBleHBlY3Qoc3RkRXJyKS50b0NvbnRhaW4oJ015Um9sZScpO1xuICAgICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdSZW1vdmFsUG9saWN5LlJFVEFJTicpO1xuICAgICAgZXhwZWN0KHN0ZEVycikudG9Db250YWluKCdodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL3YyL2d1aWRlL3Jlc291cmNlcy5odG1sI3Jlc291cmNlcy1yZW1vdmFsJyk7XG5cbiAgICAgIC8vIFN0ZXAgNDogRGVwbG95IHdpdGggUkVUQUlOIGFuZCAtLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMg4oCUIHRoaXMgc2hvdWxkIHN1Y2NlZWRcbiAgICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnQtZXhpc3RpbmcnLCB7XG4gICAgICAgIG1vZEVudjogeyBSRU1PVkFMX1BPTElDWTogJ3JldGFpbicgfSxcbiAgICAgICAgb3B0aW9uczogWyctLWltcG9ydC1leGlzdGluZy1yZXNvdXJjZXMnXSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDbGVhbiB1cDogZGVsZXRlIHRoZSByb2xlIGlmIGl0IHdhcyByZXRhaW5lZFxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZml4dHVyZS5hd3MuaWFtLnNlbmQobmV3IERlbGV0ZVJvbGVDb21tYW5kKHsgUm9sZU5hbWU6IHJvbGVOYW1lIH0pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBSb2xlIG1heSBhbHJlYWR5IGJlIGRlbGV0ZWRcbiAgICAgIH1cbiAgICB9XG4gIH0pLFxuKTtcbiJdfQ==