@sp-tools/kloud-parameter
Advanced tools
Comparing version 0.0.2 to 0.0.3
@@ -1,5 +0,5 @@ | ||
const { makeParameterStore } = require('./lib/make-kloud-parameter'); | ||
const { makeKloudStore } = require('./lib/make-kloud-parameter'); | ||
module.exports = { | ||
makeParameterStore | ||
makeKloudStore | ||
}; |
const get = require('lodash.get'); | ||
const { | ||
makeGetParameters: makeGetParametersFromDdb | ||
} = require('./ddb/make-get-parameters'); | ||
const { | ||
makeGetParameters: makeGetParametersFromSsm | ||
} = require('./ssm/make-get-parameters'); | ||
const { makeGetParameters: makeGetParametersFromDdb } = require('./ddb/make-get-parameters'); | ||
const { makeGetParameters: makeGetParametersFromSsm } = require('./ssm/make-get-parameters'); | ||
const makeParameterStore = ({ configPath, secretPath, provider }) => { | ||
const makeKloudStore = ({ configPath, secretPath, provider }) => { | ||
const providerName = get(provider, 'name'); | ||
@@ -21,3 +17,3 @@ const ssmMode = providerName === 'ssm'; | ||
provider | ||
}) | ||
}); | ||
@@ -38,2 +34,2 @@ const getConfigsFromSsm = makeGetParametersFromSsm({ | ||
module.exports = { makeParameterStore }; | ||
module.exports = { makeKloudStore }; |
'use strict'; | ||
const { makeParameterStore } = require('../index'); | ||
const { makeKloudStore } = require('../index'); | ||
@@ -11,50 +11,45 @@ const mockGetLatestVersion = jest.fn(); | ||
mockGetLatestVersion | ||
.mockImplementation(({ parameterName }) => { | ||
const ddbStore = { | ||
'/stage/config/CONFIG_1': { | ||
name: '/stage/config/CONFIG_1', | ||
value: 'config 1' | ||
}, | ||
'/stage/config/CONFIG_2': { | ||
name: '/stage/config/CONFIG_2', | ||
value: 'config 2' | ||
}, | ||
'/stage/secret/SECRET_1': { | ||
name: '/stage/secret/SECRET_1', | ||
value: 'secret 1' | ||
}, | ||
'/stage/secret/SECRET_2': { | ||
name: '/stage/secret/SECRET_2', | ||
value: 'secret 2' | ||
} | ||
mockGetLatestVersion.mockImplementation(({ parameterName }) => { | ||
const ddbStore = { | ||
'/stage/config/CONFIG_1': { | ||
name: '/stage/config/CONFIG_1', | ||
value: 'config 1' | ||
}, | ||
'/stage/config/CONFIG_2': { | ||
name: '/stage/config/CONFIG_2', | ||
value: 'config 2' | ||
}, | ||
'/stage/secret/SECRET_1': { | ||
name: '/stage/secret/SECRET_1', | ||
value: 'secret 1' | ||
}, | ||
'/stage/secret/SECRET_2': { | ||
name: '/stage/secret/SECRET_2', | ||
value: 'secret 2' | ||
} | ||
return Promise.resolve(ddbStore[parameterName]); | ||
}); | ||
}; | ||
return Promise.resolve(ddbStore[parameterName]); | ||
}); | ||
describe('#ParameterStore - DDB', () => { | ||
it ('should return configs for a given keys', () => { | ||
it('should return configs for a given keys', () => { | ||
const configPath = '/stage/config'; | ||
const secretPath = '/stage/secret'; | ||
const parameterStore = makeParameterStore({ configPath, secretPath }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath }); | ||
return parameterStore | ||
.getConfigs(['CONFIG_1', 'CONFIG_2']) | ||
.then(configs => { | ||
expect(configs).toEqual({ CONFIG_1: 'config 1', CONFIG_2: 'config 2' }); | ||
}); | ||
return parameterStore.getConfigs(['CONFIG_1', 'CONFIG_2']).then(configs => { | ||
expect(configs).toEqual({ CONFIG_1: 'config 1', CONFIG_2: 'config 2' }); | ||
}); | ||
}); | ||
it ('should return secrets for a given keys', () => { | ||
it('should return secrets for a given keys', () => { | ||
const configPath = '/stage/config'; | ||
const secretPath = '/stage/secret'; | ||
const parameterStore = makeParameterStore({ configPath, secretPath }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath }); | ||
return parameterStore | ||
.getSecrets(['SECRET_1', 'SECRET_2']) | ||
.then(secrets => { | ||
expect(secrets).toEqual({ SECRET_1: 'secret 1', SECRET_2: 'secret 2' }); | ||
}); | ||
return parameterStore.getSecrets(['SECRET_1', 'SECRET_2']).then(secrets => { | ||
expect(secrets).toEqual({ SECRET_1: 'secret 1', SECRET_2: 'secret 2' }); | ||
}); | ||
}); | ||
@@ -68,57 +63,34 @@ | ||
const parameterStore = makeParameterStore({ configPath, secretPath }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath }); | ||
return Promise.all([ | ||
parameterStore.getConfigs([ | ||
'CONFIG_1', | ||
'CONFIG_2' | ||
]), | ||
parameterStore.getSecrets([ | ||
'SECRET_1', | ||
'SECRET_2' | ||
]) | ||
]) | ||
.then(([configs, secrets]) => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
}); | ||
return Promise.all([parameterStore.getConfigs(['CONFIG_1', 'CONFIG_2']), parameterStore.getSecrets(['SECRET_1', 'SECRET_2'])]) | ||
.then(([configs, secrets]) => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
}); | ||
expect(secrets).toEqual({ | ||
SECRET_1: 'secret 1', | ||
SECRET_2: 'secret 2' | ||
expect(secrets).toEqual({ | ||
SECRET_1: 'secret 1', | ||
SECRET_2: 'secret 2' | ||
}); | ||
expect(mockGetLatestVersion.mock.calls.length).toEqual(4); | ||
return Promise.all([parameterStore.getConfigs(['CONFIG_1', 'CONFIG_2']), parameterStore.getSecrets(['SECRET_1', 'SECRET_2'])]); | ||
}) | ||
.then(([configs, secrets]) => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
}); | ||
expect(mockGetLatestVersion.mock.calls.length).toEqual(4); | ||
expect(secrets).toEqual({ | ||
SECRET_1: 'secret 1', | ||
SECRET_2: 'secret 2' | ||
}); | ||
return Promise.all([ | ||
parameterStore.getConfigs([ | ||
'CONFIG_1', | ||
'CONFIG_2' | ||
]), | ||
parameterStore.getSecrets([ | ||
'SECRET_1', | ||
'SECRET_2' | ||
]) | ||
]) | ||
}) | ||
.then(([configs, secrets]) => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
expect(mockGetLatestVersion.mock.calls.length).toEqual(4); | ||
}); | ||
expect(secrets).toEqual({ | ||
SECRET_1: 'secret 1', | ||
SECRET_2: 'secret 2' | ||
}) | ||
expect(mockGetLatestVersion.mock.calls.length).toEqual(4); | ||
}) | ||
}); | ||
}); | ||
@@ -5,9 +5,9 @@ 'use strict'; | ||
AWS.SSM.mockImplementation(function() { | ||
AWS.SSM.mockImplementation(function () { | ||
return { | ||
getParameters: mockGetParameters | ||
} | ||
}; | ||
}); | ||
const { makeParameterStore } = require('../index'); | ||
const { makeKloudStore } = require('../index'); | ||
const provider = { | ||
@@ -18,3 +18,3 @@ name: 'ssm' | ||
describe('#ParameterStore - SSM', () => { | ||
it ('should return configs for a given keys', () => { | ||
it('should return configs for a given keys', () => { | ||
const configPath = '/stage/config'; | ||
@@ -24,7 +24,7 @@ const secretPath = '/stage/secret'; | ||
mockGetParameters.mockClear(); | ||
mockGetParameters | ||
.mockImplementation(() => { | ||
return { | ||
// The parameters returned are out of order to mimic SSM behavior | ||
promise: () => Promise.resolve({ | ||
mockGetParameters.mockImplementation(() => { | ||
return { | ||
// The parameters returned are out of order to mimic SSM behavior | ||
promise: () => | ||
Promise.resolve({ | ||
Parameters: [ | ||
@@ -42,15 +42,13 @@ { | ||
}) | ||
} | ||
}); | ||
}; | ||
}); | ||
const parameterStore = makeParameterStore({ configPath, secretPath, provider }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath, provider }); | ||
return parameterStore | ||
.getConfigs(['CONFIG_1', 'CONFIG_2']) | ||
.then(configs => { | ||
expect(configs).toEqual({ CONFIG_1: 'config 1', CONFIG_2: 'config 2' }); | ||
}); | ||
return parameterStore.getConfigs(['CONFIG_1', 'CONFIG_2']).then(configs => { | ||
expect(configs).toEqual({ CONFIG_1: 'config 1', CONFIG_2: 'config 2' }); | ||
}); | ||
}); | ||
it ('should return secrets for a given keys', () => { | ||
it('should return secrets for a given keys', () => { | ||
const configPath = '/stage/config'; | ||
@@ -60,6 +58,6 @@ const secretPath = '/stage/secret'; | ||
mockGetParameters.mockClear(); | ||
mockGetParameters | ||
.mockImplementation(() => { | ||
return { | ||
promise: () => Promise.resolve({ | ||
mockGetParameters.mockImplementation(() => { | ||
return { | ||
promise: () => | ||
Promise.resolve({ | ||
Parameters: [ | ||
@@ -77,12 +75,10 @@ { | ||
}) | ||
} | ||
}); | ||
}; | ||
}); | ||
const parameterStore = makeParameterStore({ configPath, secretPath, provider }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath, provider }); | ||
return parameterStore | ||
.getSecrets(['SECRET_1', 'SECRET_2']) | ||
.then(secrets => { | ||
expect(secrets).toEqual({ SECRET_1: 'secret 1', SECRET_2: 'secret 2' }); | ||
}); | ||
return parameterStore.getSecrets(['SECRET_1', 'SECRET_2']).then(secrets => { | ||
expect(secrets).toEqual({ SECRET_1: 'secret 1', SECRET_2: 'secret 2' }); | ||
}); | ||
}); | ||
@@ -95,6 +91,6 @@ | ||
mockGetParameters.mockClear(); | ||
mockGetParameters | ||
.mockImplementation(() => { | ||
return { | ||
promise: () => Promise.resolve({ | ||
mockGetParameters.mockImplementation(() => { | ||
return { | ||
promise: () => | ||
Promise.resolve({ | ||
Parameters: [ | ||
@@ -112,32 +108,27 @@ { | ||
}) | ||
} | ||
}); | ||
}; | ||
}); | ||
const parameterStore = makeParameterStore({ configPath, secretPath, provider }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath, provider }); | ||
return parameterStore.getConfigs([ | ||
'CONFIG_1', | ||
'CONFIG_2' | ||
]) | ||
.then(configs => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
}); | ||
return parameterStore | ||
.getConfigs(['CONFIG_1', 'CONFIG_2']) | ||
.then(configs => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
}); | ||
expect(mockGetParameters.mock.calls.length).toEqual(1); | ||
expect(mockGetParameters.mock.calls.length).toEqual(1); | ||
return parameterStore.getConfigs([ | ||
'CONFIG_1', | ||
'CONFIG_2' | ||
]) | ||
}) | ||
.then(configs => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
return parameterStore.getConfigs(['CONFIG_1', 'CONFIG_2']); | ||
}) | ||
.then(configs => { | ||
expect(configs).toEqual({ | ||
CONFIG_1: 'config 1', | ||
CONFIG_2: 'config 2' | ||
}); | ||
expect(mockGetParameters.mock.calls.length).toEqual(1); | ||
}); | ||
expect(mockGetParameters.mock.calls.length).toEqual(1); | ||
}) | ||
}); | ||
@@ -150,6 +141,6 @@ | ||
mockGetParameters.mockClear(); | ||
mockGetParameters | ||
.mockImplementation(() => { | ||
return { | ||
promise: () => Promise.resolve({ | ||
mockGetParameters.mockImplementation(() => { | ||
return { | ||
promise: () => | ||
Promise.resolve({ | ||
Parameters: [ | ||
@@ -163,15 +154,9 @@ { | ||
}) | ||
} | ||
}); | ||
}; | ||
}); | ||
const parameterStore = makeParameterStore({ configPath, secretPath, provider }); | ||
const parameterStore = makeKloudStore({ configPath, secretPath, provider }); | ||
return expect(parameterStore.getSecrets(['SECRET_1', 'SECRET_2'])) | ||
.rejects.toThrow('Unabled to fetch: ["/stage/secret/SECRET_2"]'); | ||
return expect(parameterStore.getSecrets(['SECRET_1', 'SECRET_2'])).rejects.toThrow('Unabled to fetch: ["/stage/secret/SECRET_2"]'); | ||
}); | ||
}); | ||
{ | ||
"name": "@sp-tools/kloud-parameter", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Read configuration from parameter store", | ||
@@ -10,3 +10,3 @@ "main": "index.js", | ||
"engines": { | ||
"node": ">=8.10.0" | ||
"node": ">=10.x" | ||
}, | ||
@@ -32,3 +32,3 @@ "keywords": [], | ||
}, | ||
"gitHead": "1b845ae6039673fa4b4116a43e191df24ac8313a" | ||
"gitHead": "f613c362807f0c552b382d80b95c7f210eb8ed99" | ||
} |
@@ -23,6 +23,6 @@ # Parameter Store Reader | ||
```js | ||
const { makeParameterStore } = require('@sp-tools/kloud-parameter'); | ||
const { makeKloudStore } = require('@sp-tools/kloud-parameter'); | ||
const { STAGE } = process.env; | ||
const parameterStore = makeParameterStore({ | ||
const parameterStore = makeKloudStore({ | ||
configPath: `/${SERVICE_STAGE}/foo-service/config`, | ||
@@ -64,6 +64,6 @@ secretPath: `/${SERVICE_STAGE}/foo-service/secret`, | ||
```js | ||
const { makeParameterStore } = require('@sp-tools/kloud-parameter'); | ||
const { makeKloudStore } = require('@sp-tools/kloud-parameter'); | ||
const { STAGE } = process.env; | ||
const parameterStore = makeParameterStore({ | ||
const parameterStore = makeKloudStore({ | ||
configPath: `/${SERVICE_STAGE}/foo-service/config`, | ||
@@ -70,0 +70,0 @@ secretPath: `/${SERVICE_STAGE}/foo-service/secret`, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20095
17
535