UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

53 lines (43 loc) 2.38 kB
import { promises as fs } from 'fs'; import * as os from 'os'; 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( 'generating and loading assembly', withDefaultFixture(async (fixture) => { const asmOutputDir = `${fixture.integTestDir}-cdk-integ-asm`; await fixture.shell(['rm', '-rf', asmOutputDir]); // Synthesize a Cloud Assembly tothe default directory (cdk.out) and a specific directory. await fixture.cdk(['synth']); await fixture.cdk(['synth', '--output', asmOutputDir]); // cdk.out in the current directory and the indicated --output should be the same await fixture.shell(['diff', 'cdk.out', asmOutputDir]); // Check that we can 'ls' the synthesized asm. // Change to some random directory to make sure we're not accidentally loading cdk.json const list = await fixture.cdk(['--app', asmOutputDir, 'ls'], { cwd: os.tmpdir() }); // Same stacks we know are in the app expect(list).toContain(`${fixture.stackNamePrefix}-lambda`); expect(list).toContain(`${fixture.stackNamePrefix}-test-1`); expect(list).toContain(`${fixture.stackNamePrefix}-test-2`); // Check that we can use '.' and just synth ,the generated asm const stackTemplate = await fixture.cdk(['--app', '.', 'synth', fixture.fullStackName('test-2')], { cwd: asmOutputDir, }); expect(stackTemplate).toContain('topic152D84A37'); // Deploy a Lambda from the copied asm await fixture.cdkDeploy('lambda', { options: ['-a', '.'], cwd: asmOutputDir }); // Remove (rename) the original custom docker file that was used during synth. // this verifies that the assemly has a copy of it and that the manifest uses // relative paths to reference to it. const customDockerFile = path.join(fixture.integTestDir, 'docker', 'Dockerfile.Custom'); await fs.rename(customDockerFile, `${customDockerFile}~`); try { // deploy a docker image with custom file without synth (uses assets) await fixture.cdkDeploy('docker-with-custom-file', { options: ['-a', '.'], cwd: asmOutputDir }); } finally { // Rename back to restore fixture to original state await fs.rename(`${customDockerFile}~`, customDockerFile); } }), );