1
+ import { Context } from 'aws-lambda' ;
2
+ import { SSMProvider } from '../../src/ssm' ;
3
+ import { TinyLogger } from '../helpers/tinyLogger' ;
4
+ // # TODO: Uncomment code below once #1222 is fixed
5
+ /*
6
+ import { middleware } from '../helpers/sdkMiddlewareRequestCounter';
7
+ import { SSMClient } from '@aws-sdk/client-ssm';
8
+ */
9
+
10
+ const paramA = process . env . PARAM_A ?? 'my-param' ;
11
+ const paramB = process . env . PARAM_B ?? 'my-param' ;
12
+ const paramEncryptedA = process . env . PARAM_ENCRYPTED_A ?? 'my-encrypted-param' ;
13
+ const paramEncryptedB = process . env . PARAM_ENCRYPTED_B ?? 'my-encrypted-param' ;
14
+
15
+ // We use a custom logger to log pure JSON objects to stdout
16
+ const logger = new TinyLogger ( ) ;
17
+
18
+ // Provider test 1
19
+ const providerGet = new SSMProvider ( ) ;
20
+
21
+ export const handler = async ( _event : unknown , _context : Context ) : Promise < void > => {
22
+ // Test 1 - get a single parameter with default options
23
+ try {
24
+ const parameterValue = await providerGet . get ( paramA ) ;
25
+ logger . log ( {
26
+ test : 'get' ,
27
+ value : parameterValue
28
+ } ) ;
29
+ } catch ( err ) {
30
+ logger . log ( {
31
+ test : 'get' ,
32
+ error : err . message
33
+ } ) ;
34
+ }
35
+
36
+ // Test 2 - get a single parameter with decrypt
37
+ try {
38
+ const parameterValue = await providerGet . get ( paramEncryptedA , { decrypt : true } ) ;
39
+ logger . log ( {
40
+ test : 'get-decrypt' ,
41
+ value : parameterValue
42
+ } ) ;
43
+ } catch ( err ) {
44
+ logger . log ( {
45
+ test : 'get-decrypt' ,
46
+ error : err . message
47
+ } ) ;
48
+ }
49
+
50
+ // Test 3 - get multiple parameters with default options
51
+ try {
52
+ // Get path (/param/get)
53
+ const parameterPath = paramA . substring ( 0 , paramA . lastIndexOf ( '/' ) ) ;
54
+ const parameterValues = await providerGet . getMultiple ( parameterPath ) ;
55
+ logger . log ( {
56
+ test : 'get-multiple' ,
57
+ value : parameterValues
58
+ } ) ;
59
+ } catch ( err ) {
60
+ logger . log ( {
61
+ test : 'get-multiple' ,
62
+ error : err . message
63
+ } ) ;
64
+ }
65
+
66
+ // Test 4 - get multiple parameters with recursive (aka. get all parameters under a path recursively)
67
+ try {
68
+ // Get parameters root (i.e. from /param/get/a & /param/get/b to /param)
69
+ const parameterRoot = paramA . substring (
70
+ 0 ,
71
+ paramA . substring ( 1 , paramA . length ) . indexOf ( '/' ) + 1
72
+ ) ;
73
+ const parameterValues = await providerGet . getMultiple ( parameterRoot , { recursive : true } ) ;
74
+ logger . log ( {
75
+ test : 'get-multiple-recursive' ,
76
+ value : parameterValues
77
+ } ) ;
78
+ } catch ( err ) {
79
+ logger . log ( {
80
+ test : 'get-multiple-recursive' ,
81
+ error : err . message
82
+ } ) ;
83
+ }
84
+
85
+ // Test 5 - get multiple parameters with decrypt
86
+ try {
87
+ // Get parameters path (i.e. from /param/get/a & /param/get/b to /param/get)
88
+ const parameterPath = paramEncryptedA . substring ( 0 , paramEncryptedA . lastIndexOf ( '/' ) ) ;
89
+ const parameterValues = await providerGet . getMultiple ( parameterPath , { decrypt : true } ) ;
90
+ logger . log ( {
91
+ test : 'get-multiple-decrypt' ,
92
+ value : parameterValues
93
+ } ) ;
94
+ } catch ( err ) {
95
+ logger . log ( {
96
+ test : 'get-multiple-decrypt' ,
97
+ error : err . message
98
+ } ) ;
99
+ }
100
+
101
+ // Test 6 - get multiple parameters by name with default options
102
+ try {
103
+ const parameterValues = await providerGet . getParametersByName ( {
104
+ [ paramA ] : { } ,
105
+ [ paramB ] : { } ,
106
+ } ) ;
107
+ logger . log ( {
108
+ test : 'get-multiple-by-name' ,
109
+ value : parameterValues
110
+ } ) ;
111
+ } catch ( err ) {
112
+ logger . log ( {
113
+ test : 'get-multiple-by-name' ,
114
+ error : err . message
115
+ } ) ;
116
+ }
117
+
118
+ // Test 7 - get multiple parameters by name with mixed decrypt
119
+ try {
120
+ const parameterValues = await providerGet . getParametersByName ( {
121
+ [ paramA ] : { } ,
122
+ [ paramEncryptedA ] : { decrypt : true } ,
123
+ [ paramEncryptedB ] : { decrypt : true } ,
124
+ } ) ;
125
+ logger . log ( {
126
+ test : 'get-multiple-by-name-mixed-decrypt' ,
127
+ value : parameterValues
128
+ } ) ;
129
+ } catch ( err ) {
130
+ logger . log ( {
131
+ test : 'get-multiple-by-name-mixed-decrypt' ,
132
+ error : err . message
133
+ } ) ;
134
+ }
135
+ } ;
0 commit comments