Skip to content

Commit c844f49

Browse files
committed
feat: completed SSMProvider implementation
1 parent 362e7bd commit c844f49

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed

Diff for: packages/parameters/src/SSMProvider.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class SSMProvider extends BaseProvider {
5656
* @param {Record<string, unknown>[]} parameters - List of parameter names, and any optional overrides
5757
*
5858
*/
59-
public async getParametersByName(parameters: Record<string, SSMGetParametersByNameOptionsInterface>, options: SSMGetParametersByNameOptionsInterface): Promise<Record<string, unknown>> {
59+
public async getParametersByName(parameters: Record<string, SSMGetParametersByNameOptionsInterface>, options?: SSMGetParametersByNameOptionsInterface): Promise<Record<string, unknown>> {
6060
const configs = { ...{
6161
decrypt: false,
6262
maxAge: DEFAULT_MAX_AGE_SECS,
@@ -372,8 +372,17 @@ const getParameters = (path: string, options?: SSMGetMultipleOptionsInterface):
372372
return DEFAULT_PROVIDERS.ssm.getMultiple(path, options);
373373
};
374374

375+
const getParametersByName = (parameters: Record<string, SSMGetParametersByNameOptionsInterface>, options?: SSMGetParametersByNameOptionsInterface): Promise<Record<string, unknown>> => {
376+
if (!DEFAULT_PROVIDERS.hasOwnProperty('ssm')) {
377+
DEFAULT_PROVIDERS.ssm = new SSMProvider();
378+
}
379+
380+
return (DEFAULT_PROVIDERS.ssm as SSMProvider).getParametersByName(parameters, options);
381+
};
382+
375383
export {
376384
SSMProvider,
377385
getParameter,
378386
getParameters,
387+
getParametersByName,
379388
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* Test getParametersByName function
3+
*
4+
* @group unit/parameters/SSMProvider/getParametersByName/function
5+
*/
6+
import { DEFAULT_PROVIDERS } from '../../src/BaseProvider';
7+
import { SSMProvider, getParametersByName } from '../../src/SSMProvider';
8+
9+
describe('Function: getParametersByName', () => {
10+
11+
beforeEach(() => {
12+
jest.clearAllMocks();
13+
});
14+
15+
test('when called and a default provider doesn\'t exist, it instantiates one and returns the value', async () => {
16+
17+
// Prepare
18+
const parameters = {
19+
'/foo/bar': {
20+
maxAge: 1000,
21+
},
22+
'/foo/baz': {
23+
maxAge: 2000,
24+
}
25+
};
26+
const getParametersByNameSpy = jest.spyOn(SSMProvider.prototype, 'getParametersByName').mockImplementation();
27+
28+
// Act
29+
await getParametersByName(parameters);
30+
31+
// Assess
32+
expect(getParametersByNameSpy).toHaveBeenCalledWith(parameters, undefined);
33+
34+
});
35+
36+
test('when called and a default provider exists, it uses it and returns the value', async () => {
37+
38+
// Prepare
39+
const provider = new SSMProvider();
40+
DEFAULT_PROVIDERS.ssm = provider;
41+
const parameters = {
42+
'/foo/bar': {
43+
maxAge: 1000,
44+
},
45+
'/foo/baz': {
46+
maxAge: 2000,
47+
}
48+
};
49+
const getParametersByNameSpy = jest.spyOn(provider, 'getParametersByName').mockImplementation();
50+
51+
// Act
52+
await getParametersByName(parameters);
53+
54+
// Assess
55+
expect(getParametersByNameSpy).toHaveBeenCalledWith(parameters, undefined);
56+
expect(DEFAULT_PROVIDERS.ssm).toBe(provider);
57+
58+
});
59+
60+
});

0 commit comments

Comments
 (0)