UNPKG

@aws-cdk-testing/cli-integ

Version:

Integration tests for the AWS CDK CLI

79 lines 11.5 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.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLWFzc2V0cy11c2VzLXByb2ZpbGUuaW50ZWd0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkJBQW9DO0FBQ3BDLDZCQUE2QjtBQUM3QixzQ0FBNkQ7QUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMseUVBQXlFO0FBRTNHLElBQUEsZUFBUyxFQUFDLHdDQUF3QyxFQUFFLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUVyRCxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUUzQyxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDbEMsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztJQUUvRCwrRUFBK0U7SUFDL0UsNkVBQTZFO0lBQzdFLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQztJQUNsQyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUM7SUFDbEMsTUFBTSxhQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25GLE1BQU0sYUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUVuRixzRUFBc0U7SUFDdEUsTUFBTSxVQUFVLEdBQUc7UUFDakIsT0FBTyxFQUFFLFFBQVE7UUFDakIsS0FBSyxFQUFFO1lBQ0wsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2dCQUNELFlBQVksRUFBRTtvQkFDWixPQUFPLEVBQUU7d0JBQ1AsTUFBTTt3QkFDTixhQUFhLEVBQUUsK0JBQStCLE9BQU8sNENBQTRDLE9BQU8sSUFBSSxNQUFNLEVBQUU7d0JBQ3BILFVBQVU7d0JBQ1YsU0FBUyxFQUFFLGNBQWMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPO3FCQUMzQztpQkFDRjthQUNGO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2dCQUNELFlBQVksRUFBRTtvQkFDWixPQUFPLEVBQUU7d0JBQ1AsTUFBTTt3QkFDTixhQUFhLEVBQUUsK0JBQStCLE9BQU8sNENBQTRDLE9BQU8sSUFBSSxNQUFNLEVBQUU7d0JBQ3BILFVBQVU7d0JBQ1YsU0FBUyxFQUFFLGNBQWMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPO3FCQUMzQztpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBRUYsaURBQWlEO0lBQ2pELEVBQUU7SUFDRixvR0FBb0c7SUFDcEcsMkZBQTJGO0lBQzNGLDJGQUEyRjtJQUMzRix3QkFBd0I7SUFDeEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDM0UsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDO0lBRTdCLDhFQUE4RTtJQUM5RSxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksT0FBTztvQkFDN0IsWUFBWSxDQUFDLFdBQVc7d0JBQ3BCLFlBQVksQ0FBQyxlQUFlO29CQUNoQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUUvQyxNQUFNLGFBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDNUYsTUFBTSxFQUFFO1lBQ04sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3hCLDJCQUEyQixFQUFFLGVBQWU7WUFFNUMsOERBQThEO1lBQzlELGlGQUFpRjtZQUNqRixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLHFCQUFxQixFQUFFLEVBQUU7WUFDekIsaUJBQWlCLEVBQUUsRUFBRTtTQUV0QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGludGVnVGVzdCwgd2l0aERlZmF1bHRGaXh0dXJlIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuamVzdC5zZXRUaW1lb3V0KDIgKiA2MCAqIDYwXzAwMCk7IC8vIEluY2x1ZGVzIHRoZSB0aW1lIHRvIGFjcXVpcmUgbG9ja3MsIHdvcnN0LWNhc2Ugc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWVcblxuaW50ZWdUZXN0KCdjZGstYXNzZXRzIHVzZXMgcHJvZmlsZSB3aGVuIHNwZWNpZmllZCcsIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICBjb25zdCBjdXJyZW50Q3JlZHMgPSBhd2FpdCBmaXh0dXJlLmF3cy5jcmVkZW50aWFscygpO1xuXG4gIGF3YWl0IGZpeHR1cmUuY2RrQXNzZXRzLm1ha2VDbGlBdmFpbGFibGUoKTtcblxuICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZml4dHVyZS5hd3MuYWNjb3VudCgpO1xuICBjb25zdCByZWdpb24gPSBmaXh0dXJlLmF3cy5yZWdpb247XG4gIGNvbnN0IGJ1Y2tldE5hbWUgPSBgY2RrLWhuYjY1OWZkcy1hc3NldHMtJHthY2NvdW50fS0ke3JlZ2lvbn1gO1xuXG4gIC8vIFdyaXRlIHNvbWUgYXNzZXQgZmlsZXMuIEl0cyBpbXBvcnRhbnQgdG8gaGF2ZSBtb3JlIHRoYW4gMSBiZWNhdXNlIGNkay1hc3NldHNcbiAgLy8gY29kZSBoYXMgc29tZSBmdW5reSBzdGF0ZSBtdXRhdGlvbnMgdGhhdCBoYXBwZW5zIG9uIGVhY2ggYXNzZXQgcHVibGlzaGluZy5cbiAgY29uc3QgYXNzZXRGaWxlMSA9ICd0ZXN0ZmlsZS50eHQnO1xuICBjb25zdCBhc3NldEZpbGUyID0gJ3Rlc3RmaWxlLnR4dCc7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsIGFzc2V0RmlsZTEpLCAnc29tZSBhc3NldCBmaWxlJyk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsIGFzc2V0RmlsZTIpLCAnc29tZSBhc3NldCBmaWxlJyk7XG5cbiAgLy8gV3JpdGUgYW4gYXNzZXQgSlNPTiBmaWxlIHRvIHB1Ymxpc2ggdG8gdGhlIGJvb3RzdHJhcHBlZCBlbnZpcm9ubWVudFxuICBjb25zdCBhc3NldHNKc29uID0ge1xuICAgIHZlcnNpb246ICczOC4wLjEnLFxuICAgIGZpbGVzOiB7XG4gICAgICB0ZXN0ZmlsZTE6IHtcbiAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgcGF0aDogYXNzZXRGaWxlMSxcbiAgICAgICAgICBwYWNrYWdpbmc6ICdmaWxlJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVzdGluYXRpb25zOiB7XG4gICAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgICAgYXNzdW1lUm9sZUFybjogYGFybjpcXCR7QVdTOjpQYXJ0aXRpb259OmlhbTo6JHthY2NvdW50fTpyb2xlL2Nkay1obmI2NTlmZHMtZmlsZS1wdWJsaXNoaW5nLXJvbGUtJHthY2NvdW50fS0ke3JlZ2lvbn1gLFxuICAgICAgICAgICAgYnVja2V0TmFtZSxcbiAgICAgICAgICAgIG9iamVjdEtleTogYHRlc3QtZmlsZTEtJHtEYXRlLm5vdygpfS5qc29uYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRlc3RmaWxlMjoge1xuICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICBwYXRoOiBhc3NldEZpbGUyLFxuICAgICAgICAgIHBhY2thZ2luZzogJ2ZpbGUnLFxuICAgICAgICB9LFxuICAgICAgICBkZXN0aW5hdGlvbnM6IHtcbiAgICAgICAgICBjdXJyZW50OiB7XG4gICAgICAgICAgICByZWdpb24sXG4gICAgICAgICAgICBhc3N1bWVSb2xlQXJuOiBgYXJuOlxcJHtBV1M6OlBhcnRpdGlvbn06aWFtOjoke2FjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1maWxlLXB1Ymxpc2hpbmctcm9sZS0ke2FjY291bnR9LSR7cmVnaW9ufWAsXG4gICAgICAgICAgICBidWNrZXROYW1lLFxuICAgICAgICAgICAgb2JqZWN0S2V5OiBgdGVzdC1maWxlMi0ke0RhdGUubm93KCl9Lmpzb25gLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgLy8gY3JlYXRlIGEgcHJvZmlsZSB3aXRoIG91ciBjdXJyZW50IGNyZWRlbnRpYWxzLlxuICAvL1xuICAvLyBpZiB5b3UncmUgd29uZGVyaW5nIHdoeSBjYW4ndCB3ZSBkbyB0aGUgcmV2ZXJzZSAoaS5lIHdyaXRlIGEgYm9ndXMgcHJvZmlsZSBhbmQgYXNzZXJ0IGEgZmFpbHVyZSksXG4gIC8vIGl0cyBiZWNhdXNlIHdoZW4gY2RrLWFzc2V0cyBkaXNjb3ZlcnMgdGhlIGN1cnJlbnQgYWNjb3VudCwgaXQgRE9FUyBjb25zaWRlciB0aGUgcHJvZmlsZS5cbiAgLy8gd3JpdGluZyBhIGJvZ3VzIHByb2ZpbGUgd291bGQgZmFpbCB0aGlzIG9wZXJhdGlvbiBhbmQgd2Ugd29uJ3QgYmUgYWJsZSB0byByZWFjaCB0aGUgY29kZVxuICAvLyB3ZSdyZSB0cnlpbmcgdG8gdGVzdC5cbiAgY29uc3QgY3JlZGVudGlhbHNGaWxlID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnYXdzLmNyZWRlbnRpYWxzJyk7XG4gIGNvbnN0IHByb2ZpbGUgPSAnY2RrLWFzc2V0cyc7XG5cbiAgLy8gdGhpcyBraW5kIHN1Y2tzIGJ1dCBpdHMgd2hhdCBpdCBpcyBnaXZlbiB3ZSBuZWVkIHRvIHdyaXRlIGEgd29ya2luZyBwcm9maWxlXG4gIGF3YWl0IGZzLndyaXRlRmlsZShjcmVkZW50aWFsc0ZpbGUsIGBbJHtwcm9maWxlfV1cbmF3c19hY2Nlc3Nfa2V5X2lkPSR7Y3VycmVudENyZWRzLmFjY2Vzc0tleUlkfVxuYXdzX3NlY3JldF9hY2Nlc3Nfa2V5PSR7Y3VycmVudENyZWRzLnNlY3JldEFjY2Vzc0tleX1cbmF3c19zZXNzaW9uX3Rva2VuPSR7Y3VycmVudENyZWRzLnNlc3Npb25Ub2tlbn1gKTtcblxuICBhd2FpdCBmcy53cml0ZUZpbGUocGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnYXNzZXRzLmpzb24nKSwgSlNPTi5zdHJpbmdpZnkoYXNzZXRzSnNvbiwgdW5kZWZpbmVkLCAyKSk7XG4gIGF3YWl0IGZpeHR1cmUuc2hlbGwoWydjZGstYXNzZXRzJywgJy0tcGF0aCcsICdhc3NldHMuanNvbicsICdwdWJsaXNoJywgJy0tcHJvZmlsZScsIHByb2ZpbGVdLCB7XG4gICAgbW9kRW52OiB7XG4gICAgICAuLi5maXh0dXJlLmNka1NoZWxsRW52KCksXG4gICAgICBBV1NfU0hBUkVEX0NSRURFTlRJQUxTX0ZJTEU6IGNyZWRlbnRpYWxzRmlsZSxcblxuICAgICAgLy8gcmVtb3ZlIHRoZSBkZWZhdWx0IGNyZWRzIHNvIHRoYXQgaWYgdGhlIGNvbW1hbmQgZG9lc24ndCB1c2VcbiAgICAgIC8vIHRoZSBwcm9maWxlLCBpdCB3aWxsIGZhaWwgd2l0aCBcIkNvdWxkIG5vdCBsb2FkIGNyZWRlbnRpYWxzIGZyb20gYW55IHByb3ZpZGVyc1wiXG4gICAgICBBV1NfQUNDRVNTX0tFWV9JRDogJycsXG4gICAgICBBV1NfU0VDUkVUX0FDQ0VTU19LRVk6ICcnLFxuICAgICAgQVdTX1NFU1NJT05fVE9LRU46ICcnLFxuXG4gICAgfSxcbiAgfSk7XG59KSxcbik7XG4iXX0=