UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

78 lines 11.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const path = require("path"); const lib_1 = require("../../../lib"); (0, lib_1.integTest)('cdk-assets uses profile when specified', (0, lib_1.withDefaultFixture)(async (fixture) => { const currentCreds = await fixture.aws.credentials(); await fixture.cdkAssets.makeCliAvailable(); 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(['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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkJBQW9DO0FBQ3BDLDZCQUE2QjtBQUM3QixzQ0FBNkQ7QUFFN0QsSUFBQSxlQUFTLEVBQUMsd0NBQXdDLEVBQUUsSUFBQSx3QkFBa0IsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDdkYsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRXJELE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FBRyx3QkFBd0IsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO0lBRS9ELCtFQUErRTtJQUMvRSw2RUFBNkU7SUFDN0UsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQztJQUNsQyxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDbkYsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBRW5GLHNFQUFzRTtJQUN0RSxNQUFNLFVBQVUsR0FBRztRQUNqQixPQUFPLEVBQUUsUUFBUTtRQUNqQixLQUFLLEVBQUU7WUFDTCxTQUFTLEVBQUU7Z0JBQ1QsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxVQUFVO29CQUNoQixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLE9BQU8sRUFBRTt3QkFDUCxNQUFNO3dCQUNOLGFBQWEsRUFBRSwrQkFBK0IsT0FBTyw0Q0FBNEMsT0FBTyxJQUFJLE1BQU0sRUFBRTt3QkFDcEgsVUFBVTt3QkFDVixTQUFTLEVBQUUsY0FBYyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU87cUJBQzNDO2lCQUNGO2FBQ0Y7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxVQUFVO29CQUNoQixTQUFTLEVBQUUsTUFBTTtpQkFDbEI7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLE9BQU8sRUFBRTt3QkFDUCxNQUFNO3dCQUNOLGFBQWEsRUFBRSwrQkFBK0IsT0FBTyw0Q0FBNEMsT0FBTyxJQUFJLE1BQU0sRUFBRTt3QkFDcEgsVUFBVTt3QkFDVixTQUFTLEVBQUUsY0FBYyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU87cUJBQzNDO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7SUFFRixpREFBaUQ7SUFDakQsRUFBRTtJQUNGLG9HQUFvRztJQUNwRywyRkFBMkY7SUFDM0YsMkZBQTJGO0lBQzNGLHdCQUF3QjtJQUN4QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMzRSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUM7SUFFN0IsOEVBQThFO0lBQzlFLE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxPQUFPO29CQUM3QixZQUFZLENBQUMsV0FBVzt3QkFDcEIsWUFBWSxDQUFDLGVBQWU7b0JBQ2hDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0csTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUM1RixNQUFNLEVBQUU7WUFDTixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDeEIsMkJBQTJCLEVBQUUsZUFBZTtZQUU1Qyw4REFBOEQ7WUFDOUQsaUZBQWlGO1lBQ2pGLGlCQUFpQixFQUFFLEVBQUU7WUFDckIscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixpQkFBaUIsRUFBRSxFQUFFO1NBRXRCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5pbnRlZ1Rlc3QoJ2Nkay1hc3NldHMgdXNlcyBwcm9maWxlIHdoZW4gc3BlY2lmaWVkJywgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRDcmVkcyA9IGF3YWl0IGZpeHR1cmUuYXdzLmNyZWRlbnRpYWxzKCk7XG5cbiAgYXdhaXQgZml4dHVyZS5jZGtBc3NldHMubWFrZUNsaUF2YWlsYWJsZSgpO1xuXG4gIGNvbnN0IGFjY291bnQgPSBhd2FpdCBmaXh0dXJlLmF3cy5hY2NvdW50KCk7XG4gIGNvbnN0IHJlZ2lvbiA9IGZpeHR1cmUuYXdzLnJlZ2lvbjtcbiAgY29uc3QgYnVja2V0TmFtZSA9IGBjZGstaG5iNjU5ZmRzLWFzc2V0cy0ke2FjY291bnR9LSR7cmVnaW9ufWA7XG5cbiAgLy8gV3JpdGUgc29tZSBhc3NldCBmaWxlcy4gSXRzIGltcG9ydGFudCB0byBoYXZlIG1vcmUgdGhhbiAxIGJlY2F1c2UgY2RrLWFzc2V0c1xuICAvLyBjb2RlIGhhcyBzb21lIGZ1bmt5IHN0YXRlIG11dGF0aW9ucyB0aGF0IGhhcHBlbnMgb24gZWFjaCBhc3NldCBwdWJsaXNoaW5nLlxuICBjb25zdCBhc3NldEZpbGUxID0gJ3Rlc3RmaWxlLnR4dCc7XG4gIGNvbnN0IGFzc2V0RmlsZTIgPSAndGVzdGZpbGUudHh0JztcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgYXNzZXRGaWxlMSksICdzb21lIGFzc2V0IGZpbGUnKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHBhdGguam9pbihmaXh0dXJlLmludGVnVGVzdERpciwgYXNzZXRGaWxlMiksICdzb21lIGFzc2V0IGZpbGUnKTtcblxuICAvLyBXcml0ZSBhbiBhc3NldCBKU09OIGZpbGUgdG8gcHVibGlzaCB0byB0aGUgYm9vdHN0cmFwcGVkIGVudmlyb25tZW50XG4gIGNvbnN0IGFzc2V0c0pzb24gPSB7XG4gICAgdmVyc2lvbjogJzM4LjAuMScsXG4gICAgZmlsZXM6IHtcbiAgICAgIHRlc3RmaWxlMToge1xuICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICBwYXRoOiBhc3NldEZpbGUxLFxuICAgICAgICAgIHBhY2thZ2luZzogJ2ZpbGUnLFxuICAgICAgICB9LFxuICAgICAgICBkZXN0aW5hdGlvbnM6IHtcbiAgICAgICAgICBjdXJyZW50OiB7XG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBhc3N1bWVSb2xlQXJuOiBgYXJuOlxcJHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1maWxlLXB1Ymxpc2hpbmctcm9sZS0ke2FjY291bnR9LSR7cmVnaW9ufWAsXG4gICAgICAgICAgICBidWNrZXROYW1lLFxuICAgICAgICAgICAgb2JqZWN0S2V5OiBgdGVzdC1maWxlMS0ke0RhdGUubm93KCl9Lmpzb25gLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdGVzdGZpbGUyOiB7XG4gICAgICAgIHNvdXJjZToge1xuICAgICAgICAgIHBhdGg6IGFzc2V0RmlsZTIsXG4gICAgICAgICAgcGFja2FnaW5nOiAnZmlsZScsXG4gICAgICAgIH0sXG4gICAgICAgIGRlc3RpbmF0aW9uczoge1xuICAgICAgICAgIGN1cnJlbnQ6IHtcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIGFzc3VtZVJvbGVBcm46IGBhcm46XFwke0FXUzo6UGFydGl0aW9ufTppYW06OiR7YWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWZpbGUtcHVibGlzaGluZy1yb2xlLSR7YWNjb3VudH0tJHtyZWdpb259YCxcbiAgICAgICAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBvYmplY3RLZXk6IGB0ZXN0LWZpbGUyLSR7RGF0ZS5ub3coKX0uanNvbmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICAvLyBjcmVhdGUgYSBwcm9maWxlIHdpdGggb3VyIGN1cnJlbnQgY3JlZGVudGlhbHMuXG4gIC8vXG4gIC8vIGlmIHlvdSdyZSB3b25kZXJpbmcgd2h5IGNhbid0IHdlIGRvIHRoZSByZXZlcnNlIChpLmUgd3JpdGUgYSBib2d1cyBwcm9maWxlIGFuZCBhc3NlcnQgYSBmYWlsdXJlKSxcbiAgLy8gaXRzIGJlY2F1c2Ugd2hlbiBjZGstYXNzZXRzIGRpc2NvdmVycyB0aGUgY3VycmVudCBhY2NvdW50LCBpdCBET0VTIGNvbnNpZGVyIHRoZSBwcm9maWxlLlxuICAvLyB3cml0aW5nIGEgYm9ndXMgcHJvZmlsZSB3b3VsZCBmYWlsIHRoaXMgb3BlcmF0aW9uIGFuZCB3ZSB3b24ndCBiZSBhYmxlIHRvIHJlYWNoIHRoZSBjb2RlXG4gIC8vIHdlJ3JlIHRyeWluZyB0byB0ZXN0LlxuICBjb25zdCBjcmVkZW50aWFsc0ZpbGUgPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdhd3MuY3JlZGVudGlhbHMnKTtcbiAgY29uc3QgcHJvZmlsZSA9ICdjZGstYXNzZXRzJztcblxuICAvLyB0aGlzIGtpbmQgc3Vja3MgYnV0IGl0cyB3aGF0IGl0IGlzIGdpdmVuIHdlIG5lZWQgdG8gd3JpdGUgYSB3b3JraW5nIHByb2ZpbGVcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGNyZWRlbnRpYWxzRmlsZSwgYFske3Byb2ZpbGV9XVxuYXdzX2FjY2Vzc19rZXlfaWQ9JHtjdXJyZW50Q3JlZHMuYWNjZXNzS2V5SWR9XG5hd3Nfc2VjcmV0X2FjY2Vzc19rZXk9JHtjdXJyZW50Q3JlZHMuc2VjcmV0QWNjZXNzS2V5fVxuYXdzX3Nlc3Npb25fdG9rZW49JHtjdXJyZW50Q3JlZHMuc2Vzc2lvblRva2VufWApO1xuXG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdhc3NldHMuanNvbicpLCBKU09OLnN0cmluZ2lmeShhc3NldHNKc29uLCB1bmRlZmluZWQsIDIpKTtcbiAgYXdhaXQgZml4dHVyZS5zaGVsbChbJ2Nkay1hc3NldHMnLCAnLS1wYXRoJywgJ2Fzc2V0cy5qc29uJywgJ3B1Ymxpc2gnLCAnLS1wcm9maWxlJywgcHJvZmlsZV0sIHtcbiAgICBtb2RFbnY6IHtcbiAgICAgIC4uLmZpeHR1cmUuY2RrU2hlbGxFbnYoKSxcbiAgICAgIEFXU19TSEFSRURfQ1JFREVOVElBTFNfRklMRTogY3JlZGVudGlhbHNGaWxlLFxuXG4gICAgICAvLyByZW1vdmUgdGhlIGRlZmF1bHQgY3JlZHMgc28gdGhhdCBpZiB0aGUgY29tbWFuZCBkb2Vzbid0IHVzZVxuICAgICAgLy8gdGhlIHByb2ZpbGUsIGl0IHdpbGwgZmFpbCB3aXRoIFwiQ291bGQgbm90IGxvYWQgY3JlZGVudGlhbHMgZnJvbSBhbnkgcHJvdmlkZXJzXCJcbiAgICAgIEFXU19BQ0NFU1NfS0VZX0lEOiAnJyxcbiAgICAgIEFXU19TRUNSRVRfQUNDRVNTX0tFWTogJycsXG4gICAgICBBV1NfU0VTU0lPTl9UT0tFTjogJycsXG5cbiAgICB9LFxuICB9KTtcbn0pLFxuKTtcbiJdfQ==