aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
100 lines • 11.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable import/order */
const os = require("os");
const fs_path = require("path");
const fs = require("fs-extra");
const user_configuration_1 = require("../../lib/cli/user-configuration");
// mock fs deeply
jest.mock('fs-extra');
const mockedFs = jest.mocked(fs, { shallow: true });
const USER_CONFIG = fs_path.join(os.homedir(), '.cdk.json');
test('load settings from both files if available', async () => {
// GIVEN
const GIVEN_CONFIG = new Map([
[user_configuration_1.PROJECT_CONFIG, {
project: 'foobar',
}],
[USER_CONFIG, {
project: 'foo',
test: 'bar',
}],
]);
// WHEN
mockedFs.pathExists.mockImplementation(path => {
return GIVEN_CONFIG.has(path);
});
mockedFs.readJSON.mockImplementation(path => {
return GIVEN_CONFIG.get(path);
});
const config = await new user_configuration_1.Configuration().load();
// THEN
expect(config.settings.get(['project'])).toBe('foobar');
expect(config.settings.get(['test'])).toBe('bar');
});
test('load context from all 3 files if available', async () => {
// GIVEN
const GIVEN_CONFIG = new Map([
[user_configuration_1.PROJECT_CONFIG, {
context: {
project: 'foobar',
},
}],
[user_configuration_1.PROJECT_CONTEXT, {
foo: 'bar',
}],
[USER_CONFIG, {
context: {
test: 'bar',
},
}],
]);
// WHEN
mockedFs.pathExists.mockImplementation(path => {
return GIVEN_CONFIG.has(path);
});
mockedFs.readJSON.mockImplementation(path => {
return GIVEN_CONFIG.get(path);
});
const config = await new user_configuration_1.Configuration().load();
// THEN
expect(config.context.get('project')).toBe('foobar');
expect(config.context.get('foo')).toBe('bar');
expect(config.context.get('test')).toBe('bar');
});
test('throws an error if the `build` key is specified in the user config', async () => {
// GIVEN
const GIVEN_CONFIG = new Map([
[USER_CONFIG, {
build: 'foobar',
}],
]);
// WHEN
mockedFs.pathExists.mockImplementation(path => {
return GIVEN_CONFIG.has(path);
});
mockedFs.readJSON.mockImplementation(path => {
return GIVEN_CONFIG.get(path);
});
// THEN
await expect(new user_configuration_1.Configuration().load()).rejects.toEqual(new Error('The `build` key cannot be specified in the user config (~/.cdk.json), specify it in the project config (cdk.json) instead'));
});
test('Can specify the `quiet` key in the user config', async () => {
// GIVEN
const GIVEN_CONFIG = new Map([
[USER_CONFIG, {
quiet: true,
}],
]);
// WHEN
mockedFs.pathExists.mockImplementation(path => {
return GIVEN_CONFIG.has(path);
});
mockedFs.readJSON.mockImplementation(path => {
return GIVEN_CONFIG.get(path);
});
// THEN
const config = await new user_configuration_1.Configuration().load();
expect(config.settings.get(['quiet'])).toBe(true);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jb25maWcudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVzZXItY29uZmlnLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMseUJBQXlCO0FBQ3pCLGdDQUFnQztBQUNoQywrQkFBK0I7QUFDL0IseUVBQWtHO0FBRWxHLGlCQUFpQjtBQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFcEQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFNUQsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzVELFFBQVE7SUFDUixNQUFNLFlBQVksR0FBcUIsSUFBSSxHQUFHLENBQUM7UUFDN0MsQ0FBQyxtQ0FBYyxFQUFFO2dCQUNmLE9BQU8sRUFBRSxRQUFRO2FBQ2xCLENBQUM7UUFDRixDQUFDLFdBQVcsRUFBRTtnQkFDWixPQUFPLEVBQUUsS0FBSztnQkFDZCxJQUFJLEVBQUUsS0FBSzthQUNaLENBQUM7S0FDSCxDQUFDLENBQUM7SUFFSCxPQUFPO0lBQ1AsUUFBUSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM1QyxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzFDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sTUFBTSxHQUFH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O0lBQ1IsTUFBTSxZQUFZLEdBQXFCLElBQUksR0FBRyxDQUFDO1FBQzdDLENBQUMsV0FBVyxFQUFFO2dCQUNaLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxRQUFRLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzVDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNILFFBQVEsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDMUMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxrQ0FBYSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9vcmRlciAqL1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgZnNfcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24sIFBST0pFQ1RfQ09ORklHLCBQUk9KRUNUX0NPTlRFWFQgfSBmcm9tICcuLi8uLi9saWIvY2xpL3VzZXItY29uZmlndXJhdGlvbic7XG5cbi8vIG1vY2sgZnMgZGVlcGx5XG5qZXN0Lm1vY2soJ2ZzLWV4dHJhJyk7XG5jb25zdCBtb2NrZWRGcyA9IGplc3QubW9ja2VkKGZzLCB7IHNoYWxsb3c6IHRydWUgfSk7XG5cbmNvbnN0IFVTRVJfQ09ORklHID0gZnNfcGF0aC5qb2luKG9zLmhvbWVkaXIoKSwgJy5jZGsuanNvbicpO1xuXG50ZXN0KCdsb2FkIHNldHRpbmdzIGZyb20gYm90aCBmaWxlcyBpZiBhdmFpbGFibGUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IEdJVkVOX0NPTkZJRzogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgIFtQUk9KRUNUX0NPTkZJRywge1xuICAgICAgcHJvamVjdDogJ2Zvb2JhcicsXG4gICAgfV0sXG4gICAgW1VTRVJfQ09ORklHLCB7XG4gICAgICBwcm9qZWN0OiAnZm9vJyxcbiAgICAgIHRlc3Q6ICdiYXInLFxuICAgIH1dLFxuICBdKTtcblxuICAvLyBXSEVOXG4gIG1vY2tlZEZzLnBhdGhFeGlzdHMubW9ja0ltcGxlbWVudGF0aW9uKHBhdGggPT4ge1xuICAgIHJldHVybiBHSVZFTl9DT05GSUcuaGFzKHBhdGgpO1xuICB9KTtcbiAgbW9ja2VkRnMucmVhZEpTT04ubW9ja0ltcGxlbWVudGF0aW9uKHBhdGggPT4ge1xuICAgIHJldHVybiBHSVZFTl9DT05GSUcuZ2V0KHBhdGgpO1xuICB9KTtcblxuICBjb25zdCBjb25maWcgPSBhd2FpdCBuZXcgQ29uZmlndXJhdGlvbigpLmxvYWQoKTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChjb25maWcuc2V0dGluZ3MuZ2V0KFsncHJvamVjdCddKSkudG9CZSgnZm9vYmFyJyk7XG4gIGV4cGVjdChjb25maWcuc2V0dGluZ3MuZ2V0KFsndGVzdCddKSkudG9CZSgnYmFyJyk7XG59KTtcblxudGVzdCgnbG9hZCBjb250ZXh0IGZyb20gYWxsIDMgZmlsZXMgaWYgYXZhaWxhYmxlJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBHSVZFTl9DT05GSUc6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICBbUFJPSkVDVF9DT05GSUcsIHtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgcHJvamVjdDogJ2Zvb2JhcicsXG4gICAgICB9LFxuICAgIH1dLFxuICAgIFtQUk9KRUNUX0NPTlRFWFQsIHtcbiAgICAgIGZvbzogJ2JhcicsXG4gICAgfV0sXG4gICAgW1VTRVJfQ09ORklHLCB7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIHRlc3Q6ICdiYXInLFxuICAgICAgfSxcbiAgICB9XSxcbiAgXSk7XG5cbiAgLy8gV0hFTlxuICBtb2NrZWRGcy5wYXRoRXhpc3RzLm1vY2tJbXBsZW1lbnRhdGlvbihwYXRoID0+IHtcbiAgICByZXR1cm4gR0lWRU5fQ09ORklHLmhhcyhwYXRoKTtcbiAgfSk7XG4gIG1vY2tlZEZzLnJlYWRKU09OLm1vY2tJbXBsZW1lbnRhdGlvbihwYXRoID0+IHtcbiAgICByZXR1cm4gR0lWRU5fQ09ORklHLmdldChwYXRoKTtcbiAgfSk7XG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgbmV3IENvbmZpZ3VyYXRpb24oKS5sb2FkKCk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoY29uZmlnLmNvbnRleHQuZ2V0KCdwcm9qZWN0JykpLnRvQmUoJ2Zvb2JhcicpO1xuICBleHBlY3QoY29uZmlnLmNvbnRleHQuZ2V0KCdmb28nKSkudG9CZSgnYmFyJyk7XG4gIGV4cGVjdChjb25maWcuY29udGV4dC5nZXQoJ3Rlc3QnKSkudG9CZSgnYmFyJyk7XG59KTtcblxudGVzdCgndGhyb3dzIGFuIGVycm9yIGlmIHRoZSBgYnVpbGRgIGtleSBpcyBzcGVjaWZpZWQgaW4gdGhlIHVzZXIgY29uZmlnJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBHSVZFTl9DT05GSUc6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICBbVVNFUl9DT05GSUcsIHtcbiAgICAgIGJ1aWxkOiAnZm9vYmFyJyxcbiAgICB9XSxcbiAgXSk7XG5cbiAgLy8gV0hFTlxuICBtb2NrZWRGcy5wYXRoRXhpc3RzLm1vY2tJbXBsZW1lbnRhdGlvbihwYXRoID0+IHtcbiAgICByZXR1cm4gR0lWRU5fQ09ORklHLmhhcyhwYXRoKTtcbiAgfSk7XG4gIG1vY2tlZEZzLnJlYWRKU09OLm1vY2tJbXBsZW1lbnRhdGlvbihwYXRoID0+IHtcbiAgICByZXR1cm4gR0lWRU5fQ09ORklHLmdldChwYXRoKTtcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBhd2FpdCBleHBlY3QobmV3IENvbmZpZ3VyYXRpb24oKS5sb2FkKCkpLnJlamVjdHMudG9FcXVhbChuZXcgRXJyb3IoJ1RoZSBgYnVpbGRgIGtleSBjYW5ub3QgYmUgc3BlY2lmaWVkIGluIHRoZSB1c2VyIGNvbmZpZyAofi8uY2RrLmpzb24pLCBzcGVjaWZ5IGl0IGluIHRoZSBwcm9qZWN0IGNvbmZpZyAoY2RrLmpzb24pIGluc3RlYWQnKSk7XG59KTtcblxudGVzdCgnQ2FuIHNwZWNpZnkgdGhlIGBxdWlldGAga2V5IGluIHRoZSB1c2VyIGNvbmZpZycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgR0lWRU5fQ09ORklHOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcChbXG4gICAgW1VTRVJfQ09ORklHLCB7XG4gICAgICBxdWlldDogdHJ1ZSxcbiAgICB9XSxcbiAgXSk7XG5cbiAgLy8gV0hFTlxuICBtb2NrZWRGcy5wYXRoRXhpc3RzLm1vY2tJbXBsZW1lbnRhdGlvbihwYXRoID0+IHtcbiAgICByZXR1cm4gR0lWRU5fQ09ORklHLmhhcyhwYXRoKTtcbiAgfSk7XG4gIG1vY2tlZEZzLnJlYWRKU09OLm1vY2tJbXBsZW1lbnRhdGlvbihwYXRoID0+IHtcbiAgICByZXR1cm4gR0lWRU5fQ09ORklHLmdldChwYXRoKTtcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBjb25zdCBjb25maWcgPSBhd2FpdCBuZXcgQ29uZmlndXJhdGlvbigpLmxvYWQoKTtcblxuICBleHBlY3QoY29uZmlnLnNldHRpbmdzLmdldChbJ3F1aWV0J10pKS50b0JlKHRydWUpO1xufSk7XG4iXX0=