UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

104 lines 13.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/order */ const plugin_1 = require("../../lib/api/plugin"); const contextproviders = require("../../lib/context-providers"); const settings_1 = require("../../lib/settings"); const mock_sdk_1 = require("../util/mock-sdk"); const mockSDK = new mock_sdk_1.MockSdkProvider(); const TEST_PROVIDER = 'testprovider'; const PLUGIN_PROVIDER = 'plugin'; test('errors are reported into the context value', async () => { // GIVEN contextproviders.registerContextProvider(TEST_PROVIDER, { async getValue(_) { throw new Error('Something went wrong'); }, }); const context = new settings_1.Context(); // WHEN await contextproviders.provideContextValues([ { key: 'asdf', props: { account: '1234', region: 'us-east-1' }, provider: TEST_PROVIDER }, ], context, mockSDK); // THEN - error is now in context // NOTE: error key is inlined here because it's part of the CX-API // compatibility surface. expect(context.get('asdf').$providerError).toBe('Something went wrong'); }); test('lookup role ARN is resolved', async () => { // GIVEN contextproviders.registerContextProvider(TEST_PROVIDER, { async getValue(args) { if (args.lookupRoleArn == null) { throw new Error('No lookupRoleArn'); } if (args.lookupRoleArn.includes('${AWS::Partition}')) { throw new Error('Partition not resolved'); } return 'some resolved value'; }, }); const context = new settings_1.Context(); // WHEN await contextproviders.provideContextValues([ { key: 'asdf', props: { account: '1234', region: 'us-east-1', lookupRoleArn: 'arn:${AWS::Partition}:iam::280619947791:role/cdk-hnb659fds-lookup-role-280619947791-us-east-1', }, provider: TEST_PROVIDER, }, ], context, mockSDK); // THEN - Value gets resolved expect(context.get('asdf')).toEqual('some resolved value'); }); test('errors are marked transient', async () => { // GIVEN contextproviders.registerContextProvider(TEST_PROVIDER, { async getValue(_) { throw new Error('Something went wrong'); }, }); const context = new settings_1.Context(); // WHEN await contextproviders.provideContextValues([ { key: 'asdf', props: { account: '1234', region: 'us-east-1' }, provider: TEST_PROVIDER }, ], context, mockSDK); // THEN - error is marked transient expect(context.get('asdf')[settings_1.TRANSIENT_CONTEXT_KEY]).toBeTruthy(); }); test('context provider can be registered using PluginHost', async () => { let called = false; // GIVEN plugin_1.PluginHost.instance.registerContextProviderAlpha('prov', { async getValue(_) { called = true; return ''; }, }); const context = new settings_1.Context(); // WHEN await contextproviders.provideContextValues([ { key: 'asdf', props: { account: '1234', region: 'us-east-1', pluginName: 'prov' }, provider: PLUGIN_PROVIDER }, ], context, mockSDK); // THEN - error is marked transient expect(called).toEqual(true); }); test('plugin context provider can be called without account/region', async () => { // GIVEN plugin_1.PluginHost.instance.registerContextProviderAlpha('prov', { async getValue(_) { return 'yay'; }, }); const context = new settings_1.Context(); // WHEN await contextproviders.provideContextValues([ { key: 'asdf', props: { banana: 'yellow', pluginName: 'prov' }, provider: PLUGIN_PROVIDER }, ], context, mockSDK); // THEN - error is marked transient expect(context.get('asdf')).toEqual('yay'); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2VuZXJpYy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWlDO0FBQ2pDLGlEQUFrRDtBQUNsRCxnRUFBZ0U7QUFDaEUsaURBQW9FO0FBQ3BFLCtDQUFtRDtBQUVuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUFlLEVBQUUsQ0FBQztBQUV0QyxNQUFNLGFBQWEsR0FBUSxjQUFjLENBQUM7QUFDMUMsTUFBTSxlQUFlLEdBQVEsUUFBUSxDQUFDO0FBRXRDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM1RCxRQUFRO0lBQ1IsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsYUFBYSxFQUFFO1FBQ3RELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBdUI7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7S0FDRixDQUFDLENBQUM7SUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLGtCQUFPLEVBQUUsQ0FBQztJQUU5QixPQUFPO0lBQ1AsTUFBTSxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUMxQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtLQUMxRixFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVyQixpQ0FBaUM7SUFFakMsa0VBQWtFO0lBQ2xFLHlCQUF5QjtJQUN6QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLElBQUksRUFBRTtJ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QUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsOERBQThELEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDOUUsUUFBUTtJQUNSLG1CQUFVLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtRQUN2RCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQXVCO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO0lBRTlCLE9BQU87SUFDUCxNQUFNLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1FBQzFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFO0tBQ25HLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXJCLG1DQUFtQztJQUNuQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9vcmRlciAqL1xuaW1wb3J0IHsgUGx1Z2luSG9zdCB9IGZyb20gJy4uLy4uL2xpYi9hcGkvcGx1Z2luJztcbmltcG9ydCAqIGFzIGNvbnRleHRwcm92aWRlcnMgZnJvbSAnLi4vLi4vbGliL2NvbnRleHQtcHJvdmlkZXJzJztcbmltcG9ydCB7IENvbnRleHQsIFRSQU5TSUVOVF9DT05URVhUX0tFWSB9IGZyb20gJy4uLy4uL2xpYi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBNb2NrU2RrUHJvdmlkZXIgfSBmcm9tICcuLi91dGlsL21vY2stc2RrJztcblxuY29uc3QgbW9ja1NESyA9IG5ldyBNb2NrU2RrUHJvdmlkZXIoKTtcblxuY29uc3QgVEVTVF9QUk9WSURFUjogYW55ID0gJ3Rlc3Rwcm92aWRlcic7XG5jb25zdCBQTFVHSU5fUFJPVklERVI6IGFueSA9ICdwbHVnaW4nO1xuXG50ZXN0KCdlcnJvcnMgYXJlIHJlcG9ydGVkIGludG8gdGhlIGNvbnRleHQgdmFsdWUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnRleHRwcm92aWRlcnMucmVnaXN0ZXJDb250ZXh0UHJvdmlkZXIoVEVTVF9QUk9WSURFUiwge1xuICAgIGFzeW5jIGdldFZhbHVlKF86IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7IGtleTogJ2FzZGYnLCBwcm9wczogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScgfSwgcHJvdmlkZXI6IFRFU1RfUFJPVklERVIgfSxcbiAgXSwgY29udGV4dCwgbW9ja1NESyk7XG5cbiAgLy8gVEhFTiAtIGVycm9yIGlzIG5vdyBpbiBjb250ZXh0XG5cbiAgLy8gTk9URTogZXJyb3Iga2V5IGlzIGlubGluZWQgaGVyZSBiZWNhdXNlIGl0J3MgcGFydCBvZiB0aGUgQ1gtQVBJXG4gIC8vIGNvbXBhdGliaWxpdHkgc3VyZmFjZS5cbiAgZXhwZWN0KGNvbnRleHQuZ2V0KCdhc2RmJykuJHByb3ZpZGVyRXJyb3IpLnRvQmUoJ1NvbWV0aGluZyB3ZW50IHdyb25nJyk7XG59KTtcblxudGVzdCgnbG9va3VwIHJvbGUgQVJOIGlzIHJlc29sdmVkJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb250ZXh0cHJvdmlkZXJzLnJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyKFRFU1RfUFJPVklERVIsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShhcmdzOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICBpZiAoYXJncy5sb29rdXBSb2xlQXJuID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBsb29rdXBSb2xlQXJuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmdzLmxvb2t1cFJvbGVBcm4uaW5jbHVkZXMoJyR7QVdTOjpQYXJ0aXRpb259JykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJ0aXRpb24gbm90IHJlc29sdmVkJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnc29tZSByZXNvbHZlZCB2YWx1ZSc7XG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCgpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhbXG4gICAge1xuICAgICAga2V5OiAnYXNkZicsXG4gICAgICBwcm9wczoge1xuICAgICAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIGxvb2t1cFJvbGVBcm46ICdhcm46JHtBV1M6OlBhcnRpdGlvbn06aWFtOjoyODA2MTk5NDc3OTE6cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLTI4MDYxOTk0Nzc5MS11cy1lYXN0LTEnLFxuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBURVNUX1BST1ZJREVSLFxuICAgIH0sXG4gIF0sIGNvbnRleHQsIG1vY2tTREspO1xuXG4gIC8vIFRIRU4gLSBWYWx1ZSBnZXRzIHJlc29sdmVkXG4gIGV4cGVjdChjb250ZXh0LmdldCgnYXNkZicpKS50b0VxdWFsKCdzb21lIHJlc29sdmVkIHZhbHVlJyk7XG59KTtcblxudGVzdCgnZXJyb3JzIGFyZSBtYXJrZWQgdHJhbnNpZW50JywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb250ZXh0cHJvdmlkZXJzLnJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyKFRFU1RfUFJPVklERVIsIHtcbiAgICBhc3luYyBnZXRWYWx1ZShfOiB7W2tleTogc3RyaW5nXTogYW55fSk6IFByb21pc2U8YW55PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NvbWV0aGluZyB3ZW50IHdyb25nJyk7XG4gICAgfSxcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgQ29udGV4dCgpO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgY29udGV4dHByb3ZpZGVycy5wcm92aWRlQ29udGV4dFZhbHVlcyhbXG4gICAgeyBrZXk6ICdhc2RmJywgcHJvcHM6IHsgYWNjb3VudDogJzEyMzQnLCByZWdpb246ICd1cy1lYXN0LTEnIH0sIHByb3ZpZGVyOiBURVNUX1BST1ZJREVSIH0sXG4gIF0sIGNvbnRleHQsIG1vY2tTREspO1xuXG4gIC8vIFRIRU4gLSBlcnJvciBpcyBtYXJrZWQgdHJhbnNpZW50XG4gIGV4cGVjdChjb250ZXh0LmdldCgnYXNkZicpW1RSQU5TSUVOVF9DT05URVhUX0tFWV0pLnRvQmVUcnV0aHkoKTtcbn0pO1xuXG50ZXN0KCdjb250ZXh0IHByb3ZpZGVyIGNhbiBiZSByZWdpc3RlcmVkIHVzaW5nIFBsdWdpbkhvc3QnLCBhc3luYyAoKSA9PiB7XG4gIGxldCBjYWxsZWQgPSBmYWxzZTtcblxuICAvLyBHSVZFTlxuICBQbHVnaW5Ib3N0Lmluc3RhbmNlLnJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyQWxwaGEoJ3Byb3YnLCB7XG4gICAgYXN5bmMgZ2V0VmFsdWUoXzoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT4ge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBDb250ZXh0KCk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBjb250ZXh0cHJvdmlkZXJzLnByb3ZpZGVDb250ZXh0VmFsdWVzKFtcbiAgICB7IGtleTogJ2FzZGYnLCBwcm9wczogeyBhY2NvdW50OiAnMTIzNCcsIHJlZ2lvbjogJ3VzLWVhc3QtMScsIHBsdWdpbk5hbWU6ICdwcm92JyB9LCBwcm92aWRlcjogUExVR0lOX1BST1ZJREVSIH0sXG4gIF0sIGNvbnRleHQsIG1vY2tTREspO1xuXG4gIC8vIFRIRU4gLSBlcnJvciBpcyBtYXJrZWQgdHJhbnNpZW50XG4gIGV4cGVjdChjYWxsZWQpLnRvRXF1YWwodHJ1ZSk7XG59KTtcblxudGVzdCgncGx1Z2luIGNvbnRleHQgcHJvdmlkZXIgY2FuIGJlIGNhbGxlZCB3aXRob3V0IGFjY291bnQvcmVnaW9uJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBQbHVnaW5Ib3N0Lmluc3RhbmNlLnJlZ2lzdGVyQ29udGV4dFByb3ZpZGVyQWxwaGEoJ3Byb3YnLCB7XG4gICAgYXN5bmMgZ2V0VmFsdWUoXzoge1trZXk6IHN0cmluZ106IGFueX0pOiBQcm9taXNlPGFueT4ge1xuICAgICAgcmV0dXJuICd5YXknO1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0gbmV3IENvbnRleHQoKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGNvbnRleHRwcm92aWRlcnMucHJvdmlkZUNvbnRleHRWYWx1ZXMoW1xuICAgIHsga2V5OiAnYXNkZicsIHByb3BzOiB7IGJhbmFuYTogJ3llbGxvdycsIHBsdWdpbk5hbWU6ICdwcm92JyB9IGFzIGFueSwgcHJvdmlkZXI6IFBMVUdJTl9QUk9WSURFUiB9LFxuICBdLCBjb250ZXh0LCBtb2NrU0RLKTtcblxuICAvLyBUSEVOIC0gZXJyb3IgaXMgbWFya2VkIHRyYW5zaWVudFxuICBleHBlY3QoY29udGV4dC5nZXQoJ2FzZGYnKSkudG9FcXVhbCgneWF5Jyk7XG59KTtcbiJdfQ==