@@ -20,28 +20,33 @@ import * as ecs from '@aws-cdk/aws-ecs';
20
20
21
21
test ( 'New service/new bucket, public API, new VPC' , ( ) => {
22
22
// An environment with region is required to enable logging on an ALB
23
- const stack = new cdk . Stack ( undefined , undefined , {
24
- env : { account : "123456789012" , region : 'us-east-1' } ,
25
- } ) ;
23
+ const stack = new cdk . Stack ( ) ;
26
24
const publicApi = true ;
27
25
const clusterName = "custom-cluster-name" ;
28
26
const containerName = "custom-container-name" ;
29
27
const serviceName = "custom-service-name" ;
30
28
const bucketName = "custom-bucket-name" ;
29
+ const familyName = "family-name" ;
31
30
32
- new FargateToS3 ( stack , 'test-construct' , {
31
+ const construct = new FargateToS3 ( stack , 'test-construct' , {
33
32
publicApi,
34
33
ecrRepositoryArn : defaults . fakeEcrRepoArn ,
35
34
vpcProps : { cidr : '172.0.0.0/16' } ,
36
35
clusterProps : { clusterName } ,
37
36
containerDefinitionProps : { containerName } ,
38
- fargateTaskDefinitionProps : { family : 'family-name' } ,
37
+ fargateTaskDefinitionProps : { family : familyName } ,
39
38
fargateServiceProps : { serviceName } ,
40
39
bucketProps : { bucketName } ,
41
40
logS3AccessLogs : false ,
42
41
bucketPermissions : [ 'Delete' , 'Put' , 'Read' , 'ReadWrite' , 'Write' ]
43
42
} ) ;
44
43
44
+ expect ( construct . vpc !== null ) ;
45
+ expect ( construct . service !== null ) ;
46
+ expect ( construct . container !== null ) ;
47
+ expect ( construct . s3Bucket !== null ) ;
48
+ expect ( construct . s3BucketInterface !== null ) ;
49
+
45
50
expect ( stack ) . toHaveResourceLike ( "AWS::ECS::Service" , {
46
51
LaunchType : 'FARGATE' ,
47
52
DesiredCount : 2 ,
@@ -56,7 +61,7 @@ test('New service/new bucket, public API, new VPC', () => {
56
61
ServiceName : serviceName
57
62
} ) ;
58
63
expect ( stack ) . toHaveResourceLike ( "AWS::ECS::TaskDefinition" , {
59
- Family : 'family-name'
64
+ Family : familyName
60
65
} ) ;
61
66
62
67
expect ( stack ) . toHaveResourceLike ( "AWS::ECS::Cluster" , {
@@ -108,15 +113,21 @@ test('New service/new bucket, public API, new VPC', () => {
108
113
test ( 'New service/new bucket, private API, new VPC' , ( ) => {
109
114
110
115
// An environment with region is required to enable logging on an ALB
111
- const stack = new cdk . Stack ( undefined , undefined , {
112
- env : { account : "123456789012" , region : 'us-east-1' } ,
113
- } ) ;
116
+ const stack = new cdk . Stack ( ) ;
114
117
const publicApi = false ;
118
+ const bucketName = 'bucket-name' ;
119
+ const loggingBucketName = 'logging-bucket-name' ;
115
120
116
121
new FargateToS3 ( stack , 'test-construct' , {
117
122
publicApi,
118
123
ecrRepositoryArn : defaults . fakeEcrRepoArn ,
119
- vpcProps : { cidr : '172.0.0.0/16' }
124
+ vpcProps : { cidr : '172.0.0.0/16' } ,
125
+ bucketProps : {
126
+ bucketName
127
+ } ,
128
+ loggingBucketProps : {
129
+ bucketName : loggingBucketName
130
+ }
120
131
} ) ;
121
132
122
133
expect ( stack ) . toHaveResourceLike ( "AWS::ECS::Service" , {
@@ -130,6 +141,7 @@ test('New service/new bucket, private API, new VPC', () => {
130
141
} ) ;
131
142
132
143
expect ( stack ) . toHaveResourceLike ( "AWS::S3::Bucket" , {
144
+ BucketName : bucketName ,
133
145
BucketEncryption : {
134
146
ServerSideEncryptionConfiguration : [ {
135
147
ServerSideEncryptionByDefault : {
@@ -139,6 +151,10 @@ test('New service/new bucket, private API, new VPC', () => {
139
151
}
140
152
} ) ;
141
153
154
+ expect ( stack ) . toHaveResourceLike ( "AWS::S3::Bucket" , {
155
+ BucketName : loggingBucketName
156
+ } ) ;
157
+
142
158
expect ( stack ) . toHaveResourceLike ( "AWS::EC2::VPC" , {
143
159
CidrBlock : '172.0.0.0/16'
144
160
} ) ;
@@ -151,9 +167,7 @@ test('New service/new bucket, private API, new VPC', () => {
151
167
152
168
test ( 'New service/existing bucket, private API, existing VPC' , ( ) => {
153
169
// An environment with region is required to enable logging on an ALB
154
- const stack = new cdk . Stack ( undefined , undefined , {
155
- env : { account : "123456789012" , region : 'us-east-1' } ,
156
- } ) ;
170
+ const stack = new cdk . Stack ( ) ;
157
171
const publicApi = false ;
158
172
const bucketName = 'custom-bucket-name' ;
159
173
@@ -186,18 +200,22 @@ test('New service/existing bucket, private API, existing VPC', () => {
186
200
expect ( stack ) . toHaveResourceLike ( "AWS::EC2::VPC" , {
187
201
CidrBlock : '172.168.0.0/16'
188
202
} ) ;
203
+ // Confirm we created an Isolated VPC
204
+ expect ( stack ) . not . toHaveResourceLike ( 'AWS::EC2::InternetGateway' , { } ) ;
189
205
expect ( stack ) . toCountResources ( 'AWS::EC2::VPC' , 1 ) ;
190
- expect ( stack ) . toCountResources ( 'AWS::S3::Bucket' , 1 ) ;
191
206
expect ( stack ) . toCountResources ( 'AWS::ECS::Service' , 1 ) ;
207
+ expect ( stack ) . toCountResources ( 'AWS::S3::Bucket' , 1 ) ;
192
208
} ) ;
193
209
194
210
test ( 'Existing service/new bucket, public API, existing VPC' , ( ) => {
195
211
// An environment with region is required to enable logging on an ALB
196
- const stack = new cdk . Stack ( undefined , undefined , {
197
- env : { account : "123456789012" , region : 'us-east-1' } ,
198
- } ) ;
212
+ const stack = new cdk . Stack ( ) ;
199
213
const publicApi = true ;
200
214
const serviceName = 'custom-name' ;
215
+ const customName = 'CUSTOM_NAME' ;
216
+ const customArn = 'CUSTOM_ARN' ;
217
+ const bucketName = 'bucket-name' ;
218
+ const loggingBucketName = 'logging-bucket-name' ;
201
219
202
220
const existingVpc = defaults . getTestVpc ( stack ) ;
203
221
@@ -216,8 +234,14 @@ test('Existing service/new bucket, public API, existing VPC', () => {
216
234
existingFargateServiceObject : testService ,
217
235
existingContainerDefinitionObject : testContainer ,
218
236
existingVpc,
219
- bucketArnEnvironmentVariableName : 'CUSTOM_ARN' ,
220
- bucketEnvironmentVariableName : 'CUSTOM_NAME' ,
237
+ bucketArnEnvironmentVariableName : customArn ,
238
+ bucketEnvironmentVariableName : customName ,
239
+ bucketProps : {
240
+ bucketName
241
+ } ,
242
+ loggingBucketProps : {
243
+ bucketName : loggingBucketName
244
+ }
221
245
} ) ;
222
246
223
247
expect ( stack ) . toHaveResourceLike ( "AWS::ECS::Service" , {
@@ -229,7 +253,7 @@ test('Existing service/new bucket, public API, existing VPC', () => {
229
253
{
230
254
Environment : [
231
255
{
232
- Name : 'CUSTOM_ARN' ,
256
+ Name : customArn ,
233
257
Value : {
234
258
"Fn::GetAtt" : [
235
259
"testconstructS3Bucket81E8552A" ,
@@ -238,7 +262,7 @@ test('Existing service/new bucket, public API, existing VPC', () => {
238
262
}
239
263
} ,
240
264
{
241
- Name : 'CUSTOM_NAME' ,
265
+ Name : customName ,
242
266
Value : {
243
267
Ref : "testconstructS3Bucket81E8552A"
244
268
}
@@ -268,22 +292,29 @@ test('Existing service/new bucket, public API, existing VPC', () => {
268
292
}
269
293
]
270
294
} ) ;
295
+
296
+ expect ( stack ) . toHaveResourceLike ( "AWS::S3::Bucket" , {
297
+ BucketName : bucketName
298
+ } ) ;
299
+
271
300
expect ( stack ) . toHaveResourceLike ( "AWS::S3::Bucket" , {
301
+ BucketName : loggingBucketName
272
302
} ) ;
303
+
273
304
expect ( stack ) . toHaveResourceLike ( "AWS::EC2::VPC" , {
274
305
CidrBlock : '172.168.0.0/16'
275
306
} ) ;
307
+ // Confirm we created a Public/Private VPC
308
+ expect ( stack ) . toHaveResourceLike ( 'AWS::EC2::InternetGateway' , { } ) ;
276
309
expect ( stack ) . toCountResources ( 'AWS::EC2::VPC' , 1 ) ;
277
- expect ( stack ) . toCountResources ( 'AWS::S3::Bucket' , 2 ) ;
278
310
expect ( stack ) . toCountResources ( 'AWS::ECS::Service' , 1 ) ;
311
+ expect ( stack ) . toCountResources ( 'AWS::S3::Bucket' , 2 ) ;
279
312
} ) ;
280
313
281
314
// Test existing service/existing bucket, private API, new VPC
282
315
test ( 'Existing service/existing bucket, private API, existing VPC' , ( ) => {
283
316
// An environment with region is required to enable logging on an ALB
284
- const stack = new cdk . Stack ( undefined , undefined , {
285
- env : { account : "123456789012" , region : 'us-east-1' } ,
286
- } ) ;
317
+ const stack = new cdk . Stack ( ) ;
287
318
const publicApi = false ;
288
319
const serviceName = 'custom-name' ;
289
320
const bucketName = 'custom-bucket-name' ;
@@ -367,7 +398,9 @@ test('Existing service/existing bucket, private API, existing VPC', () => {
367
398
expect ( stack ) . toHaveResourceLike ( "AWS::EC2::VPC" , {
368
399
CidrBlock : '172.168.0.0/16'
369
400
} ) ;
401
+ // Confirm we created an Isolated VPC
402
+ expect ( stack ) . not . toHaveResourceLike ( 'AWS::EC2::InternetGateway' , { } ) ;
370
403
expect ( stack ) . toCountResources ( 'AWS::EC2::VPC' , 1 ) ;
371
- expect ( stack ) . toCountResources ( 'AWS::S3::Bucket' , 1 ) ;
372
404
expect ( stack ) . toCountResources ( 'AWS::ECS::Service' , 1 ) ;
405
+ expect ( stack ) . toCountResources ( 'AWS::S3::Bucket' , 1 ) ;
373
406
} ) ;
0 commit comments