4
4
* @group unit/parameters/SSMProvider/class
5
5
*/
6
6
import { SSMProvider } from '../../src/SSMProvider' ;
7
- import { SSMClient , GetParameterCommand } from '@aws-sdk/client-ssm' ;
7
+ import { SSMClient , GetParameterCommand , GetParametersByPathCommand } from '@aws-sdk/client-ssm' ;
8
8
import { mockClient } from 'aws-sdk-client-mock' ;
9
9
import 'aws-sdk-client-mock-jest' ;
10
10
@@ -14,7 +14,7 @@ describe('Class: SSMProvider', () => {
14
14
jest . clearAllMocks ( ) ;
15
15
} ) ;
16
16
17
- describe ( 'Method: get ' , ( ) => {
17
+ describe ( 'Method: _get ' , ( ) => {
18
18
19
19
test ( 'when called without sdkOptions, it gets the parameter using the name and with no decryption' , async ( ) => {
20
20
@@ -47,7 +47,7 @@ describe('Class: SSMProvider', () => {
47
47
const parameterName = 'foo' ;
48
48
49
49
// Act
50
- provider . get ( parameterName , { sdkOptions : { WithDecryption : true } } ) ;
50
+ await provider . get ( parameterName , { sdkOptions : { WithDecryption : true } } ) ;
51
51
52
52
// Assess
53
53
expect ( client ) . toReceiveCommandWith ( GetParameterCommand , {
@@ -65,7 +65,7 @@ describe('Class: SSMProvider', () => {
65
65
const parameterName = 'foo' ;
66
66
67
67
// Act
68
- provider . get ( parameterName , { decrypt : true } ) ;
68
+ await provider . get ( parameterName , { decrypt : true } ) ;
69
69
70
70
// Assess
71
71
expect ( client ) . toReceiveCommandWith ( GetParameterCommand , {
@@ -79,13 +79,142 @@ describe('Class: SSMProvider', () => {
79
79
80
80
describe ( 'Method: _getMultiple' , ( ) => {
81
81
82
- test ( 'when called throws ' , async ( ) => {
82
+ test ( 'when called with only a path, it passes it to the sdk ' , async ( ) => {
83
83
84
84
// Prepare
85
85
const provider = new SSMProvider ( ) ;
86
+ const client = mockClient ( SSMClient ) . on ( GetParametersByPathCommand )
87
+ . resolves ( { } ) ;
88
+ const parameterPath = '/foo' ;
86
89
87
- // Act / Assess
88
- expect ( provider . getMultiple ( 'foo' ) ) . rejects . toThrow ( 'Not implemented.' ) ;
90
+ // Act
91
+ await provider . getMultiple ( parameterPath ) ;
92
+
93
+ // Assess
94
+ expect ( client ) . toReceiveCommandWith ( GetParametersByPathCommand , {
95
+ Path : parameterPath ,
96
+ } ) ;
97
+
98
+ } ) ;
99
+
100
+ test ( 'when called with a path and sdkOptions, it passes them to the sdk' , async ( ) => {
101
+
102
+ // Prepare
103
+ const provider = new SSMProvider ( ) ;
104
+ const client = mockClient ( SSMClient ) . on ( GetParametersByPathCommand )
105
+ . resolves ( {
106
+ Parameters : [ ]
107
+ } ) ;
108
+ const parameterPath = '/foo' ;
109
+
110
+ // Act
111
+ await provider . getMultiple ( parameterPath , { sdkOptions : { MaxResults : 10 } } ) ;
112
+
113
+ // Assess
114
+ expect ( client ) . toReceiveCommandWith ( GetParametersByPathCommand , {
115
+ Path : parameterPath ,
116
+ MaxResults : 10 ,
117
+ } ) ;
118
+
119
+ } ) ;
120
+
121
+ test ( 'when called with no options, it uses the default sdk options' , async ( ) => {
122
+
123
+ // Prepare
124
+ const provider = new SSMProvider ( ) ;
125
+ const client = mockClient ( SSMClient ) . on ( GetParametersByPathCommand )
126
+ . resolves ( {
127
+ Parameters : [ ]
128
+ } ) ;
129
+ const parameterPath = '/foo' ;
130
+
131
+ // Act
132
+ await provider . getMultiple ( parameterPath ) ;
133
+
134
+ // Assess
135
+ expect ( client ) . toReceiveCommandWith ( GetParametersByPathCommand , {
136
+ Path : parameterPath ,
137
+ } ) ;
138
+
139
+ } ) ;
140
+
141
+ test ( 'when called with decrypt or recursive, it passes them to the sdk' , async ( ) => {
142
+
143
+ // Prepare
144
+ const provider = new SSMProvider ( ) ;
145
+ const client = mockClient ( SSMClient ) . on ( GetParametersByPathCommand )
146
+ . resolves ( {
147
+ Parameters : [ ]
148
+ } ) ;
149
+ const parameterPath = '/foo' ;
150
+
151
+ // Act
152
+ await provider . getMultiple ( parameterPath , { recursive : false , decrypt : true } ) ;
153
+
154
+ // Assess
155
+ expect ( client ) . toReceiveCommandWith ( GetParametersByPathCommand , {
156
+ Path : parameterPath ,
157
+ Recursive : false ,
158
+ WithDecryption : true ,
159
+ } ) ;
160
+
161
+ } ) ;
162
+
163
+ test ( 'when multiple parameters that share the same path as suffix are retrieved, it returns an object with the names only' , async ( ) => {
164
+
165
+ // Prepare
166
+ const provider = new SSMProvider ( ) ;
167
+ mockClient ( SSMClient ) . on ( GetParametersByPathCommand )
168
+ . resolves ( {
169
+ Parameters : [ {
170
+ 'Name' :'/foo/bar' ,
171
+ 'Value' :'bar' ,
172
+ } , {
173
+ 'Name' :'/foo/baz' ,
174
+ 'Value' :'baz' ,
175
+ } ]
176
+ } ) ;
177
+ const parameterPath = '/foo' ;
178
+
179
+ // Act
180
+ const parameters = await provider . getMultiple ( parameterPath ) ;
181
+
182
+ // Assess
183
+ expect ( parameters ) . toEqual ( {
184
+ 'bar' : 'bar' ,
185
+ 'baz' : 'baz' ,
186
+ } ) ;
187
+
188
+ } ) ;
189
+
190
+ test ( 'when multiple pages are found, it returns an object with all the parameters' , async ( ) => {
191
+
192
+ // Prepare
193
+ const provider = new SSMProvider ( ) ;
194
+ mockClient ( SSMClient ) . on ( GetParametersByPathCommand )
195
+ . resolvesOnce ( {
196
+ Parameters : [ {
197
+ 'Name' :'/foo/bar' ,
198
+ 'Value' :'bar' ,
199
+ } ] ,
200
+ NextToken : 'someToken' ,
201
+ } )
202
+ . resolves ( {
203
+ Parameters : [ {
204
+ 'Name' :'/foo/baz' ,
205
+ 'Value' :'baz' ,
206
+ } ]
207
+ } ) ;
208
+ const parameterPath = '/foo' ;
209
+
210
+ // Act
211
+ const parameters = await provider . getMultiple ( parameterPath ) ;
212
+
213
+ // Assess
214
+ expect ( parameters ) . toEqual ( {
215
+ 'bar' : 'bar' ,
216
+ 'baz' : 'baz' ,
217
+ } ) ;
89
218
90
219
} ) ;
91
220
0 commit comments