@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
80 lines • 12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const path = require("path");
const lib_1 = require("../../../lib");
jest.setTimeout(2 * 60 * 60000); // 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkJBQW9DO0FBQ3BDLDZCQUE2QjtBQUM3QixzQ0FBNkQ7QUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUFDLHdDQUF3QyxFQUFFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBRXJGLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVyRCxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFFN0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2xDLE1BQU0sVUFBVSxHQUFHLHdCQUF3QixPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7SUFFL0QsK0VBQStFO0lBQy9FLDZFQUE2RTtJQUM3RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDbEMsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ2xDLE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNuRixNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFbkYsc0VBQXNFO0lBQ3RFLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLE9BQU8sRUFBRSxRQUFRO1FBQ2pCLEtBQUssRUFBRTtZQUNMLFNBQVMsRUFBRTtnQkFDVCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osT0FBTyxFQUFFO3dCQUNQLE1BQU07d0JBQ04sYUFBYSxFQUFFLCtCQUErQixPQUFPLDRDQUE0QyxPQUFPLElBQUksTUFBTSxFQUFFO3dCQUNwSCxVQUFVO3dCQUNWLFNBQVMsRUFBRSxjQUFjLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTztxQkFDM0M7aUJBQ0Y7YUFDRjtZQUNELFNBQVMsRUFBRTtnQkFDVCxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFNBQVMsRUFBRSxNQUFNO2lCQUNsQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osT0FBTyxFQUFFO3dCQUNQLE1BQU07d0JBQ04sYUFBYSxFQUFFLCtCQUErQixPQUFPLDRDQUE0QyxPQUFPLElBQUksTUFBTSxFQUFFO3dCQUNwSCxVQUFVO3dCQUNWLFNBQVMsRUFBRSxjQUFjLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTztxQkFDM0M7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUVGLGlEQUFpRDtJQUNqRCxFQUFFO0lBQ0Ysb0dBQW9HO0lBQ3BHLDJGQUEyRjtJQUMzRiwyRkFBMkY7SUFDM0Ysd0JBQXdCO0lBQ3hCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQztJQUU3Qiw4RUFBOEU7SUFDOUUsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxJQUFJLE9BQU87b0JBQy9CLFlBQVksQ0FBQyxXQUFXO3dCQUNwQixZQUFZLENBQUMsZUFBZTtvQkFDaEMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFFN0MsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUNuRyxNQUFNLEVBQUU7WUFDTixHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDeEIsMkJBQTJCLEVBQUUsZUFBZTtZQUU1Qyw4REFBOEQ7WUFDOUQsaUZBQWlGO1lBQ2pGLGlCQUFpQixFQUFFLEVBQUU7WUFDckIscUJBQXFCLEVBQUUsRUFBRTtZQUN6QixpQkFBaUIsRUFBRSxFQUFFO1NBRXRCO0tBQ0YsQ0FBQyxDQUFDO0FBRUwsQ0FBQyxDQUFDLENBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgaW50ZWdUZXN0LCB3aXRoRGVmYXVsdEZpeHR1cmUgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5qZXN0LnNldFRpbWVvdXQoMiAqIDYwICogNjBfMDAwKTsgLy8gSW5jbHVkZXMgdGhlIHRpbWUgdG8gYWNxdWlyZSBsb2Nrcywgd29yc3QtY2FzZSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZVxuXG5pbnRlZ1Rlc3QoYGNkay1hc3NldHMgdXNlcyBwcm9maWxlIHdoZW4gc3BlY2lmaWVkYCwgd2l0aERlZmF1bHRGaXh0dXJlKGFzeW5jIChmaXh0dXJlKSA9PiB7XG5cbiAgICBjb25zdCBjdXJyZW50Q3JlZHMgPSBhd2FpdCBmaXh0dXJlLmF3cy5jcmVkZW50aWFscygpO1xuXG4gICAgYXdhaXQgZml4dHVyZS5zaGVsbChbJ25wbScsICdpbml0JywgJy15J10pO1xuICAgIGF3YWl0IGZpeHR1cmUuc2hlbGwoWyducG0nLCAnaW5zdGFsbCcsIGBjZGstYXNzZXRzQGxhdGVzdGBdKTtcblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBmaXh0dXJlLmF3cy5hY2NvdW50KCk7XG4gICAgY29uc3QgcmVnaW9uID0gZml4dHVyZS5hd3MucmVnaW9uO1xuICAgIGNvbnN0IGJ1Y2tldE5hbWUgPSBgY2RrLWhuYjY1OWZkcy1hc3NldHMtJHthY2NvdW50fS0ke3JlZ2lvbn1gO1xuXG4gICAgLy8gV3JpdGUgc29tZSBhc3NldCBmaWxlcy4gSXRzIGltcG9ydGFudCB0byBoYXZlIG1vcmUgdGhhbiAxIGJlY2F1c2UgY2RrLWFzc2V0c1xuICAgIC8vIGNvZGUgaGFzIHNvbWUgZnVua3kgc3RhdGUgbXV0YXRpb25zIHRoYXQgaGFwcGVucyBvbiBlYWNoIGFzc2V0IHB1Ymxpc2hpbmcuXG4gICAgY29uc3QgYXNzZXRGaWxlMSA9ICd0ZXN0ZmlsZS50eHQnO1xuICAgIGNvbnN0IGFzc2V0RmlsZTIgPSAndGVzdGZpbGUudHh0JztcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCBhc3NldEZpbGUxKSwgJ3NvbWUgYXNzZXQgZmlsZScpO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsIGFzc2V0RmlsZTIpLCAnc29tZSBhc3NldCBmaWxlJyk7XG5cbiAgICAvLyBXcml0ZSBhbiBhc3NldCBKU09OIGZpbGUgdG8gcHVibGlzaCB0byB0aGUgYm9vdHN0cmFwcGVkIGVudmlyb25tZW50XG4gICAgY29uc3QgYXNzZXRzSnNvbiA9IHtcbiAgICAgIHZlcnNpb246IFwiMzguMC4xXCIsXG4gICAgICBmaWxlczoge1xuICAgICAgICB0ZXN0ZmlsZTE6IHtcbiAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgIHBhdGg6IGFzc2V0RmlsZTEsXG4gICAgICAgICAgICBwYWNrYWdpbmc6ICdmaWxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlc3RpbmF0aW9uczoge1xuICAgICAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICAgIGFzc3VtZVJvbGVBcm46IGBhcm46XFwke0FXUzo6UGFydGl0aW9ufTppYW06OiR7YWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWZpbGUtcHVibGlzaGluZy1yb2xlLSR7YWNjb3VudH0tJHtyZWdpb259YCxcbiAgICAgICAgICAgICAgYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgb2JqZWN0S2V5OiBgdGVzdC1maWxlMS0ke0RhdGUubm93KCl9Lmpzb25gLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdGVzdGZpbGUyOiB7XG4gICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICBwYXRoOiBhc3NldEZpbGUyLFxuICAgICAgICAgICAgcGFja2FnaW5nOiAnZmlsZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXN0aW5hdGlvbnM6IHtcbiAgICAgICAgICAgIGN1cnJlbnQ6IHtcbiAgICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgICBhc3N1bWVSb2xlQXJuOiBgYXJuOlxcJHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1maWxlLXB1Ymxpc2hpbmctcm9sZS0ke2FjY291bnR9LSR7cmVnaW9ufWAsXG4gICAgICAgICAgICAgIGJ1Y2tldE5hbWUsXG4gICAgICAgICAgICAgIG9iamVjdEtleTogYHRlc3QtZmlsZTItJHtEYXRlLm5vdygpfS5qc29uYCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gY3JlYXRlIGEgcHJvZmlsZSB3aXRoIG91ciBjdXJyZW50IGNyZWRlbnRpYWxzLlxuICAgIC8vXG4gICAgLy8gaWYgeW91J3JlIHdvbmRlcmluZyB3aHkgY2FuJ3Qgd2UgZG8gdGhlIHJldmVyc2UgKGkuZSB3cml0ZSBhIGJvZ3VzIHByb2ZpbGUgYW5kIGFzc2VydCBhIGZhaWx1cmUpLFxuICAgIC8vIGl0cyBiZWNhdXNlIHdoZW4gY2RrLWFzc2V0cyBkaXNjb3ZlcnMgdGhlIGN1cnJlbnQgYWNjb3VudCwgaXQgRE9FUyBjb25zaWRlciB0aGUgcHJvZmlsZS5cbiAgICAvLyB3cml0aW5nIGEgYm9ndXMgcHJvZmlsZSB3b3VsZCBmYWlsIHRoaXMgb3BlcmF0aW9uIGFuZCB3ZSB3b24ndCBiZSBhYmxlIHRvIHJlYWNoIHRoZSBjb2RlXG4gICAgLy8gd2UncmUgdHJ5aW5nIHRvIHRlc3QuXG4gICAgY29uc3QgY3JlZGVudGlhbHNGaWxlID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnYXdzLmNyZWRlbnRpYWxzJyk7XG4gICAgY29uc3QgcHJvZmlsZSA9ICdjZGstYXNzZXRzJztcblxuICAgIC8vIHRoaXMga2luZCBzdWNrcyBidXQgaXRzIHdoYXQgaXQgaXMgZ2l2ZW4gd2UgbmVlZCB0byB3cml0ZSBhIHdvcmtpbmcgcHJvZmlsZVxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShjcmVkZW50aWFsc0ZpbGUsIGBbJHtwcm9maWxlfV1cbmF3c19hY2Nlc3Nfa2V5X2lkPSR7Y3VycmVudENyZWRzLmFjY2Vzc0tleUlkfVxuYXdzX3NlY3JldF9hY2Nlc3Nfa2V5PSR7Y3VycmVudENyZWRzLnNlY3JldEFjY2Vzc0tleX1cbmF3c19zZXNzaW9uX3Rva2VuPSR7Y3VycmVudENyZWRzLnNlc3Npb25Ub2tlbn1gKTtcblxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdhc3NldHMuanNvbicpLCBKU09OLnN0cmluZ2lmeShhc3NldHNKc29uLCB1bmRlZmluZWQsIDIpKTtcbiAgICBhd2FpdCBmaXh0dXJlLnNoZWxsKFsnbnB4JywgJ2Nkay1hc3NldHMnLCAnLS1wYXRoJywgJ2Fzc2V0cy5qc29uJywgJ3B1Ymxpc2gnLCAnLS1wcm9maWxlJywgcHJvZmlsZV0sIHtcbiAgICAgIG1vZEVudjoge1xuICAgICAgICAuLi5maXh0dXJlLmNka1NoZWxsRW52KCksXG4gICAgICAgIEFXU19TSEFSRURfQ1JFREVOVElBTFNfRklMRTogY3JlZGVudGlhbHNGaWxlLFxuXG4gICAgICAgIC8vIHJlbW92ZSB0aGUgZGVmYXVsdCBjcmVkcyBzbyB0aGF0IGlmIHRoZSBjb21tYW5kIGRvZXNuJ3QgdXNlXG4gICAgICAgIC8vIHRoZSBwcm9maWxlLCBpdCB3aWxsIGZhaWwgd2l0aCBcIkNvdWxkIG5vdCBsb2FkIGNyZWRlbnRpYWxzIGZyb20gYW55IHByb3ZpZGVyc1wiXG4gICAgICAgIEFXU19BQ0NFU1NfS0VZX0lEOiAnJyxcbiAgICAgICAgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZOiAnJyxcbiAgICAgICAgQVdTX1NFU1NJT05fVE9LRU46ICcnXG5cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfSksXG4pOyJdfQ==