Skip to content

Commit 5cf7815

Browse files
committed
feat: base get
1 parent 323874c commit 5cf7815

File tree

2 files changed

+30
-27
lines changed

2 files changed

+30
-27
lines changed

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

+3-20
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,12 @@ import { BaseProvider } from './BaseProvider';
22
import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm';
33
import type { SSMClientConfig, GetParameterCommandInput } from '@aws-sdk/client-ssm';
44

5-
interface SSMProviderOptionsBase {
6-
awsSdkV3Client?: SSMClient
7-
sdkConfig?: SSMClientConfig
8-
}
9-
10-
interface SSMOne extends SSMProviderOptionsBase {
11-
awsSdkV3Client?: SSMClient
12-
sdkConfig?: never
13-
}
14-
15-
interface SSMTwo extends SSMProviderOptionsBase {
16-
awsSdkV3Client?: never
17-
sdkConfig?: SSMClientConfig
18-
}
19-
20-
type SSMProviderOptions = SSMOne | SSMTwo;
21-
225
class SSMProvider extends BaseProvider {
236
public client: SSMClient;
247

25-
public constructor(options: SSMProviderOptions = {}) {
8+
public constructor(config: SSMClientConfig = {}) {
269
super();
27-
this.client = new SSMClient(options);
10+
this.client = new SSMClient(config);
2811
}
2912

3013
protected async _get(name: string, sdkOptions?: Partial<GetParameterCommandInput>): Promise<string | undefined> {
@@ -39,7 +22,7 @@ class SSMProvider extends BaseProvider {
3922
return result.Parameter?.Value;
4023
}
4124

42-
protected async _getMultiple(_path: string): Promise<Record<string, string | undefined>> {
25+
protected _getMultiple(_path: string): Promise<Record<string, string | undefined>> {
4326
throw Error('Not implemented.');
4427
}
4528
}

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

+27-7
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,61 @@ describe('Class: SSMProvider', () => {
1616

1717
describe('Method: get', () => {
1818

19-
test('when called without sdkOptions, it gets the parameter using the name only', () => {
19+
test('when called without sdkOptions, it gets the parameter using the name and with no decryption', async () => {
2020

2121
// Prepare
2222
const provider = new SSMProvider();
23-
const client = mockClient(SSMClient).on(GetParameterCommand).resolves({});
2423
const parameterName = 'foo';
24+
const parameterValue = 'foo';
25+
const client = mockClient(SSMClient).on(GetParameterCommand).resolves({
26+
Parameter: {
27+
Value: parameterValue,
28+
},
29+
});
2530

2631
// Act
27-
provider.get(parameterName);
32+
const value = await provider.get(parameterName);
2833

2934
// Assess
3035
expect(client).toReceiveCommandWith(GetParameterCommand, {
31-
Name: parameterName
36+
Name: parameterName,
3237
});
38+
expect(value).toBe(parameterValue);
3339

3440
});
3541

36-
test('when called with sdkOptions, it gets the parameter using the parameters', () => {
42+
test('when called with sdkOptions, it gets the parameter using the parameters', async () => {
3743

3844
// Prepare
3945
const provider = new SSMProvider();
4046
const client = mockClient(SSMClient).on(GetParameterCommand).resolves({});
4147
const parameterName = 'foo';
4248

4349
// Act
44-
provider.get(parameterName, { sdkOptions: { } });
50+
provider.get(parameterName, { sdkOptions: { WithDecryption: true } });
4551

4652
// Assess
4753
expect(client).toReceiveCommandWith(GetParameterCommand, {
4854
Name: parameterName,
49-
55+
WithDecryption: true,
5056
});
5157

5258
});
5359

5460
});
5561

62+
describe('Method: _getMultiple', () => {
63+
64+
test('when called throws', async () => {
65+
66+
// Prepare
67+
const provider = new SSMProvider();
68+
69+
// Act / Assess
70+
expect(provider.getMultiple('foo')).rejects.toThrow('Not implemented.');
71+
72+
});
73+
74+
});
75+
5676
});

0 commit comments

Comments
 (0)