Skip to content

Commit 922bc1c

Browse files
committed
feat: getParameters fn
1 parent 3711b81 commit 922bc1c

File tree

3 files changed

+86
-6
lines changed

3 files changed

+86
-6
lines changed

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

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { BaseProvider, DEFAULT_PROVIDERS } from './BaseProvider';
22
import { SSMClient, GetParameterCommand, paginateGetParametersByPath } from '@aws-sdk/client-ssm';
33
import type { SSMClientConfig, GetParameterCommandInput, GetParametersByPathCommandInput } from '@aws-sdk/client-ssm';
4-
import type { SSMGetOptionsInterface } from 'types/SSMProvider';
5-
import { PaginationConfiguration } from '@aws-sdk/types';
4+
import type { SSMGetMultipleOptionsInterface, SSMGetOptionsInterface } from 'types/SSMProvider';
5+
import type { PaginationConfiguration } from '@aws-sdk/types';
66

77
class SSMProvider extends BaseProvider {
88
public client: SSMClient;
@@ -71,7 +71,16 @@ const getParameter = (name: string, options?: SSMGetOptionsInterface): Promise<u
7171
return DEFAULT_PROVIDERS.ssm.get(name, options);
7272
};
7373

74+
const getParameters = (path: string, options?: SSMGetMultipleOptionsInterface): Promise<undefined | Record<string, unknown>> => {
75+
if (!DEFAULT_PROVIDERS.hasOwnProperty('ssm')) {
76+
DEFAULT_PROVIDERS.ssm = new SSMProvider();
77+
}
78+
79+
return DEFAULT_PROVIDERS.ssm.getMultiple(path, options);
80+
};
81+
7482
export {
7583
SSMProvider,
7684
getParameter,
85+
getParameters,
7786
};

Diff for: packages/parameters/tests/unit/SSMProvider.test.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -194,15 +194,15 @@ describe('Class: SSMProvider', () => {
194194
mockClient(SSMClient).on(GetParametersByPathCommand)
195195
.resolvesOnce({
196196
Parameters: [{
197-
'Name':'/foo/bar',
198-
'Value':'bar',
197+
Name:'/foo/bar',
198+
Value:'bar',
199199
}],
200200
NextToken: 'someToken',
201201
})
202202
.resolves({
203203
Parameters: [{
204-
'Name':'/foo/baz',
205-
'Value':'baz',
204+
Name:'/foo/baz',
205+
Value:'baz',
206206
}]
207207
});
208208
const parameterPath = '/foo';

Diff for: packages/parameters/tests/unit/getParameters.test.ts

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/**
2+
* Test getParameters function
3+
*
4+
* @group unit/parameters/SSMProvider/getParameters/function
5+
*/
6+
import { DEFAULT_PROVIDERS } from '../../src/BaseProvider';
7+
import { SSMProvider, getParameters } from '../../src/SSMProvider';
8+
import { SSMClient, GetParametersByPathCommand } from '@aws-sdk/client-ssm';
9+
import { mockClient } from 'aws-sdk-client-mock';
10+
import 'aws-sdk-client-mock-jest';
11+
12+
describe('Function: getParameters', () => {
13+
14+
beforeEach(() => {
15+
jest.clearAllMocks();
16+
});
17+
18+
test('when called and a default provider doesn\'t exist, it instantiates one and returns the value', async () => {
19+
20+
// Prepare
21+
const parameterPath = '/foo';
22+
const parameterValue = 'bar';
23+
const client = mockClient(SSMClient).on(GetParametersByPathCommand).resolves({
24+
Parameters: [{
25+
Name: '/foo/bar',
26+
Value: parameterValue,
27+
}],
28+
});
29+
30+
// Act
31+
const parameters = await getParameters(parameterPath);
32+
33+
// Assess
34+
expect(client).toReceiveCommandWith(GetParametersByPathCommand, {
35+
Path: parameterPath,
36+
});
37+
expect(parameters).toEqual({
38+
bar: parameterValue,
39+
});
40+
41+
});
42+
43+
test('when called and a default provider exists, it uses it and returns the value', async () => {
44+
45+
// Prepare
46+
const provider = new SSMProvider();
47+
DEFAULT_PROVIDERS.ssm = provider;
48+
const parameterPath = '/foo';
49+
const parameterValue = 'bar';
50+
const client = mockClient(SSMClient).on(GetParametersByPathCommand).resolves({
51+
Parameters: [{
52+
Name: '/foo/bar',
53+
Value: parameterValue,
54+
}],
55+
});
56+
57+
// Act
58+
const parameters = await getParameters(parameterPath);
59+
60+
// Assess
61+
expect(client).toReceiveCommandWith(GetParametersByPathCommand, {
62+
Path: parameterPath,
63+
});
64+
expect(parameters).toEqual({
65+
'bar': parameterValue,
66+
});
67+
expect(DEFAULT_PROVIDERS.ssm).toBe(provider);
68+
69+
});
70+
71+
});

0 commit comments

Comments
 (0)