UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

30 lines 6.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const client_cloudformation_1 = require("@aws-sdk/client-cloudformation"); const client_lambda_1 = require("@aws-sdk/client-lambda"); const drift_helpers_1 = require("./drift_helpers"); const lib_1 = require("../../../lib"); (0, lib_1.integTest)('cdk drift --fail throws when drift is detected', (0, lib_1.withDefaultFixture)(async (fixture) => { await fixture.cdkDeploy('driftable', {}); // Assert that, right after deploying, there is no drift (because we just deployed it) const drift = await fixture.cdk(['drift', '--fail', fixture.fullStackName('driftable')], { verbose: false }); expect(drift).toContain('No drift detected'); // Get the Lambda, we want to now make it drift const response = await fixture.aws.cloudFormation.send(new client_cloudformation_1.DescribeStackResourcesCommand({ StackName: fixture.fullStackName('driftable'), })); const lambdaResource = response.StackResources?.find(resource => resource.ResourceType === 'AWS::Lambda::Function'); if (!lambdaResource || !lambdaResource.PhysicalResourceId) { throw new Error('Could not find Lambda function in stack resources'); } const functionName = lambdaResource.PhysicalResourceId; // Update the Lambda function, introducing drift await fixture.aws.lambda.send(new client_lambda_1.UpdateFunctionConfigurationCommand({ FunctionName: functionName, Description: 'I\'m slowly drifting (drifting away)', })); // Wait for the stack update to complete await (0, drift_helpers_1.waitForLambdaUpdateComplete)(fixture, functionName); await expect(fixture.cdk(['drift', '--fail', fixture.fullStackName('driftable')], { verbose: false })).rejects.toThrow('exited with error'); })); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWNkay1kcmlmdC0tLWZhaWwtdGhyb3dzLXdoZW4tZHJpZnQtaXMtZGV0ZWN0ZWQuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWNkay1kcmlmdC0tLWZhaWwtdGhyb3dzLXdoZW4tZHJpZnQtaXMtZGV0ZWN0ZWQuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEVBQStFO0FBQy9FLDBEQUE0RTtBQUM1RSxtREFBOEQ7QUFDOUQsc0NBQTZEO0FBRTdELElBQUEsZUFBUyxFQUNQLGdEQUFnRCxFQUNoRCxJQUFBLHdCQUFrQixFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNuQyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXpDLHNGQUFzRjtJQUN0RixNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRTdHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUU3QywrQ0FBK0M7SUFDL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3BELElBQUkscURBQTZCLENBQUM7UUFDaEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0tBQzlDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQ2xELFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksS0FBSyx1QkFBdUIsQ0FDOUQsQ0FBQztJQUNGLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztJQUV2RCxnREFBZ0Q7SUFDaEQsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNCLElBQUksa0RBQWtDLENBQUM7UUFDckMsWUFBWSxFQUFFLFlBQVk7UUFDMUIsV0FBVyxFQUFFLHNDQUFzQztLQUNwRCxDQUFDLENBQ0gsQ0FBQztJQUVGLHdDQUF3QztJQUN4QyxNQUFNLElBQUEsMkNBQTJCLEVBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXpELE1BQU0sTUFBTSxDQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUN6RixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1sYW1iZGEnO1xuaW1wb3J0IHsgd2FpdEZvckxhbWJkYVVwZGF0ZUNvbXBsZXRlIH0gZnJvbSAnLi9kcmlmdF9oZWxwZXJzJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnY2RrIGRyaWZ0IC0tZmFpbCB0aHJvd3Mgd2hlbiBkcmlmdCBpcyBkZXRlY3RlZCcsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGF3YWl0IGZpeHR1cmUuY2RrRGVwbG95KCdkcmlmdGFibGUnLCB7fSk7XG5cbiAgICAvLyBBc3NlcnQgdGhhdCwgcmlnaHQgYWZ0ZXIgZGVwbG95aW5nLCB0aGVyZSBpcyBubyBkcmlmdCAoYmVjYXVzZSB3ZSBqdXN0IGRlcGxveWVkIGl0KVxuICAgIGNvbnN0IGRyaWZ0ID0gYXdhaXQgZml4dHVyZS5jZGsoWydkcmlmdCcsICctLWZhaWwnLCBmaXh0dXJlLmZ1bGxTdGFja05hbWUoJ2RyaWZ0YWJsZScpXSwgeyB2ZXJib3NlOiBmYWxzZSB9KTtcblxuICAgIGV4cGVjdChkcmlmdCkudG9Db250YWluKCdObyBkcmlmdCBkZXRlY3RlZCcpO1xuXG4gICAgLy8gR2V0IHRoZSBMYW1iZGEsIHdlIHdhbnQgdG8gbm93IG1ha2UgaXQgZHJpZnRcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpeHR1cmUuYXdzLmNsb3VkRm9ybWF0aW9uLnNlbmQoXG4gICAgICBuZXcgRGVzY3JpYmVTdGFja1Jlc291cmNlc0NvbW1hbmQoe1xuICAgICAgICBTdGFja05hbWU6IGZpeHR1cmUuZnVsbFN0YWNrTmFtZSgnZHJpZnRhYmxlJyksXG4gICAgICB9KSxcbiAgICApO1xuICAgIGNvbnN0IGxhbWJkYVJlc291cmNlID0gcmVzcG9uc2UuU3RhY2tSZXNvdXJjZXM/LmZpbmQoXG4gICAgICByZXNvdXJjZSA9PiByZXNvdXJjZS5SZXNvdXJjZVR5cGUgPT09ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nLFxuICAgICk7XG4gICAgaWYgKCFsYW1iZGFSZXNvdXJjZSB8fCAhbGFtYmRhUmVzb3VyY2UuUGh5c2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIExhbWJkYSBmdW5jdGlvbiBpbiBzdGFjayByZXNvdXJjZXMnKTtcbiAgICB9XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gbGFtYmRhUmVzb3VyY2UuUGh5c2ljYWxSZXNvdXJjZUlkO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBMYW1iZGEgZnVuY3Rpb24sIGludHJvZHVjaW5nIGRyaWZ0XG4gICAgYXdhaXQgZml4dHVyZS5hd3MubGFtYmRhLnNlbmQoXG4gICAgICBuZXcgVXBkYXRlRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tbWFuZCh7XG4gICAgICAgIEZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lLFxuICAgICAgICBEZXNjcmlwdGlvbjogJ0lcXCdtIHNsb3dseSBkcmlmdGluZyAoZHJpZnRpbmcgYXdheSknLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIFdhaXQgZm9yIHRoZSBzdGFjayB1cGRhdGUgdG8gY29tcGxldGVcbiAgICBhd2FpdCB3YWl0Rm9yTGFtYmRhVXBkYXRlQ29tcGxldGUoZml4dHVyZSwgZnVuY3Rpb25OYW1lKTtcblxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIGZpeHR1cmUuY2RrKFsnZHJpZnQnLCAnLS1mYWlsJywgZml4dHVyZS5mdWxsU3RhY2tOYW1lKCdkcmlmdGFibGUnKV0sIHsgdmVyYm9zZTogZmFsc2UgfSksXG4gICAgKS5yZWplY3RzLnRvVGhyb3coJ2V4aXRlZCB3aXRoIGVycm9yJyk7XG4gIH0pLFxuKTtcbiJdfQ==