UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

60 lines (51 loc) 2.12 kB
import { promises as fs } from 'fs'; import * as path from 'path'; import { DescribeStacksCommand } from '@aws-sdk/client-cloudformation'; import { DescribeServicesCommand } from '@aws-sdk/client-ecs'; import { integTest, withDefaultFixture } from '../../lib'; jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime integTest('hotswap ECS deployment respects properties override', withDefaultFixture(async (fixture) => { // Update the CDK context with the new ECS properties let ecsMinimumHealthyPercent = 100; let ecsMaximumHealthyPercent = 200; let cdkJson = JSON.parse(await fs.readFile(path.join(fixture.integTestDir, 'cdk.json'), 'utf8')); cdkJson = { ...cdkJson, hotswap: { ecs: { minimumHealthyPercent: ecsMinimumHealthyPercent, maximumHealthyPercent: ecsMaximumHealthyPercent, }, }, }; await fs.writeFile(path.join(fixture.integTestDir, 'cdk.json'), JSON.stringify(cdkJson)); // GIVEN const stackArn = await fixture.cdkDeploy('ecs-hotswap', { captureStderr: false, }); // WHEN await fixture.cdkDeploy('ecs-hotswap', { options: [ '--hotswap', ], modEnv: { DYNAMIC_ECS_PROPERTY_VALUE: 'new value', }, }); const describeStacksResponse = await fixture.aws.cloudFormation.send( new DescribeStacksCommand({ StackName: stackArn, }), ); const clusterName = describeStacksResponse.Stacks?.[0].Outputs?.find(output => output.OutputKey == 'ClusterName')?.OutputValue!; const serviceName = describeStacksResponse.Stacks?.[0].Outputs?.find(output => output.OutputKey == 'ServiceName')?.OutputValue!; // THEN const describeServicesResponse = await fixture.aws.ecs.send( new DescribeServicesCommand({ cluster: clusterName, services: [serviceName], }), ); expect(describeServicesResponse.services?.[0].deploymentConfiguration?.minimumHealthyPercent).toEqual(ecsMinimumHealthyPercent); expect(describeServicesResponse.services?.[0].deploymentConfiguration?.maximumPercent).toEqual(ecsMaximumHealthyPercent); }));