UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

57 lines (48 loc) 2.03 kB
import { promises as fs } from 'fs'; import * as path from 'path'; import { integTest, withDefaultFixture } from '../../lib'; jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime integTest( 'test migrate deployment for app with localfile source in migrate.json', withDefaultFixture(async (fixture) => { const outputsFile = path.join(fixture.integTestDir, 'outputs', 'outputs.json'); await fs.mkdir(path.dirname(outputsFile), { recursive: true }); // Initial deploy await fixture.cdkDeploy('migrate-stack', { modEnv: { ORPHAN_TOPIC: '1' }, options: ['--outputs-file', outputsFile], }); const outputs = JSON.parse((await fs.readFile(outputsFile, { encoding: 'utf-8' })).toString()); const stackName = fixture.fullStackName('migrate-stack'); const queueName = outputs[stackName].QueueName; const queueUrl = outputs[stackName].QueueUrl; const queueLogicalId = outputs[stackName].QueueLogicalId; fixture.log(`Created queue ${queueUrl} in stack ${fixture.fullStackName}`); // Write the migrate file based on the ID from step one, then deploy the app with migrate const migrateFile = path.join(fixture.integTestDir, 'migrate.json'); await fs.writeFile( migrateFile, JSON.stringify({ Source: 'localfile', Resources: [ { ResourceType: 'AWS::SQS::Queue', LogicalResourceId: queueLogicalId, ResourceIdentifier: { QueueUrl: queueUrl }, }, ], }), { encoding: 'utf-8' }, ); await fixture.cdkDestroy('migrate-stack'); fixture.log(`Deleted stack ${fixture.fullStackName}, orphaning ${queueName}`); // Create new stack from existing queue try { fixture.log(`Deploying new stack ${fixture.fullStackName}, migrating ${queueName} into stack`); await fixture.cdkDeploy('migrate-stack'); } finally { // Cleanup await fixture.cdkDestroy('migrate-stack'); } }), );