@@ -14,6 +14,7 @@ let stack: Stack;
14
14
let instanceRole : iam . Role ;
15
15
let resource : CfnResource ;
16
16
let linuxUserData : ec2 . UserData ;
17
+ let signalResource : CfnResource ;
17
18
18
19
function resetState ( ) {
19
20
resetStateWithSynthesizer ( ) ;
@@ -31,6 +32,9 @@ function resetStateWithSynthesizer(customSynthesizer?: IStackSynthesizer) {
31
32
resource = new CfnResource ( stack , 'Resource' , {
32
33
type : 'CDK::Test::Resource' ,
33
34
} ) ;
35
+ signalResource = new CfnResource ( stack , 'SignalResource' , {
36
+ type : 'CDK::Test::Resource' ,
37
+ } ) ;
34
38
linuxUserData = ec2 . UserData . forLinux ( ) ;
35
39
} ;
36
40
@@ -135,22 +139,54 @@ describe('userdata', () => {
135
139
) ;
136
140
} ) ;
137
141
138
- test ( 'linux userdata contains right commands' , ( ) => {
139
- // WHEN
140
- simpleInit . attach ( resource , linuxOptions ( ) ) ;
141
-
142
- // THEN
142
+ function linuxUserDataTest ( signalLogicalId : string ) {
143
143
const lines = linuxUserData . render ( ) . split ( '\n' ) ;
144
144
expectLine ( lines , cmdArg ( 'cfn-init' , `--region ${ Aws . REGION } ` ) ) ;
145
145
expectLine ( lines , cmdArg ( 'cfn-init' , `--stack ${ Aws . STACK_NAME } ` ) ) ;
146
146
expectLine ( lines , cmdArg ( 'cfn-init' , `--resource ${ resource . logicalId } ` ) ) ;
147
147
expectLine ( lines , cmdArg ( 'cfn-init' , '-c default' ) ) ;
148
148
expectLine ( lines , cmdArg ( 'cfn-signal' , `--region ${ Aws . REGION } ` ) ) ;
149
149
expectLine ( lines , cmdArg ( 'cfn-signal' , `--stack ${ Aws . STACK_NAME } ` ) ) ;
150
- expectLine ( lines , cmdArg ( 'cfn-signal' , `--resource ${ resource . logicalId } ` ) ) ;
150
+ expectLine ( lines , cmdArg ( 'cfn-signal' , `--resource ${ signalLogicalId } ` ) ) ;
151
151
expectLine ( lines , cmdArg ( 'cfn-signal' , '-e $?' ) ) ;
152
152
expectLine ( lines , cmdArg ( 'cat' , 'cfn-init.log' ) ) ;
153
153
expectLine ( lines , / f i n g e r p r i n t / ) ;
154
+ }
155
+
156
+ function windowsUserDataTest (
157
+ windowsUserData : ec2 . UserData ,
158
+ signalLogicalId : string ,
159
+ ) {
160
+ const lines = windowsUserData . render ( ) . split ( '\n' ) ;
161
+ expectLine ( lines , cmdArg ( 'cfn-init' , `--region ${ Aws . REGION } ` ) ) ;
162
+ expectLine ( lines , cmdArg ( 'cfn-init' , `--stack ${ Aws . STACK_NAME } ` ) ) ;
163
+ expectLine ( lines , cmdArg ( 'cfn-init' , `--resource ${ resource . logicalId } ` ) ) ;
164
+ expectLine ( lines , cmdArg ( 'cfn-init' , '-c default' ) ) ;
165
+ expectLine ( lines , cmdArg ( 'cfn-signal' , `--region ${ Aws . REGION } ` ) ) ;
166
+ expectLine ( lines , cmdArg ( 'cfn-signal' , `--stack ${ Aws . STACK_NAME } ` ) ) ;
167
+ expectLine ( lines , cmdArg ( 'cfn-signal' , `--resource ${ signalLogicalId } ` ) ) ;
168
+ expectLine ( lines , cmdArg ( 'cfn-signal' , '-e $LASTEXITCODE' ) ) ;
169
+ expectLine ( lines , cmdArg ( 'type' , 'cfn-init.log' ) ) ;
170
+ expectLine ( lines , / f i n g e r p r i n t / ) ;
171
+ }
172
+
173
+ test ( 'linux userdata contains right commands' , ( ) => {
174
+ // WHEN
175
+ simpleInit . attach ( resource , linuxOptions ( ) ) ;
176
+
177
+ // THEN
178
+ linuxUserDataTest ( resource . logicalId ) ;
179
+ } ) ;
180
+
181
+ test ( 'linux userdata contains right commands with different signal resource' , ( ) => {
182
+ // WHEN
183
+ simpleInit . attach ( resource , {
184
+ ...linuxOptions ( ) ,
185
+ signalResource,
186
+ } ) ;
187
+
188
+ // THEN
189
+ linuxUserDataTest ( signalResource . logicalId ) ;
154
190
} ) ;
155
191
156
192
test ( 'linux userdata contains right commands when url and role included' , ( ) => {
@@ -192,17 +228,22 @@ describe('userdata', () => {
192
228
} ) ;
193
229
194
230
// THEN
195
- const lines = windowsUserData . render ( ) . split ( '\n' ) ;
196
- expectLine ( lines , cmdArg ( 'cfn-init' , `--region ${ Aws . REGION } ` ) ) ;
197
- expectLine ( lines , cmdArg ( 'cfn-init' , `--stack ${ Aws . STACK_NAME } ` ) ) ;
198
- expectLine ( lines , cmdArg ( 'cfn-init' , `--resource ${ resource . logicalId } ` ) ) ;
199
- expectLine ( lines , cmdArg ( 'cfn-init' , '-c default' ) ) ;
200
- expectLine ( lines , cmdArg ( 'cfn-signal' , `--region ${ Aws . REGION } ` ) ) ;
201
- expectLine ( lines , cmdArg ( 'cfn-signal' , `--stack ${ Aws . STACK_NAME } ` ) ) ;
202
- expectLine ( lines , cmdArg ( 'cfn-signal' , `--resource ${ resource . logicalId } ` ) ) ;
203
- expectLine ( lines , cmdArg ( 'cfn-signal' , '-e $LASTEXITCODE' ) ) ;
204
- expectLine ( lines , cmdArg ( 'type' , 'cfn-init.log' ) ) ;
205
- expectLine ( lines , / f i n g e r p r i n t / ) ;
231
+ windowsUserDataTest ( windowsUserData , resource . logicalId ) ;
232
+ } ) ;
233
+
234
+ test ( 'Windows userdata contains right commands with different signal resource' , ( ) => {
235
+ // WHEN
236
+ const windowsUserData = ec2 . UserData . forWindows ( ) ;
237
+
238
+ simpleInit . attach ( resource , {
239
+ platform : ec2 . OperatingSystemType . WINDOWS ,
240
+ instanceRole,
241
+ userData : windowsUserData ,
242
+ signalResource,
243
+ } ) ;
244
+
245
+ // THEN
246
+ windowsUserDataTest ( windowsUserData , signalResource . logicalId ) ;
206
247
} ) ;
207
248
208
249
test ( 'ignoreFailures disables result code reporting' , ( ) => {
0 commit comments