@aws-cdk-testing/cli-integ
Version:
Integration tests for the AWS CDK CLI
122 lines (118 loc) • 12 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
// import { CreateSecretCommand, DeleteSecretCommand } from '@aws-sdk/client-secrets-manager';
const client_sts_1 = require("@aws-sdk/client-sts");
const lib_1 = require("../../../lib");
(0, lib_1.integTest)('docker-credential-cdk-assets can assume role and fetch ECR credentials', (0, lib_1.withRetry)((0, lib_1.withDefaultFixture)(async (fixture) => {
const caller = await fixture.aws.sts.send(new client_sts_1.GetCallerIdentityCommand({}));
const roleArn = await fixture.aws.temporaryRole('ecr-repo-role', [
{
Action: 'sts:AssumeRole',
Effect: 'Allow',
Principal: { AWS: caller.Account },
},
], [
{
Effect: 'Allow',
Resource: '*',
Action: ['ecr:GetAuthorizationToken'],
},
]);
await fixture.aws.waitForAssumeRole(roleArn);
await testDockerCredential(fixture, {
ecrRepository: true,
// This role must have permissions to call `ecr:GetAuthorizationToken`
assumeRoleArn: roleArn,
});
})));
/*
// SKIPPED FOR NOW
// Requires SecretsManager permissions on the role that's executing this, and that's
// too much to set up right now.
integTest(
'docker-credential-cdk-assets read from SecretsManager',
withDefaultFixture(async (fixture) => {
const secret = await fixture.aws.secretsManager.send(new CreateSecretCommand({
Name: `our-secret-${fixture.randomString}`,
SecretString: JSON.stringify({
username: 'test-user',
password: 'test-password',
}),
}));
fixture.aws.addCleanup(() => fixture.aws.secretsManager.send(new DeleteSecretCommand({
SecretId: secret.ARN,
})));
await testDockerCredential(fixture, {
secretsManagerSecretId: secret.ARN,
secretsUsernameField: 'username',
secretsPasswordField: 'password',
});
}),
);
*/
async function testDockerCredential(fixture, credSource) {
const domain = 'integ.test.domain';
const credsFilePath = path.join(fixture.integTestDir, 'cdk-docker-creds.json');
fs.writeFileSync(credsFilePath, JSON.stringify({
version: '1.0',
domainCredentials: {
[domain]: credSource,
},
}));
const input = path.join(fixture.integTestDir, 'input.txt');
fs.writeFileSync(input, `${domain}\n`);
await fixture.cdkAssets.makeCliAvailable();
let output = '';
await (0, lib_1.retry)(process.stdout, 'Getting docker credentials', lib_1.retry.forSeconds(60), async () => {
output = await fixture.shell(['docker-credential-cdk-assets', 'get'], {
modEnv: {
...fixture.cdkShellEnv(),
CDK_DOCKER_CREDS_FILE: credsFilePath,
},
stdio: [fs.openSync(input, 'r')],
captureStderr: false,
});
(0, lib_1.registerSecrets)(JSON.parse(output).Secret);
});
const response = JSON.parse(output);
expect(response).toMatchObject({
Username: expect.anything(),
Secret: expect.anything(),
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWFzc2V0cy1kb2NrZXItY3JlZGVudGlhbC5pbnRlZ3Rlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGstYXNzZXRzLWRvY2tlci1jcmVkZW50aWFsLmludGVndGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IsOEZBQThGO0FBQzlGLG9EQUErRDtBQUkvRCxzQ0FBZ0c7QUFFaEcsSUFBQSxlQUFTLEVBQ1Asd0VBQXdFLEVBQ3hFLElBQUEsZUFBUyxFQUFDLElBQUEsd0JBQWtCLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU1RSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtRQUMvRDtZQUNFLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsTUFBTSxFQUFFLE9BQU87WUFDZixTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRTtTQUNuQztLQUNGLEVBQUU7UUFDRDtZQUNFLE1BQU0sRUFBRSxPQUFPO1lBQ2YsUUFBUSxFQUFFLEdBQUc7WUFDYixNQUFNLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztTQUN0QztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU3QyxNQUFNLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtRQUNsQyxhQUFhLEVBQUUsSUFBSTtRQUNuQixzRUFBc0U7UUFDdEUsYUFBYSxFQUFFLE9BQU87S0FDdkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FDSixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE0QkU7QUFFRixLQUFLLFVBQVUsb0JBQW9CLENBQUMsT0FBb0IsRUFBRSxVQUF3QztJQUNoRyxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQztJQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUUvRSxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzdDLE9BQU8sRUFBRSxLQUFLO1FBQ2QsaUJBQWlCLEVBQUU7WUFDakIsQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVO1NBQ3JCO0tBQ0YsQ0FBQyxDQUFDLENBQUM7SUFFSixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBRXZDLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUV4QixNQUFNLElBQUEsV0FBSyxFQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsV0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN6RixNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsOEJBQThCLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDcEUsTUFBTSxFQUFFO2dCQUNOLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDeEIscUJBQXFCLEVBQUUsYUFBYTthQUNyQztZQUNELEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUEscUJBQWUsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzdCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFO0tBQzFCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuLy8gaW1wb3J0IHsgQ3JlYXRlU2VjcmV0Q29tbWFuZCwgRGVsZXRlU2VjcmV0Q29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zZWNyZXRzLW1hbmFnZXInO1xuaW1wb3J0IHsgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXN0cyc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzXG5pbXBvcnQgdHlwZSB7IERvY2tlckRvbWFpbkNyZWRlbnRpYWxTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9AYXdzLWNkay9jZGstYXNzZXRzLWxpYi9saWIvcHJpdmF0ZS9kb2NrZXItY3JlZGVudGlhbHMnO1xuaW1wb3J0IHR5cGUgeyBUZXN0Rml4dHVyZSB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgeyBpbnRlZ1Rlc3QsIHdpdGhEZWZhdWx0Rml4dHVyZSwgd2l0aFJldHJ5LCByZXRyeSwgcmVnaXN0ZXJTZWNyZXRzIH0gZnJvbSAnLi4vLi4vLi4vbGliJztcblxuaW50ZWdUZXN0KFxuICAnZG9ja2VyLWNyZWRlbnRpYWwtY2RrLWFzc2V0cyBjYW4gYXNzdW1lIHJvbGUgYW5kIGZldGNoIEVDUiBjcmVkZW50aWFscycsXG4gIHdpdGhSZXRyeSh3aXRoRGVmYXVsdEZpeHR1cmUoYXN5bmMgKGZpeHR1cmUpID0+IHtcbiAgICBjb25zdCBjYWxsZXIgPSBhd2FpdCBmaXh0dXJlLmF3cy5zdHMuc2VuZChuZXcgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kKHt9KSk7XG5cbiAgICBjb25zdCByb2xlQXJuID0gYXdhaXQgZml4dHVyZS5hd3MudGVtcG9yYXJ5Um9sZSgnZWNyLXJlcG8tcm9sZScsIFtcbiAgICAgIHtcbiAgICAgICAgQWN0aW9uOiAnc3RzOkFzc3VtZVJvbGUnLFxuICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgIFByaW5jaXBhbDogeyBBV1M6IGNhbGxlci5BY2NvdW50IH0sXG4gICAgICB9LFxuICAgIF0sIFtcbiAgICAgIHtcbiAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICBSZXNvdXJjZTogJyonLFxuICAgICAgICBBY3Rpb246IFsnZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbiddLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGF3YWl0IGZpeHR1cmUuYXdzLndhaXRGb3JBc3N1bWVSb2xlKHJvbGVBcm4pO1xuXG4gICAgYXdhaXQgdGVzdERvY2tlckNyZWRlbnRpYWwoZml4dHVyZSwge1xuICAgICAgZWNyUmVwb3NpdG9yeTogdHJ1ZSxcbiAgICAgIC8vIFRoaXMgcm9sZSBtdXN0IGhhdmUgcGVybWlzc2lvbnMgdG8gY2FsbCBgZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbmBcbiAgICAgIGFzc3VtZVJvbGVBcm46IHJvbGVBcm4sXG4gICAgfSk7XG4gIH0pKSxcbik7XG5cbi8qXG5cbi8vIFNLSVBQRUQgRk9SIE5PV1xuLy8gUmVxdWlyZXMgU2VjcmV0c01hbmFnZXIgcGVybWlzc2lvbnMgb24gdGhlIHJvbGUgdGhhdCdzIGV4ZWN1dGluZyB0aGlzLCBhbmQgdGhhdCdzXG4vLyB0b28gbXVjaCB0byBzZXQgdXAgcmlnaHQgbm93LlxuXG5pbnRlZ1Rlc3QoXG4gICdkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzIHJlYWQgZnJvbSBTZWNyZXRzTWFuYWdlcicsXG4gIHdpdGhEZWZhdWx0Rml4dHVyZShhc3luYyAoZml4dHVyZSkgPT4ge1xuICAgIGNvbnN0IHNlY3JldCA9IGF3YWl0IGZpeHR1cmUuYXdzLnNlY3JldHNNYW5hZ2VyLnNlbmQobmV3IENyZWF0ZVNlY3JldENvbW1hbmQoe1xuICAgICAgTmFtZTogYG91ci1zZWNyZXQtJHtmaXh0dXJlLnJhbmRvbVN0cmluZ31gLFxuICAgICAgU2VjcmV0U3RyaW5nOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHVzZXJuYW1lOiAndGVzdC11c2VyJyxcbiAgICAgICAgcGFzc3dvcmQ6ICd0ZXN0LXBhc3N3b3JkJyxcbiAgICAgIH0pLFxuICAgIH0pKTtcbiAgICBmaXh0dXJlLmF3cy5hZGRDbGVhbnVwKCgpID0+IGZpeHR1cmUuYXdzLnNlY3JldHNNYW5hZ2VyLnNlbmQobmV3IERlbGV0ZVNlY3JldENvbW1hbmQoe1xuICAgICAgU2VjcmV0SWQ6IHNlY3JldC5BUk4sXG4gICAgfSkpKTtcblxuICAgIGF3YWl0IHRlc3REb2NrZXJDcmVkZW50aWFsKGZpeHR1cmUsIHtcbiAgICAgIHNlY3JldHNNYW5hZ2VyU2VjcmV0SWQ6IHNlY3JldC5BUk4sXG4gICAgICBzZWNyZXRzVXNlcm5hbWVGaWVsZDogJ3VzZXJuYW1lJyxcbiAgICAgIHNlY3JldHNQYXNzd29yZEZpZWxkOiAncGFzc3dvcmQnLFxuICAgIH0pO1xuICB9KSxcbik7XG5cbiovXG5cbmFzeW5jIGZ1bmN0aW9uIHRlc3REb2NrZXJDcmVkZW50aWFsKGZpeHR1cmU6IFRlc3RGaXh0dXJlLCBjcmVkU291cmNlOiBEb2NrZXJEb21haW5DcmVkZW50aWFsU291cmNlKSB7XG4gIGNvbnN0IGRvbWFpbiA9ICdpbnRlZy50ZXN0LmRvbWFpbic7XG4gIGNvbnN0IGNyZWRzRmlsZVBhdGggPSBwYXRoLmpvaW4oZml4dHVyZS5pbnRlZ1Rlc3REaXIsICdjZGstZG9ja2VyLWNyZWRzLmpzb24nKTtcblxuICBmcy53cml0ZUZpbGVTeW5jKGNyZWRzRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHtcbiAgICB2ZXJzaW9uOiAnMS4wJyxcbiAgICBkb21haW5DcmVkZW50aWFsczoge1xuICAgICAgW2RvbWFpbl06IGNyZWRTb3VyY2UsXG4gICAgfSxcbiAgfSkpO1xuXG4gIGNvbnN0IGlucHV0ID0gcGF0aC5qb2luKGZpeHR1cmUuaW50ZWdUZXN0RGlyLCAnaW5wdXQudHh0Jyk7XG4gIGZzLndyaXRlRmlsZVN5bmMoaW5wdXQsIGAke2RvbWFpbn1cXG5gKTtcblxuICBhd2FpdCBmaXh0dXJlLmNka0Fzc2V0cy5tYWtlQ2xpQXZhaWxhYmxlKCk7XG4gIGxldCBvdXRwdXQ6IHN0cmluZyA9ICcnO1xuXG4gIGF3YWl0IHJldHJ5KHByb2Nlc3Muc3Rkb3V0LCAnR2V0dGluZyBkb2NrZXIgY3JlZGVudGlhbHMnLCByZXRyeS5mb3JTZWNvbmRzKDYwKSwgYXN5bmMgKCkgPT4ge1xuICAgIG91dHB1dCA9IGF3YWl0IGZpeHR1cmUuc2hlbGwoWydkb2NrZXItY3JlZGVudGlhbC1jZGstYXNzZXRzJywgJ2dldCddLCB7XG4gICAgICBtb2RFbnY6IHtcbiAgICAgICAgLi4uZml4dHVyZS5jZGtTaGVsbEVudigpLFxuICAgICAgICBDREtfRE9DS0VSX0NSRURTX0ZJTEU6IGNyZWRzRmlsZVBhdGgsXG4gICAgICB9LFxuICAgICAgc3RkaW86IFtmcy5vcGVuU3luYyhpbnB1dCwgJ3InKV0sXG4gICAgICBjYXB0dXJlU3RkZXJyOiBmYWxzZSxcbiAgICB9KTtcbiAgICByZWdpc3RlclNlY3JldHMoSlNPTi5wYXJzZShvdXRwdXQpLlNlY3JldCk7XG4gIH0pO1xuXG4gIGNvbnN0IHJlc3BvbnNlID0gSlNPTi5wYXJzZShvdXRwdXQpO1xuICBleHBlY3QocmVzcG9uc2UpLnRvTWF0Y2hPYmplY3Qoe1xuICAgIFVzZXJuYW1lOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgICBTZWNyZXQ6IGV4cGVjdC5hbnl0aGluZygpLFxuICB9KTtcbn1cbiJdfQ==