UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

80 lines 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const path = require("path"); const lib_1 = require("../../../lib"); jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime (0, lib_1.integTest)('cdk-assets uses profile when specified', (0, lib_1.withDefaultFixture)(async (fixture) => { const currentCreds = await fixture.aws.credentials(); await fixture.shell(['npm', 'init', '-y']); await fixture.shell(['npm', 'install', 'cdk-assets@latest']); const account = await fixture.aws.account(); const region = fixture.aws.region; const bucketName = `cdk-hnb659fds-assets-${account}-${region}`; // Write some asset files. Its important to have more than 1 because cdk-assets // code has some funky state mutations that happens on each asset publishing. const assetFile1 = 'testfile.txt'; const assetFile2 = 'testfile.txt'; await fs_1.promises.writeFile(path.join(fixture.integTestDir, assetFile1), 'some asset file'); await fs_1.promises.writeFile(path.join(fixture.integTestDir, assetFile2), 'some asset file'); // Write an asset JSON file to publish to the bootstrapped environment const assetsJson = { version: '38.0.1', files: { testfile1: { source: { path: assetFile1, packaging: 'file', }, destinations: { current: { region, assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`, bucketName, objectKey: `test-file1-${Date.now()}.json`, }, }, }, testfile2: { source: { path: assetFile2, packaging: 'file', }, destinations: { current: { region, assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`, bucketName, objectKey: `test-file2-${Date.now()}.json`, }, }, }, }, }; // create a profile with our current credentials. // // if you're wondering why can't we do the reverse (i.e write a bogus profile and assert a failure), // its because when cdk-assets discovers the current account, it DOES consider the profile. // writing a bogus profile would fail this operation and we won't be able to reach the code // we're trying to test. const credentialsFile = path.join(fixture.integTestDir, 'aws.credentials'); const profile = 'cdk-assets'; // this kind sucks but its what it is given we need to write a working profile await fs_1.promises.writeFile(credentialsFile, `[${profile}] aws_access_key_id=${currentCreds.accessKeyId} aws_secret_access_key=${currentCreds.secretAccessKey} aws_session_token=${currentCreds.sessionToken}`); await fs_1.promises.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2)); await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', 'publish', '--profile', profile], { modEnv: { ...fixture.cdkShellEnv(), AWS_SHARED_CREDENTIALS_FILE: credentialsFile, // remove the default creds so that if the command doesn't use // the profile, it will fail with "Could not load credentials from any providers" AWS_ACCESS_KEY_ID: '', AWS_SECRET_ACCESS_KEY: '', AWS_SESSION_TOKEN: '', }, }); })); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkJBQW9DO0FBQ3BDLDZCQUE2QjtBQUM3QixzQ0FBNkQ7QUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUFDLHdDQUF3QyxFQUFFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVyRCxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFFN0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLHdCQUF3QixPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7SUFFL0QsK0VBQStFO0lBQy9FLDZFQUE2RTtJQUM3RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDbEMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ2xDLE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNuRixNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFbkYsc0VBQXNFO0lBQ3RFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLEtBQUssRUFBRTtZQUNMLFNBQVMsRUFBRTtnQkFDVCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osT0FBTyxFQUFFO3dCQUNQLE1BQU07d0JBQ04sYUFBYSxFQUFFLCtCQUErQixPQUFPLDRDQUE0QyxPQUFPLElBQUksTUFBTSxFQUFFO3dCQUNwSCxVQUFVO3dCQUNWLFNBQVMsRUFBRSxjQUFjLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTztxQkFDM0M7aUJBQ0Y7YUFDRjtZQUNELFNBQVMsRUFBRTtnQkFDVCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osT0FBTyxFQUFFO3dCQUNQLE1BQU07d0JBQ04sYUFBYSxFQUFFLCtCQUErQixPQUFPLDRDQUE0QyxPQUFPLElBQUksTUFBTSxFQUFFO3dCQUNwSCxVQUFVO3dCQUNWLFNBQVMsRUFBRSxjQUFjLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTztxQkFDM0M7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLGlEQUFpRDtJQUNqRCxFQUFFO0lBQ0Ysb0dBQW9HO0lBQ3BHLDJGQUEyRjtJQUMzRiwyRkFBMkY7SUFDM0Ysd0JBQXdCO0lBQ3hCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQztJQUU3Qiw4RUFBOEU7SUFDOUUsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxJQUFJLE9BQU87b0JBQzdCLFlBQVksQ0FBQyxXQUFXO3dCQUNwQixZQUFZLENBQUMsZUFBZTtvQkFDaEMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFFL0MsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUNuRyxNQUFNLEVBQUU7WUFDTixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDeEIsMkJBQTJCLEVBQUUsZUFBZTtZQUU1Qyw4REFBOEQ7WUFDOUQsaUZBQWlGO1lBQ2pGLGlCQUFpQixFQUFFLEVBQUU7WUFDckIscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixpQkFBaUIsRUFBRSxFQUFFO1NBRXRCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5qZXN0LnNldFRpbWVvdXQoMiAqIDYwICogNjBfMDAwKTsgLy8gSW5jbHVkZXMgdGhlIHRpbWUgdG8gYWNxdWlyZSBsb2Nrcywgd29yc3QtY2FzZSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZVxuXG5pbnRlZ1Rlc3QoJ2Nkay1hc3NldHMgdXNlcyBwcm9maWxlIHdoZW4gc3BlY2lmaWVkJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRDcmVkcyA9IGF3YWl0IGZpeHR1cmUuYXdzLmNyZWRlbnRpYWxzKCk7XG5cbiAgYXdhaXQgZml4dHVyZS5zaGVsbChbJ25wbScsICdpbml0JywgJy15J10pO1xuICBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnbnBtJywgJ2luc3RhbGwnLCAnY2RrLWFzc2V0c0BsYXRlc3QnXSk7XG5cbiAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGZpeHR1cmUuYXdzLmFjY291bnQoKTtcbiAgY29uc3QgcmVnaW9uID0gZml4dHVyZS5hd3MucmVnaW9uO1xuICBjb25zdCBidWNrZXROYW1lID0gYGNkay1obmI2NTlmZHMtYXNzZXRzLSR7YWNjb3VudH0tJHtyZWdpb259YDtcblxuICAvLyBXcml0ZSBzb21lIGFzc2V0IGZpbGVzLiBJdHMgaW1wb3J0YW50IHRvIGhhdmUgbW9yZSB0aGFuIDEgYmVjYXVzZSBjZGstYXNzZXRzXG4gIC8vIGNvZGUgaGFzIHNvbWUgZnVua3kgc3RhdGUgbXV0YXRpb25zIHRoYXQgaGFwcGVucyBvbiBlYWNoIGFzc2V0IHB1Ymxpc2hpbmcuXG4gIGNvbnN0IGFzc2V0RmlsZTEgPSAndGVzdGZpbGUudHh0JztcbiAgY29uc3QgYXNzZXRGaWxlMiA9ICd0ZXN0ZmlsZS50eHQnO1xuICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCBhc3NldEZpbGUxKSwgJ3NvbWUgYXNzZXQgZmlsZScpO1xuICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCBhc3NldEZpbGUyKSwgJ3NvbWUgYXNzZXQgZmlsZScpO1xuXG4gIC8vIFdyaXRlIGFuIGFzc2V0IEpTT04gZmlsZSB0byBwdWJsaXNoIHRvIHRoZSBib290c3RyYXBwZWQgZW52aXJvbm1lbnRcbiAgY29uc3QgYXNzZXRzSnNvbiA9IHtcbiAgICB2ZXJzaW9uOiAnMzguMC4xJyxcbiAgICBmaWxlczoge1xuICAgICAgdGVzdGZpbGUxOiB7XG4gICAgICAgIHNvdXJjZToge1xuICAgICAgICAgIHBhdGg6IGFzc2V0RmlsZTEsXG4gICAgICAgICAgcGFja2FnaW5nOiAnZmlsZScsXG4gICAgICAgIH0sXG4gICAgICAgIGRlc3RpbmF0aW9uczoge1xuICAgICAgICAgIGN1cnJlbnQ6IHtcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIGFzc3VtZVJvbGVBcm46IGBhcm46XFwke0FXUzo6UGFydGl0aW9ufTppYW06OiR7YWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWZpbGUtcHVibGlzaGluZy1yb2xlLSR7YWNjb3VudH0tJHtyZWdpb259YCxcbiAgICAgICAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBvYmplY3RLZXk6IGB0ZXN0LWZpbGUxLSR7RGF0ZS5ub3coKX0uanNvbmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0ZXN0ZmlsZTI6IHtcbiAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgcGF0aDogYXNzZXRGaWxlMixcbiAgICAgICAgICBwYWNrYWdpbmc6ICdmaWxlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzdGluYXRpb25zOiB7XG4gICAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgYXNzdW1lUm9sZUFybjogYGFybjpcXCR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHthY2NvdW50fTpyb2xlL2Nkay1obmI2NTlmZHMtZmlsZS1wdWJsaXNoaW5nLXJvbGUtJHthY2NvdW50fS0ke3JlZ2lvbn1gLFxuICAgICAgICAgICAgYnVja2V0TmFtZSxcbiAgICAgICAgICAgIG9iamVjdEtleTogYHRlc3QtZmlsZTItJHtEYXRlLm5vdygpfS5qc29uYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIC8vIGNyZWF0ZSBhIHByb2ZpbGUgd2l0aCBvdXIgY3VycmVudCBjcmVkZW50aWFscy5cbiAgLy9cbiAgLy8gaWYgeW91J3JlIHdvbmRlcmluZyB3aHkgY2FuJ3Qgd2UgZG8gdGhlIHJldmVyc2UgKGkuZSB3cml0ZSBhIGJvZ3VzIHByb2ZpbGUgYW5kIGFzc2VydCBhIGZhaWx1cmUpLFxuICAvLyBpdHMgYmVjYXVzZSB3aGVuIGNkay1hc3NldHMgZGlzY292ZXJzIHRoZSBjdXJyZW50IGFjY291bnQsIGl0IERPRVMgY29uc2lkZXIgdGhlIHByb2ZpbGUuXG4gIC8vIHdyaXRpbmcgYSBib2d1cyBwcm9maWxlIHdvdWxkIGZhaWwgdGhpcyBvcGVyYXRpb24gYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gcmVhY2ggdGhlIGNvZGVcbiAgLy8gd2UncmUgdHJ5aW5nIHRvIHRlc3QuXG4gIGNvbnN0IGNyZWRlbnRpYWxzRmlsZSA9IHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2F3cy5jcmVkZW50aWFscycpO1xuICBjb25zdCBwcm9maWxlID0gJ2Nkay1hc3NldHMnO1xuXG4gIC8vIHRoaXMga2luZCBzdWNrcyBidXQgaXRzIHdoYXQgaXQgaXMgZ2l2ZW4gd2UgbmVlZCB0byB3cml0ZSBhIHdvcmtpbmcgcHJvZmlsZVxuICBhd2FpdCBmcy53cml0ZUZpbGUoY3JlZGVudGlhbHNGaWxlLCBgWyR7cHJvZmlsZX1dXG5hd3NfYWNjZXNzX2tleV9pZD0ke2N1cnJlbnRDcmVkcy5hY2Nlc3NLZXlJZH1cbmF3c19zZWNyZXRfYWNjZXNzX2tleT0ke2N1cnJlbnRDcmVkcy5zZWNyZXRBY2Nlc3NLZXl9XG5hd3Nfc2Vzc2lvbl90b2tlbj0ke2N1cnJlbnRDcmVkcy5zZXNzaW9uVG9rZW59YCk7XG5cbiAgYXdhaXQgZnMud3JpdGVGaWxlKHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgJ2Fzc2V0cy5qc29uJyksIEpTT04uc3RyaW5naWZ5KGFzc2V0c0pzb24sIHVuZGVmaW5lZCwgMikpO1xuICBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnbnB4JywgJ2Nkay1hc3NldHMnLCAnLS1wYXRoJywgJ2Fzc2V0cy5qc29uJywgJ3B1Ymxpc2gnLCAnLS1wcm9maWxlJywgcHJvZmlsZV0sIHtcbiAgICBtb2RFbnY6IHtcbiAgICAgIC4uLmZpeHR1cmUuY2RrU2hlbGxFbnYoKSxcbiAgICAgIEFXU19TSEFSRURfQ1JFREVOVElBTFNfRklMRTogY3JlZGVudGlhbHNGaWxlLFxuXG4gICAgICAvLyByZW1vdmUgdGhlIGRlZmF1bHQgY3JlZHMgc28gdGhhdCBpZiB0aGUgY29tbWFuZCBkb2Vzbid0IHVzZVxuICAgICAgLy8gdGhlIHByb2ZpbGUsIGl0IHdpbGwgZmFpbCB3aXRoIFwiQ291bGQgbm90IGxvYWQgY3JlZGVudGlhbHMgZnJvbSBhbnkgcHJvdmlkZXJzXCJcbiAgICAgIEFXU19BQ0NFU1NfS0VZX0lEOiAnJyxcbiAgICAgIEFXU19TRUNSRVRfQUNDRVNTX0tFWTogJycsXG4gICAgICBBV1NfU0VTU0lPTl9UT0tFTjogJycsXG5cbiAgICB9LFxuICB9KTtcbn0pLFxuKTtcbiJdfQ==