Skip to content

Commit bc9ed64

Browse files
author
Esen Sagynov
committed
Updated dependencies.
- Updated dependencies. - Updated AWS SDK to v3. - Removed mock classes in favour of existing NPM package.
1 parent 5762e3e commit bc9ed64

8 files changed

+2627
-3057
lines changed

package.json

+20-16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@cloudcomponents/lambda-utils",
3-
"version": "0.2.0",
3+
"version": "1.0.0",
44
"description": "Lambda utils for cloudcomponents cdk constructs",
55
"license": "MIT",
66
"author": {
@@ -29,25 +29,29 @@
2929
"prepare": "yarn build && yarn test"
3030
},
3131
"peerDependencies": {
32-
"aws-sdk": ">=2.0"
32+
"@aws-sdk/client-secrets-manager": ">=3.567.0",
33+
"@aws-sdk/client-ssm": ">=3.567.0"
3334
},
3435
"dependencies": {
35-
"aws-parameter-cache": "^1.2.0"
36+
"aws-parameter-cache": "^2.0.15"
3637
},
3738
"devDependencies": {
38-
"@types/jest": "^26.0.20",
39-
"@types/node": "12",
40-
"@typescript-eslint/eslint-plugin": "^4.17.0",
41-
"@typescript-eslint/parser": "^4.17.0",
42-
"aws-sdk": "^2.863.0",
43-
"eslint": "^7.22.0",
44-
"eslint-config-prettier": "^8.1.0",
45-
"eslint-plugin-prettier": "^3.3.1",
46-
"jest": "^26.6.3",
47-
"prettier": "^2.2.1",
48-
"rimraf": "^3.0.2",
49-
"ts-jest": "^26.5.3",
50-
"typescript": "^4.2.3"
39+
"@aws-sdk/client-secrets-manager": "^3.567.0",
40+
"@aws-sdk/client-ssm": "^3.567.0",
41+
"@types/jest": "^29.5.12",
42+
"@types/node": "^20.12.8",
43+
"@typescript-eslint/eslint-plugin": "^7.8.0",
44+
"@typescript-eslint/parser": "^7.8.0",
45+
"aws-sdk-client-mock": "^4.0.0",
46+
"aws-sdk-client-mock-jest": "^4.0.0",
47+
"eslint": "^9.1.1",
48+
"eslint-config-prettier": "^9.1.0",
49+
"eslint-plugin-prettier": "^5.1.3",
50+
"jest": "^29.7.0",
51+
"prettier": "^3.2.5",
52+
"rimraf": "^5.0.5",
53+
"ts-jest": "^29.1.2",
54+
"typescript": "^5.4.5"
5155
},
5256
"publishConfig": {
5357
"access": "public"
+25-15
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,30 @@
1-
import { SSMParameterMock } from "./ssm-parameter-mock";
2-
import { SecretsManagerMock } from "./secrets-manager-mock";
1+
import { PutSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
2+
import { ParameterType, PutParameterCommand, SSMClient } from "@aws-sdk/client-ssm";
3+
import { mockClient } from 'aws-sdk-client-mock';
4+
import 'aws-sdk-client-mock-jest';
5+
36
import { SecretKeyStore } from "../secret-key-store";
47
import { KeyType } from "../key-type";
58

6-
const ssmMock = new SSMParameterMock();
7-
const secretsManagerMock = new SecretsManagerMock();
8-
9-
jest.mock("aws-sdk", () => ({
10-
SSM: jest.fn().mockImplementation(() => ssmMock.implementation),
11-
SecretsManager: jest
12-
.fn()
13-
.mockImplementation(() => secretsManagerMock.implementation),
14-
}));
9+
const ssmClientMock = mockClient(SSMClient);
10+
const secretsManagerClientMock = mockClient(SecretsManagerClient);
1511

1612
beforeEach(() => {
17-
ssmMock.reset();
18-
secretsManagerMock.reset();
13+
secretsManagerClientMock.reset();
14+
ssmClientMock.reset();
1915
});
2016

2117
test("ssm parameter store", async () => {
2218
const value = "secret";
2319
const parameterName = "foo";
20+
const requestParams = {
21+
Name: parameterName,
22+
Value: value,
23+
Type: ParameterType.SECURE_STRING,
24+
Overwrite: true,
25+
};
26+
27+
ssmClientMock.on(PutParameterCommand, requestParams).resolves({});
2428

2529
const secretKeyStoreString = JSON.stringify({
2630
secretKeyType: KeyType.SSM_PARAMETER,
@@ -31,12 +35,18 @@ test("ssm parameter store", async () => {
3135

3236
secretKeyStore.putSecret(value);
3337

34-
expect(ssmMock.getParameter(parameterName).Value).toBe(value);
38+
expect(ssmClientMock).toHaveReceivedCommandWith(PutParameterCommand, requestParams);
3539
});
3640

3741
test("secrets manger store", async () => {
3842
const value = "secret";
3943
const secretId = "foo";
44+
const requestParams = {
45+
SecretId: secretId,
46+
SecretString: value,
47+
};
48+
49+
secretsManagerClientMock.on(PutSecretValueCommand, requestParams).resolves({});
4050

4151
const secretKeyStoreString = JSON.stringify({
4252
secretKeyType: KeyType.SECRETS_MANAGER,
@@ -47,5 +57,5 @@ test("secrets manger store", async () => {
4757

4858
secretKeyStore.putSecret(value);
4959

50-
expect(secretsManagerMock.getSecretString(secretId)).toBe(value);
60+
expect(secretsManagerClientMock).toHaveReceivedCommandWith(PutSecretValueCommand, requestParams);
5161
});

src/__tests__/secret-key.test.ts

+38-21
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
1-
import { SSMParameterMock } from "./ssm-parameter-mock";
2-
import { SecretsManagerMock } from "./secrets-manager-mock";
1+
import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager";
2+
import { GetParameterCommand, ParameterType, SSMClient } from "@aws-sdk/client-ssm";
3+
import { mockClient } from 'aws-sdk-client-mock';
4+
35
import { SecretKey } from "../secret-key";
46
import { KeyType } from "../key-type";
57

6-
const ssmMock = new SSMParameterMock();
7-
const secretsManagerMock = new SecretsManagerMock();
8-
9-
jest.mock("aws-sdk", () => ({
10-
SSM: jest.fn().mockImplementation(() => ssmMock.implementation),
11-
SecretsManager: jest
12-
.fn()
13-
.mockImplementation(() => secretsManagerMock.implementation),
14-
}));
8+
const secretsManagerClientMock = mockClient(SecretsManagerClient);
9+
const ssmClientMock = mockClient(SSMClient);
1510

1611
beforeEach(() => {
17-
ssmMock.reset();
18-
secretsManagerMock.reset();
12+
secretsManagerClientMock.reset();
13+
ssmClientMock.reset();
1914
});
2015

2116
test("plain text secret", async () => {
@@ -34,11 +29,17 @@ test("plain text secret", async () => {
3429
test("ssm parameter secret", async () => {
3530
const value = "secret";
3631
const parameterName = "foo";
37-
38-
ssmMock.addParameter({
32+
const requestParams = {
3933
Name: parameterName,
40-
Type: "SecureString",
41-
Value: value,
34+
WithDecryption: true,
35+
};
36+
37+
ssmClientMock.on(GetParameterCommand, requestParams).resolvesOnce({
38+
Parameter: {
39+
Name: parameterName,
40+
Type: ParameterType.SECURE_STRING,
41+
Value: value,
42+
}
4243
});
4344

4445
const secretKeyString = JSON.stringify({
@@ -54,8 +55,16 @@ test("ssm parameter secret", async () => {
5455
test("secrets manger secret", async () => {
5556
const value = "secret";
5657
const secretId = "foo";
57-
58-
secretsManagerMock.addSecretString(secretId, value);
58+
const requestParams = {
59+
SecretId: secretId,
60+
VersionId: undefined,
61+
VersionStage: undefined,
62+
};
63+
64+
secretsManagerClientMock.on(GetSecretValueCommand, requestParams).resolvesOnce({
65+
Name: secretId,
66+
SecretString: value,
67+
});
5968

6069
const secretKeyString = JSON.stringify({
6170
secretKeyType: KeyType.SECRETS_MANAGER,
@@ -71,8 +80,16 @@ test("secrets manger secret with fieldName", async () => {
7180
const value = "secret";
7281
const secretString = JSON.stringify({ xxx: value });
7382
const secretId = "foo";
74-
75-
secretsManagerMock.addSecretString(secretId, secretString);
83+
const requestParams = {
84+
SecretId: secretId,
85+
VersionId: undefined,
86+
VersionStage: undefined,
87+
};
88+
89+
secretsManagerClientMock.on(GetSecretValueCommand, requestParams).resolvesOnce({
90+
Name: secretId,
91+
SecretString: secretString,
92+
});
7693

7794
const secretKeyString = JSON.stringify({
7895
secretKeyType: KeyType.SECRETS_MANAGER,

src/__tests__/secrets-manager-mock.ts

-69
This file was deleted.

src/__tests__/ssm-parameter-mock.ts

-73
This file was deleted.

0 commit comments

Comments
 (0)