1
- import { GetParameterCommandOutput , SSM } from '@aws-sdk/client-ssm' ;
1
+ import {
2
+ GetParameterCommand ,
3
+ GetParameterCommandOutput ,
4
+ PutParameterCommand ,
5
+ PutParameterCommandOutput ,
6
+ SSMClient ,
7
+ } from '@aws-sdk/client-ssm' ;
8
+ import { mockClient } from 'aws-sdk-client-mock' ;
9
+ import 'aws-sdk-client-mock-jest' ;
2
10
import nock from 'nock' ;
3
11
4
- import { getParameterValue } from '.' ;
5
-
6
- jest . mock ( '@aws-sdk/client-ssm' ) ;
12
+ import { getParameter , putParameter } from '.' ;
7
13
14
+ const mockSSMClient = mockClient ( SSMClient ) ;
8
15
const cleanEnv = process . env ;
9
16
10
17
beforeEach ( ( ) => {
@@ -14,8 +21,8 @@ beforeEach(() => {
14
21
nock . disableNetConnect ( ) ;
15
22
} ) ;
16
23
17
- describe ( 'Test getParameterValue ' , ( ) => {
18
- test ( 'Gets parameters and returns string' , async ( ) => {
24
+ describe ( 'Test getParameter and putParameter ' , ( ) => {
25
+ it ( 'Gets parameters and returns string' , async ( ) => {
19
26
// Arrange
20
27
const parameterValue = 'test' ;
21
28
const parameterName = 'testParam' ;
@@ -30,16 +37,94 @@ describe('Test getParameterValue', () => {
30
37
} ,
31
38
} ;
32
39
33
- SSM . prototype . getParameter = jest . fn ( ) . mockResolvedValue ( output ) ;
40
+ mockSSMClient . on ( GetParameterCommand ) . resolves ( output ) ;
34
41
35
42
// Act
36
- const result = await getParameterValue ( parameterName ) ;
43
+ const result = await getParameter ( parameterName ) ;
37
44
38
45
// Assert
39
46
expect ( result ) . toBe ( parameterValue ) ;
40
47
} ) ;
41
48
42
- test ( 'Gets invalid parameters and returns string' , async ( ) => {
49
+ it ( 'Puts parameters and returns error on failure' , async ( ) => {
50
+ // Arrange
51
+ const parameterValue = 'test' ;
52
+ const parameterName = 'testParam' ;
53
+ const output : PutParameterCommandOutput = {
54
+ $metadata : {
55
+ httpStatusCode : 401 ,
56
+ } ,
57
+ } ;
58
+
59
+ mockSSMClient . on ( PutParameterCommand ) . resolves ( output ) ;
60
+
61
+ // Act
62
+ expect ( putParameter ( parameterName , parameterValue , true ) ) . rejects ;
63
+ } ) ;
64
+
65
+ it ( 'Puts parameters and returns success' , async ( ) => {
66
+ // Arrange
67
+ const parameterValue = 'test' ;
68
+ const parameterName = 'testParam' ;
69
+ const output : PutParameterCommandOutput = {
70
+ $metadata : {
71
+ httpStatusCode : 200 ,
72
+ } ,
73
+ } ;
74
+
75
+ mockSSMClient . on ( PutParameterCommand ) . resolves ( output ) ;
76
+
77
+ // Act
78
+ expect ( putParameter ( parameterName , parameterValue , true ) ) . resolves ;
79
+ } ) ;
80
+
81
+ it ( 'Puts parameters as String' , async ( ) => {
82
+ // Arrange
83
+ const parameterValue = 'test' ;
84
+ const parameterName = 'testParam' ;
85
+ const secure = false ;
86
+ const output : PutParameterCommandOutput = {
87
+ $metadata : {
88
+ httpStatusCode : 200 ,
89
+ } ,
90
+ } ;
91
+
92
+ mockSSMClient . on ( PutParameterCommand ) . resolves ( output ) ;
93
+
94
+ // Act
95
+ await putParameter ( parameterName , parameterValue , secure ) ;
96
+
97
+ expect ( mockSSMClient ) . toHaveReceivedCommandWith ( PutParameterCommand , {
98
+ Name : parameterName ,
99
+ Value : parameterValue ,
100
+ Type : 'String' ,
101
+ } ) ;
102
+ } ) ;
103
+
104
+ it ( 'Puts parameters as SecureString' , async ( ) => {
105
+ // Arrange
106
+ const parameterValue = 'test' ;
107
+ const parameterName = 'testParam' ;
108
+ const secure = true ;
109
+ const output : PutParameterCommandOutput = {
110
+ $metadata : {
111
+ httpStatusCode : 200 ,
112
+ } ,
113
+ } ;
114
+
115
+ mockSSMClient . on ( PutParameterCommand ) . resolves ( output ) ;
116
+
117
+ // Act
118
+ await putParameter ( parameterName , parameterValue , secure ) ;
119
+
120
+ expect ( mockSSMClient ) . toHaveReceivedCommandWith ( PutParameterCommand , {
121
+ Name : parameterName ,
122
+ Value : parameterValue ,
123
+ Type : 'SecureString' ,
124
+ } ) ;
125
+ } ) ;
126
+
127
+ it ( 'Gets invalid parameters and returns string' , async ( ) => {
43
128
// Arrange
44
129
const parameterName = 'invalid' ;
45
130
const output : GetParameterCommandOutput = {
@@ -48,10 +133,10 @@ describe('Test getParameterValue', () => {
48
133
} ,
49
134
} ;
50
135
51
- SSM . prototype . getParameter = jest . fn ( ) . mockResolvedValue ( output ) ;
136
+ mockSSMClient . on ( GetParameterCommand ) . resolves ( output ) ;
52
137
53
138
// Act
54
- const result = await getParameterValue ( parameterName ) ;
139
+ const result = await getParameter ( parameterName ) ;
55
140
56
141
// Assert
57
142
expect ( result ) . toBe ( undefined ) ;
0 commit comments