UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

138 lines 14.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const AWS = require("aws-sdk-mock"); const keys_1 = require("../../lib/context-providers/keys"); const mock_sdk_1 = require("../util/mock-sdk"); AWS.setSDK(require.resolve('aws-sdk')); const mockSDK = new mock_sdk_1.MockSdkProvider(); afterEach(done => { AWS.restore(); done(); }); test('looks up the requested Key - single result', async () => { // GIVEN const provider = new keys_1.KeyContextProviderPlugin(mockSDK); AWS.mock('KMS', 'listAliases', (params, cb) => { expect(params.KeyId).toBeUndefined(); return cb(null, { Aliases: [ { AliasName: 'alias/foo', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789000', }, ], }); }); // WHEN const result = await provider.getValue({ account: '1234', region: 'us-east-1', aliasName: 'alias/foo', }); // THEN expect(result).toEqual({ keyId: '1234abcd-12ab-34cd-56ef-123456789000', }); }); test('looks up the requested Key - multiple results', async () => { // GIVEN const provider = new keys_1.KeyContextProviderPlugin(mockSDK); AWS.mock('KMS', 'listAliases', (params, cb) => { expect(params.KeyId).toBeUndefined(); return cb(null, { Aliases: [ { AliasName: 'alias/bar', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789000', }, { AliasName: 'alias/foo', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789001', }, { AliasName: 'alias/fooBar', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789002', }, ], }); }); // WHEN const result = await provider.getValue({ account: '1234', region: 'us-east-1', aliasName: 'alias/foo', }); // THEN expect(result).toEqual({ keyId: '1234abcd-12ab-34cd-56ef-123456789001', }); }); test('looks up the requested Key - multiple results with pagination', async () => { // GIVEN const provider = new keys_1.KeyContextProviderPlugin(mockSDK); AWS.mock('KMS', 'listAliases', (params, cb) => { if (!params.Marker) { return cb(null, { Truncated: true, NextMarker: 'nextMarker', Aliases: [ { AliasName: 'alias/key1', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789000', }, { AliasName: 'alias/key2', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789001', }, { AliasName: 'alias/key3', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789002', }, ], }); } else if (params.Marker == 'nextMarker') { return cb(null, { Aliases: [ { AliasName: 'alias/key4', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789003', }, { AliasName: 'alias/foo', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789004', }, { AliasName: 'alias/key5', TargetKeyId: '1234abcd-12ab-34cd-56ef-123456789005', }, ], }); } }); // WHEN const result = await provider.getValue({ account: '1234', region: 'us-east-1', aliasName: 'alias/foo', }); // THEN expect(result).toEqual({ keyId: '1234abcd-12ab-34cd-56ef-123456789004', }); }); test('throw exception - no key found', async () => { // GIVEN const provider = new keys_1.KeyContextProviderPlugin(mockSDK); AWS.mock('KMS', 'listAliases', (params, cb) => { expect(params.KeyId).toBeUndefined(); return cb(null, {}); }); // WHEN await expect(provider.getValue({ account: '1234', region: 'us-east-1', aliasName: 'alias/foo', })).rejects.toThrow(/Could not find any key with alias named/); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2V5cy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsb0NBQW9DO0FBQ3BDLDJEQUE0RTtBQUM1RSwrQ0FBbUQ7QUFFbkQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBZSxFQUFFLENBQUM7QUFHdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2YsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtJQUM1RCxRQUFRO0lBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2RCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxNQUFrQyxFQUFFLEVBQTRDLEVBQUUsRUFBRTtRQUNsSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRTtZQUNkLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxTQUFTLEVBQUUsV0FBVztvQkFDdEIsV0FBVyxFQUFFLHNDQUFzQztpQkFDcEQ7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxPQUFPLEVBQUUsTUFBTTtRQUNmLE1BQU0sRUFBRSxXQUFXO1FBQ25CLFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUMsQ0FBQztJQUVILE9BQU87SUFDUCxNQUFNLENBQUMsTUFBTSxDQUFD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Q0FBQyxPQUFPLENBQUM7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztLQUM5QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLElBQUksRUFBRTtJQUNoRCxRQUFRO0lBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2RCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxNQUFrQyxFQUFFLEVBQTRDLEVBQUUsRUFBRTtRQUNsSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxFQUNmLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztJQUNQLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDN0IsT0FBTyxFQUFFLE1BQU07UUFDZixNQUFNLEVBQUUsV0FBVztRQUNuQixTQUFTLEVBQUUsV0FBVztLQUN2QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFFakUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvb3JkZXIgKi9cbmltcG9ydCAqIGFzIGF3cyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrLW1vY2snO1xuaW1wb3J0IHsgS2V5Q29udGV4dFByb3ZpZGVyUGx1Z2luIH0gZnJvbSAnLi4vLi4vbGliL2NvbnRleHQtcHJvdmlkZXJzL2tleXMnO1xuaW1wb3J0IHsgTW9ja1Nka1Byb3ZpZGVyIH0gZnJvbSAnLi4vdXRpbC9tb2NrLXNkayc7XG5cbkFXUy5zZXRTREsocmVxdWlyZS5yZXNvbHZlKCdhd3Mtc2RrJykpO1xuY29uc3QgbW9ja1NESyA9IG5ldyBNb2NrU2RrUHJvdmlkZXIoKTtcbnR5cGUgQXdzQ2FsbGJhY2s8VD4gPSAoZXJyOiBFcnJvciB8IG51bGwsIHZhbDogVCkgPT4gdm9pZDtcblxuYWZ0ZXJFYWNoKGRvbmUgPT4ge1xuICBBV1MucmVzdG9yZSgpO1xuICBkb25lKCk7XG59KTtcblxudGVzdCgnbG9va3MgdXAgdGhlIHJlcXVlc3RlZCBLZXkgLSBzaW5nbGUgcmVzdWx0JywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBwcm92aWRlciA9IG5ldyBLZXlDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgQVdTLm1vY2soJ0tNUycsICdsaXN0QWxpYXNlcycsIChwYXJhbXM6IGF3cy5LTVMuTGlzdEFsaWFzZXNSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLktNUy5MaXN0QWxpYXNlc1Jlc3BvbnNlPikgPT4ge1xuICAgIGV4cGVjdChwYXJhbXMuS2V5SWQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICByZXR1cm4gY2IobnVsbCwge1xuICAgICAgQWxpYXNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgQWxpYXNOYW1lOiAnYWxpYXMvZm9vJyxcbiAgICAgICAgICBUYXJnZXRLZXlJZDogJzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTAwMCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICBhbGlhc05hbWU6ICdhbGlhcy9mb28nLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIGtleUlkOiAnMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MDAwJyxcbiAgfSk7XG59KTtcblxudGVzdCgnbG9va3MgdXAgdGhlIHJlcXVlc3RlZCBLZXkgLSBtdWx0aXBsZSByZXN1bHRzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBwcm92aWRlciA9IG5ldyBLZXlDb250ZXh0UHJvdmlkZXJQbHVnaW4obW9ja1NESyk7XG5cbiAgQVdTLm1vY2soJ0tNUycsICdsaXN0QWxpYXNlcycsIChwYXJhbXM6IGF3cy5LTVMuTGlzdEFsaWFzZXNSZXF1ZXN0LCBjYjogQXdzQ2FsbGJhY2s8YXdzLktNUy5MaXN0QWxpYXNlc1Jlc3BvbnNlPikgPT4ge1xuICAgIGV4cGVjdChwYXJhbXMuS2V5SWQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICByZXR1cm4gY2IobnVsbCwge1xuICAgICAgQWxpYXNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgQWxpYXNOYW1lOiAnYWxpYXMvYmFyJyxcbiAgICAgICAgICBUYXJnZXRLZXlJZDogJzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTAwMCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBBbGlhc05hbWU6ICdhbGlhcy9mb28nLFxuICAgICAgICAgIFRhcmdldEtleUlkOiAnMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MDAxJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIEFsaWFzTmFtZTogJ2FsaWFzL2Zvb0JhcicsXG4gICAgICAgICAgVGFyZ2V0S2V5SWQ6ICcxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwMDInLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm92aWRlci5nZXRWYWx1ZSh7XG4gICAgYWNjb3VudDogJzEyMzQnLFxuICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgYWxpYXNOYW1lOiAnYWxpYXMvZm9vJyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICBrZXlJZDogJzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTAwMScsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ2xvb2tzIHVwIHRoZSByZXF1ZXN0ZWQgS2V5IC0gbXVsdGlwbGUgcmVzdWx0cyB3aXRoIHBhZ2luYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IEtleUNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBBV1MubW9jaygnS01TJywgJ2xpc3RBbGlhc2VzJywgKHBhcmFtczogYXdzLktNUy5MaXN0QWxpYXNlc1JlcXVlc3QsIGNiOiBBd3NDYWxsYmFjazxhd3MuS01TLkxpc3RBbGlhc2VzUmVzcG9uc2U+KSA9PiB7XG4gICAgaWYgKCFwYXJhbXMuTWFya2VyKSB7XG4gICAgICByZXR1cm4gY2IobnVsbCwge1xuICAgICAgICBUcnVuY2F0ZWQ6IHRydWUsXG4gICAgICAgIE5leHRNYXJrZXI6ICduZXh0TWFya2VyJyxcbiAgICAgICAgQWxpYXNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFsaWFzTmFtZTogJ2FsaWFzL2tleTEnLFxuICAgICAgICAgICAgVGFyZ2V0S2V5SWQ6ICcxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwMDAnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgQWxpYXNOYW1lOiAnYWxpYXMva2V5MicsXG4gICAgICAgICAgICBUYXJnZXRLZXlJZDogJzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTAwMScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBbGlhc05hbWU6ICdhbGlhcy9rZXkzJyxcbiAgICAgICAgICAgIFRhcmdldEtleUlkOiAnMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MDAyJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwYXJhbXMuTWFya2VyID09ICduZXh0TWFya2VyJykge1xuICAgICAgcmV0dXJuIGNiKG51bGwsIHtcbiAgICAgICAgQWxpYXNlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFsaWFzTmFtZTogJ2FsaWFzL2tleTQnLFxuICAgICAgICAgICAgVGFyZ2V0S2V5SWQ6ICcxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwMDMnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgQWxpYXNOYW1lOiAnYWxpYXMvZm9vJyxcbiAgICAgICAgICAgIFRhcmdldEtleUlkOiAnMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MDA0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFsaWFzTmFtZTogJ2FsaWFzL2tleTUnLFxuICAgICAgICAgICAgVGFyZ2V0S2V5SWQ6ICcxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwMDUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvdmlkZXIuZ2V0VmFsdWUoe1xuICAgIGFjY291bnQ6ICcxMjM0JyxcbiAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIGFsaWFzTmFtZTogJ2FsaWFzL2ZvbycsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAga2V5SWQ6ICcxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwMDQnLFxuICB9KTtcbn0pO1xuXG50ZXN0KCd0aHJvdyBleGNlcHRpb24gLSBubyBrZXkgZm91bmQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHByb3ZpZGVyID0gbmV3IEtleUNvbnRleHRQcm92aWRlclBsdWdpbihtb2NrU0RLKTtcblxuICBBV1MubW9jaygnS01TJywgJ2xpc3RBbGlhc2VzJywgKHBhcmFtczogYXdzLktNUy5MaXN0QWxpYXNlc1JlcXVlc3QsIGNiOiBBd3NDYWxsYmFjazxhd3MuS01TLkxpc3RBbGlhc2VzUmVzcG9uc2U+KSA9PiB7XG4gICAgZXhwZWN0KHBhcmFtcy5LZXlJZCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIHJldHVybiBjYihudWxsLCB7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZXhwZWN0KHByb3ZpZGVyLmdldFZhbHVlKHtcbiAgICBhY2NvdW50OiAnMTIzNCcsXG4gICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICBhbGlhc05hbWU6ICdhbGlhcy9mb28nLFxuICB9KSkucmVqZWN0cy50b1Rocm93KC9Db3VsZCBub3QgZmluZCBhbnkga2V5IHdpdGggYWxpYXMgbmFtZWQvKTtcblxufSk7Il19