UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

52 lines 11.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const path = require("path"); const client_cloudformation_1 = require("@aws-sdk/client-cloudformation"); const lib_1 = require("../../../lib"); (0, lib_1.integTest)('test resource import with construct that requires bundling', (0, lib_1.withExtendedTimeoutFixture)(async (fixture) => { // GIVEN const outputsFile = path.join(fixture.integTestDir, 'outputs', 'outputs.json'); await fs_1.promises.mkdir(path.dirname(outputsFile), { recursive: true }); // First, create a stack that includes a NodeJSFunction lambda and one bucket that will be removed from the stack but NOT deleted from AWS. await fixture.cdkDeploy('importable-stack', { modEnv: { INCLUDE_NODEJS_FUNCTION_LAMBDA: '1', INCLUDE_SINGLE_BUCKET: '1', RETAIN_SINGLE_BUCKET: '1' }, options: ['--outputs-file', outputsFile], }); // Second, now the bucket we will remove is in the stack and has a logicalId. We can now make the resource mapping file. // This resource mapping file will be used to tell the import operation what bucket to bring into the stack. const fullStackName = fixture.fullStackName('importable-stack'); const outputs = JSON.parse((await fs_1.promises.readFile(outputsFile, { encoding: 'utf-8' })).toString()); const bucketLogicalId = outputs[fullStackName].BucketLogicalId; const bucketName = outputs[fullStackName].BucketName; const bucketResourceMap = { [bucketLogicalId]: { BucketName: bucketName, }, }; const mappingFile = path.join(fixture.integTestDir, 'outputs', 'mapping.json'); await fs_1.promises.writeFile(mappingFile, JSON.stringify(bucketResourceMap), { encoding: 'utf-8' }); // Third, remove the bucket from the stack, but don't delete the bucket from AWS. await fixture.cdkDeploy('importable-stack', { modEnv: { INCLUDE_NODEJS_FUNCTION_LAMBDA: '1', INCLUDE_SINGLE_BUCKET: '0', RETAIN_SINGLE_BUCKET: '0' }, }); const cfnTemplateBeforeImport = await fixture.aws.cloudFormation.send(new client_cloudformation_1.GetTemplateCommand({ StackName: fullStackName })); expect(cfnTemplateBeforeImport.TemplateBody).not.toContain(bucketLogicalId); // WHEN await fixture.cdk(['import', '--resource-mapping', mappingFile, fixture.fullStackName('importable-stack')], { modEnv: { INCLUDE_NODEJS_FUNCTION_LAMBDA: '1', INCLUDE_SINGLE_BUCKET: '1', RETAIN_SINGLE_BUCKET: '0' }, }); // THEN const describeStacksResponse = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStacksCommand({ StackName: fullStackName })); const cfnTemplateAfterImport = await fixture.aws.cloudFormation.send(new client_cloudformation_1.GetTemplateCommand({ StackName: fullStackName })); // If bundling is skipped during import for NodeJSFunction lambda, then the operation should fail and exit expect(describeStacksResponse.Stacks[0].StackStatus).toEqual('IMPORT_COMPLETE'); // If the import operation is successful, the template should contain the imported bucket expect(cfnTemplateAfterImport.TemplateBody).toContain(bucketLogicalId); })); /** * Create a queue, orphan that queue, then import the queue. * * We want to test with a large template to make sure large templates can work with import. */ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRlc3QtcmVzb3VyY2UtaW1wb3J0LXdpdGgtY29uc3RydWN0LXRoYXQtcmVxdWlyZXMtYnVuZGxpbmcuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXRlc3QtcmVzb3VyY2UtaW1wb3J0LXdpdGgtY29uc3RydWN0LXRoYXQtcmVxdWlyZXMtYnVuZGxpbmcuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkJBQW9DO0FBQ3BDLDZCQUE2QjtBQUM3QiwwRUFBMkY7QUFDM0Ysc0NBQXFFO0FBRXJFLElBQUEsZUFBUyxFQUNQLDREQUE0RCxFQUM1RCxJQUFBLGdDQUEwQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUMzQyxRQUFRO0lBQ1IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMvRSxNQUFNLGFBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRS9ELDJJQUEySTtJQUMzSSxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7UUFDMUMsTUFBTSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7UUFDdEcsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDO0tBQ3pDLENBQUMsQ0FBQztJQUVILHdIQUF3SDtJQUN4SCw0R0FBNEc7SUFDNUcsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLGFBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFDL0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUNyRCxNQUFNLGlCQUFpQixHQUFHO1FBQ3hCLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDakIsVUFBVSxFQUFFLFVBQVU7U0FDdkI7S0FDRixDQUFDO0lBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMvRSxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTFGLGlGQUFpRjtJQUNqRixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7UUFDMUMsTUFBTSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7S0FDdkcsQ0FBQyxDQUFDO0lBQ0gsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDbkUsSUFBSSwwQ0FBa0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUNyRCxDQUFDO0lBQ0YsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFNUUsT0FBTztJQUNQLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7UUFDMUcsTUFBTSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsR0FBRyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUU7S0FDdkcsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2xFLElBQUksNkNBQXFCLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FDeEQsQ0FBQztJQUNGLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2xFLElBQUksMENBQWtCLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FDckQsQ0FBQztJQUVGLDBHQUEwRztJQUMxRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpGLHlGQUF5RjtJQUN6RixNQUFNLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRjs7OztHQUlHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRGVzY3JpYmVTdGFja3NDb21tYW5kLCBHZXRUZW1wbGF0ZUNvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRXh0ZW5kZWRUaW1lb3V0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cbmludGVnVGVzdChcbiAgJ3Rlc3QgcmVzb3VyY2UgaW1wb3J0IHdpdGggY29uc3RydWN0IHRoYXQgcmVxdWlyZXMgYnVuZGxpbmcnLFxuICB3aXRoRXh0ZW5kZWRUaW1lb3V0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIEdJVkVOXG4gICAgY29uc3Qgb3V0cHV0c0ZpbGUgPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdvdXRwdXRzJywgJ291dHB1dHMuanNvbicpO1xuICAgIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZShvdXRwdXRzRmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgLy8gRmlyc3QsIGNyZWF0ZSBhIHN0YWNrIHRoYXQgaW5jbHVkZXMgYSBOb2RlSlNGdW5jdGlvbiBsYW1iZGEgYW5kIG9uZSBidWNrZXQgdGhhdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2sgYnV0IE5PVCBkZWxldGVkIGZyb20gQVdTLlxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnRhYmxlLXN0YWNrJywge1xuICAgICAgbW9kRW52OiB7IElOQ0xVREVfTk9ERUpTX0ZVTkNUSU9OX0xBTUJEQTogJzEnLCBJTkNMVURFX1NJTkdMRV9CVUNLRVQ6ICcxJywgUkVUQUlOX1NJTkdMRV9CVUNLRVQ6ICcxJyB9LFxuICAgICAgb3B0aW9uczogWyctLW91dHB1dHMtZmlsZScsIG91dHB1dHNGaWxlXSxcbiAgICB9KTtcblxuICAgIC8vIFNlY29uZCwgbm93IHRoZSBidWNrZXQgd2Ugd2lsbCByZW1vdmUgaXMgaW4gdGhlIHN0YWNrIGFuZCBoYXMgYSBsb2dpY2FsSWQuIFdlIGNhbiBub3cgbWFrZSB0aGUgcmVzb3VyY2UgbWFwcGluZyBmaWxlLlxuICAgIC8vIFRoaXMgcmVzb3VyY2UgbWFwcGluZyBmaWxlIHdpbGwgYmUgdXNlZCB0byB0ZWxsIHRoZSBpbXBvcnQgb3BlcmF0aW9uIHdoYXQgYnVja2V0IHRvIGJyaW5nIGludG8gdGhlIHN0YWNrLlxuICAgIGNvbnN0IGZ1bGxTdGFja05hbWUgPSBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2ltcG9ydGFibGUtc3RhY2snKTtcbiAgICBjb25zdCBvdXRwdXRzID0gSlNPTi5wYXJzZSgoYXdhaXQgZnMucmVhZEZpbGUob3V0cHV0c0ZpbGUsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IGJ1Y2tldExvZ2ljYWxJZCA9IG91dHB1dHNbZnVsbFN0YWNrTmFtZV0uQnVja2V0TG9naWNhbElkO1xuICAgIGNvbnN0IGJ1Y2tldE5hbWUgPSBvdXRwdXRzW2Z1bGxTdGFja05hbWVdLkJ1Y2tldE5hbWU7XG4gICAgY29uc3QgYnVja2V0UmVzb3VyY2VNYXAgPSB7XG4gICAgICBbYnVja2V0TG9naWNhbElkXToge1xuICAgICAgICBCdWNrZXROYW1lOiBidWNrZXROYW1lLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IG1hcHBpbmdGaWxlID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnb3V0cHV0cycsICdtYXBwaW5nLmpzb24nKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUobWFwcGluZ0ZpbGUsIEpTT04uc3RyaW5naWZ5KGJ1Y2tldFJlc291cmNlTWFwKSwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcblxuICAgIC8vIFRoaXJkLCByZW1vdmUgdGhlIGJ1Y2tldCBmcm9tIHRoZSBzdGFjaywgYnV0IGRvbid0IGRlbGV0ZSB0aGUgYnVja2V0IGZyb20gQVdTLlxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdpbXBvcnRhYmxlLXN0YWNrJywge1xuICAgICAgbW9kRW52OiB7IElOQ0xVREVfTk9ERUpTX0ZVTkNUSU9OX0xBTUJEQTogJzEnLCBJTkNMVURFX1NJTkdMRV9CVUNLRVQ6ICcwJywgUkVUQUlOX1NJTkdMRV9CVUNLRVQ6ICcwJyB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGNmblRlbXBsYXRlQmVmb3JlSW1wb3J0ID0gYXdhaXQgZml4dHVyZS5hd3MuY2xvdWRGb3JtYXRpb24uc2VuZChcbiAgICAgIG5ldyBHZXRUZW1wbGF0ZUNvbW1hbmQoeyBTdGFja05hbWU6IGZ1bGxTdGFja05hbWUgfSksXG4gICAgKTtcbiAgICBleHBlY3QoY2ZuVGVtcGxhdGVCZWZvcmVJbXBvcnQuVGVtcGxhdGVCb2R5KS5ub3QudG9Db250YWluKGJ1Y2tldExvZ2ljYWxJZCk7XG5cbiAgICAvLyBXSEVOXG4gICAgYXdhaXQgZml4dHVyZS5jZGsoWydpbXBvcnQnLCAnLS1yZXNvdXJjZS1tYXBwaW5nJywgbWFwcGluZ0ZpbGUsIGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnaW1wb3J0YWJsZS1zdGFjaycpXSwge1xuICAgICAgbW9kRW52OiB7IElOQ0xVREVfTk9ERUpTX0ZVTkNUSU9OX0xBTUJEQTogJzEnLCBJTkNMVURFX1NJTkdMRV9CVUNLRVQ6ICcxJywgUkVUQUlOX1NJTkdMRV9CVUNLRVQ6ICcwJyB9LFxuICAgIH0pO1xuXG4gICAgLy8gVEhFTlxuICAgIGNvbnN0IGRlc2NyaWJlU3RhY2tzUmVzcG9uc2UgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgbmV3IERlc2NyaWJlU3RhY2tzQ29tbWFuZCh7IFN0YWNrTmFtZTogZnVsbFN0YWNrTmFtZSB9KSxcbiAgICApO1xuICAgIGNvbnN0IGNmblRlbXBsYXRlQWZ0ZXJJbXBvcnQgPSBhd2FpdCBmaXh0dXJlLmF3cy5jbG91ZEZvcm1hdGlvbi5zZW5kKFxuICAgICAgbmV3IEdldFRlbXBsYXRlQ29tbWFuZCh7IFN0YWNrTmFtZTogZnVsbFN0YWNrTmFtZSB9KSxcbiAgICApO1xuXG4gICAgLy8gSWYgYnVuZGxpbmcgaXMgc2tpcHBlZCBkdXJpbmcgaW1wb3J0IGZvciBOb2RlSlNGdW5jdGlvbiBsYW1iZGEsIHRoZW4gdGhlIG9wZXJhdGlvbiBzaG91bGQgZmFpbCBhbmQgZXhpdFxuICAgIGV4cGVjdChkZXNjcmliZVN0YWNrc1Jlc3BvbnNlLlN0YWNrcyFbMF0uU3RhY2tTdGF0dXMpLnRvRXF1YWwoJ0lNUE9SVF9DT01QTEVURScpO1xuXG4gICAgLy8gSWYgdGhlIGltcG9ydCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlIHRlbXBsYXRlIHNob3VsZCBjb250YWluIHRoZSBpbXBvcnRlZCBidWNrZXRcbiAgICBleHBlY3QoY2ZuVGVtcGxhdGVBZnRlckltcG9ydC5UZW1wbGF0ZUJvZHkpLnRvQ29udGFpbihidWNrZXRMb2dpY2FsSWQpO1xuICB9KSxcbik7XG5cbi8qKlxuICogQ3JlYXRlIGEgcXVldWUsIG9ycGhhbiB0aGF0IHF1ZXVlLCB0aGVuIGltcG9ydCB0aGUgcXVldWUuXG4gKlxuICogV2Ugd2FudCB0byB0ZXN0IHdpdGggYSBsYXJnZSB0ZW1wbGF0ZSB0byBtYWtlIHN1cmUgbGFyZ2UgdGVtcGxhdGVzIGNhbiB3b3JrIHdpdGggaW1wb3J0LlxuICovXG4iXX0=