@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
78 lines • 11.1 kB
JavaScript
;
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==