UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

73 lines 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs"); const path = require("path"); const lib_1 = require("../../../lib"); const regions_1 = require("../../../lib/regions"); jest.setTimeout(5 * 60 * 1000); (0, lib_1.integTest)('hotswap deployment caches template and uses it for subsequent hotswaps', (0, lib_1.withDefaultFixture)(async (fixture) => { const stackName = 'cc-hotswap'; // GIVEN - initial full deploy await fixture.cdkDeploy(stackName, { captureStderr: false, modEnv: { DYNAMIC_CC_PROPERTY_VALUE: 'v1', DYNAMIC_CC_PROPERTY_VALUE_2: 'v1', }, }); // WHEN - first hotswap changes ALL resources, creates the cache await fixture.cdkDeploy(stackName, { options: ['--hotswap'], captureStderr: false, modEnv: { DYNAMIC_CC_PROPERTY_VALUE: 'v2', DYNAMIC_CC_PROPERTY_VALUE_2: 'v2', }, }); const fullStackName = fixture.fullStackName(stackName); const cacheFile = path.join(fixture.integTestDir, 'cdk.out', '.hotswap-cache', `${fullStackName}.json`); expect(fs.existsSync(cacheFile)).toBe(true); // THEN - second hotswap changes only the Agent (via DYNAMIC_CC_PROPERTY_VALUE_2). // If the cache is used, the diff is against the cached template, only 1 resource should be hotswapped. const deployOutput = await fixture.cdkDeploy(stackName, { options: ['--hotswap'], captureStderr: true, onlyStderr: true, modEnv: { DYNAMIC_CC_PROPERTY_VALUE: 'v2', // unchanged from first hotswap DYNAMIC_CC_PROPERTY_VALUE_2: 'v3', }, }); // should only see one hotswapped message in output const hotswapCount = (deployOutput.match(/hotswapped!/g) || []).length; expect(hotswapCount).toBe(1); }, { aws: { regions: regions_1.BEDROCK_AGENT_REGIONS } })); (0, lib_1.integTest)('hotswap cache is invalidated after a full CloudFormation deployment', (0, lib_1.withDefaultFixture)(async (fixture) => { // GIVEN - deploy then hotswap to create cache await fixture.cdkDeploy('lambda-hotswap', { captureStderr: false, modEnv: { DYNAMIC_LAMBDA_PROPERTY_VALUE: 'v1', }, }); await fixture.cdkDeploy('lambda-hotswap', { options: ['--hotswap'], captureStderr: false, modEnv: { DYNAMIC_LAMBDA_PROPERTY_VALUE: 'v2', }, }); const stackName = fixture.fullStackName('lambda-hotswap'); const cacheFile = path.join(fixture.integTestDir, 'cdk.out', '.hotswap-cache', `${stackName}.json`); expect(fs.existsSync(cacheFile)).toBe(true); // WHEN - full CFN deploy await fixture.cdkDeploy('lambda-hotswap', { captureStderr: false, modEnv: { DYNAMIC_LAMBDA_PROPERTY_VALUE: 'v3', }, }); // THEN - cache should be invalidated expect(fs.existsSync(cacheFile)).toBe(false); })); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWhvdHN3YXAtZGVwbG95bWVudC1jYWNoZXMtdGVtcGxhdGUuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWhvdHN3YXAtZGVwbG95bWVudC1jYWNoZXMtdGVtcGxhdGUuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixzQ0FBNkQ7QUFDN0Qsa0RBQTZEO0FBRTdELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUUvQixJQUFBLGVBQVMsRUFDUCx3RUFBd0UsRUFDeEUsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDO0lBRS9CLDhCQUE4QjtJQUM5QixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ2pDLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLE1BQU0sRUFBRTtZQUNOLHlCQUF5QixFQUFFLElBQUk7WUFDL0IsMkJBQTJCLEVBQUUsSUFBSTtTQUNsQztLQUNGLENBQUMsQ0FBQztJQUVILGdFQUFnRTtJQUNoRSxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1FBQ2pDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN0QixhQUFhLEVBQUUsS0FBSztRQUNwQixNQUFNLEVBQUU7WUFDTix5QkFBeUIsRUFBRSxJQUFJO1lBQy9CLDJCQUEyQixFQUFFLElBQUk7U0FDbEM7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxhQUFhLE9BQU8sQ0FBQyxDQUFDO0lBQ3hHLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTVDLGtGQUFrRjtJQUNsRix1R0FBdUc7SUFDdkcsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtRQUN0RCxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFDdEIsYUFBYSxFQUFFLElBQUk7UUFDbkIsVUFBVSxFQUFFLElBQUk7UUFDaEIsTUFBTSxFQUFFO1lBQ04seUJBQXlCLEVBQUUsSUFBSSxFQUFFLCtCQUErQjtZQUNoRSwyQkFBMkIsRUFBRSxJQUFJO1NBQ2xDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsbURBQW1EO0lBQ25ELE1BQU0sWUFBWSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsK0JBQXFCLEVBQUUsRUFBRSxDQUFDLENBQ2hELENBQUM7QUFFRixJQUFBLGVBQVMsRUFDUCxxRUFBcUUsRUFDckUsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDbkMsOENBQThDO0lBQzlDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRTtRQUN4QyxhQUFhLEVBQUUsS0FBSztRQUNwQixNQUFNLEVBQUU7WUFDTiw2QkFBNkIsRUFBRSxJQUFJO1NBQ3BDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFO1FBQ3hDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUN0QixhQUFhLEVBQUUsS0FBSztRQUNwQixNQUFNLEVBQUU7WUFDTiw2QkFBNkIsRUFBRSxJQUFJO1NBQ3BDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDO0lBQ3BHLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTVDLHlCQUF5QjtJQUN6QixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUU7UUFDeEMsYUFBYSxFQUFFLEtBQUs7UUFDcEIsTUFBTSxFQUFFO1lBQ04sNkJBQTZCLEVBQUUsSUFBSTtTQUNwQztLQUNGLENBQUMsQ0FBQztJQUVILHFDQUFxQztJQUNyQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCB7IEJFRFJPQ0tfQUdFTlRfUkVHSU9OUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9yZWdpb25zJztcblxuamVzdC5zZXRUaW1lb3V0KDUgKiA2MCAqIDEwMDApO1xuXG5pbnRlZ1Rlc3QoXG4gICdob3Rzd2FwIGRlcGxveW1lbnQgY2FjaGVzIHRlbXBsYXRlIGFuZCB1c2VzIGl0IGZvciBzdWJzZXF1ZW50IGhvdHN3YXBzJyxcbiAgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gICAgY29uc3Qgc3RhY2tOYW1lID0gJ2NjLWhvdHN3YXAnO1xuXG4gICAgLy8gR0lWRU4gLSBpbml0aWFsIGZ1bGwgZGVwbG95XG4gICAgYXdhaXQgZml4dHVyZS5jZGtEZXBsb3koc3RhY2tOYW1lLCB7XG4gICAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBEWU5BTUlDX0NDX1BST1BFUlRZX1ZBTFVFOiAndjEnLFxuICAgICAgICBEWU5BTUlDX0NDX1BST1BFUlRZX1ZBTFVFXzI6ICd2MScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gV0hFTiAtIGZpcnN0IGhvdHN3YXAgY2hhbmdlcyBBTEwgcmVzb3VyY2VzLCBjcmVhdGVzIHRoZSBjYWNoZVxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KHN0YWNrTmFtZSwge1xuICAgICAgb3B0aW9uczogWyctLWhvdHN3YXAnXSxcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUU6ICd2MicsXG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUVfMjogJ3YyJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmdWxsU3RhY2tOYW1lID0gZml4dHVyZS5mdWxsU3RhY2tOYW1lKHN0YWNrTmFtZSk7XG4gICAgY29uc3QgY2FjaGVGaWxlID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnY2RrLm91dCcsICcuaG90c3dhcC1jYWNoZScsIGAke2Z1bGxTdGFja05hbWV9Lmpzb25gKTtcbiAgICBleHBlY3QoZnMuZXhpc3RzU3luYyhjYWNoZUZpbGUpKS50b0JlKHRydWUpO1xuXG4gICAgLy8gVEhFTiAtIHNlY29uZCBob3Rzd2FwIGNoYW5nZXMgb25seSB0aGUgQWdlbnQgKHZpYSBEWU5BTUlDX0NDX1BST1BFUlRZX1ZBTFVFXzIpLlxuICAgIC8vIElmIHRoZSBjYWNoZSBpcyB1c2VkLCB0aGUgZGlmZiBpcyBhZ2FpbnN0IHRoZSBjYWNoZWQgdGVtcGxhdGUsIG9ubHkgMSByZXNvdXJjZSBzaG91bGQgYmUgaG90c3dhcHBlZC5cbiAgICBjb25zdCBkZXBsb3lPdXRwdXQgPSBhd2FpdCBmaXh0dXJlLmNka0RlcGxveShzdGFja05hbWUsIHtcbiAgICAgIG9wdGlvbnM6IFsnLS1ob3Rzd2FwJ10sXG4gICAgICBjYXB0dXJlU3RkZXJyOiB0cnVlLFxuICAgICAgb25seVN0ZGVycjogdHJ1ZSxcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBEWU5BTUlDX0NDX1BST1BFUlRZX1ZBTFVFOiAndjInLCAvLyB1bmNoYW5nZWQgZnJvbSBmaXJzdCBob3Rzd2FwXG4gICAgICAgIERZTkFNSUNfQ0NfUFJPUEVSVFlfVkFMVUVfMjogJ3YzJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBzaG91bGQgb25seSBzZWUgb25lIGhvdHN3YXBwZWQgbWVzc2FnZSBpbiBvdXRwdXRcbiAgICBjb25zdCBob3Rzd2FwQ291bnQgPSAoZGVwbG95T3V0cHV0Lm1hdGNoKC9ob3Rzd2FwcGVkIS9nKSB8fCBbXSkubGVuZ3RoO1xuICAgIGV4cGVjdChob3Rzd2FwQ291bnQpLnRvQmUoMSk7XG4gIH0sIHsgYXdzOiB7IHJlZ2lvbnM6IEJFRFJPQ0tfQUdFTlRfUkVHSU9OUyB9IH0pLFxuKTtcblxuaW50ZWdUZXN0KFxuICAnaG90c3dhcCBjYWNoZSBpcyBpbnZhbGlkYXRlZCBhZnRlciBhIGZ1bGwgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudCcsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIC8vIEdJVkVOIC0gZGVwbG95IHRoZW4gaG90c3dhcCB0byBjcmVhdGUgY2FjaGVcbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnbGFtYmRhLWhvdHN3YXAnLCB7XG4gICAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgICAgIG1vZEVudjoge1xuICAgICAgICBEWU5BTUlDX0xBTUJEQV9QUk9QRVJUWV9WQUxVRTogJ3YxJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBmaXh0dXJlLmNka0RlcGxveSgnbGFtYmRhLWhvdHN3YXAnLCB7XG4gICAgICBvcHRpb25zOiBbJy0taG90c3dhcCddLFxuICAgICAgY2FwdHVyZVN0ZGVycjogZmFsc2UsXG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgRFlOQU1JQ19MQU1CREFfUFJPUEVSVFlfVkFMVUU6ICd2MicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RhY2tOYW1lID0gZml4dHVyZS5mdWxsU3RhY2tOYW1lKCdsYW1iZGEtaG90c3dhcCcpO1xuICAgIGNvbnN0IGNhY2hlRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2Nkay5vdXQnLCAnLmhvdHN3YXAtY2FjaGUnLCBgJHtzdGFja05hbWV9Lmpzb25gKTtcbiAgICBleHBlY3QoZnMuZXhpc3RzU3luYyhjYWNoZUZpbGUpKS50b0JlKHRydWUpO1xuXG4gICAgLy8gV0hFTiAtIGZ1bGwgQ0ZOIGRlcGxveVxuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdsYW1iZGEtaG90c3dhcCcsIHtcbiAgICAgIGNhcHR1cmVTdGRlcnI6IGZhbHNlLFxuICAgICAgbW9kRW52OiB7XG4gICAgICAgIERZTkFNSUNfTEFNQkRBX1BST1BFUlRZX1ZBTFVFOiAndjMnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFRIRU4gLSBjYWNoZSBzaG91bGQgYmUgaW52YWxpZGF0ZWRcbiAgICBleHBlY3QoZnMuZXhpc3RzU3luYyhjYWNoZUZpbGUpKS50b0JlKGZhbHNlKTtcbiAgfSksXG4pO1xuIl19