@@ -66,8 +66,10 @@ func TestReconcileBucket(t *testing.T) {
66
66
67
67
expectedBucketName := "baz"
68
68
69
- svc , s3Mock := testService (t , & infrav1.S3Bucket {
70
- Name : expectedBucketName ,
69
+ svc , s3Mock := testService (t , & testServiceInput {
70
+ Bucket : & infrav1.S3Bucket {
71
+ Name : expectedBucketName ,
72
+ },
71
73
})
72
74
73
75
input := & s3svc.CreateBucketInput {
@@ -168,11 +170,13 @@ func TestReconcileBucket(t *testing.T) {
168
170
169
171
bucketName := "bar"
170
172
171
- svc , s3Mock := testService (t , & infrav1.S3Bucket {
172
- Name : bucketName ,
173
- ControlPlaneIAMInstanceProfile : fmt .Sprintf ("control-plane%s" , iamv1 .DefaultNameSuffix ),
174
- NodesIAMInstanceProfiles : []string {
175
- fmt .Sprintf ("nodes%s" , iamv1 .DefaultNameSuffix ),
173
+ svc , s3Mock := testService (t , & testServiceInput {
174
+ Bucket : & infrav1.S3Bucket {
175
+ Name : bucketName ,
176
+ ControlPlaneIAMInstanceProfile : fmt .Sprintf ("control-plane%s" , iamv1 .DefaultNameSuffix ),
177
+ NodesIAMInstanceProfiles : []string {
178
+ fmt .Sprintf ("nodes%s" , iamv1 .DefaultNameSuffix ),
179
+ },
176
180
},
177
181
})
178
182
@@ -218,7 +222,7 @@ func TestReconcileBucket(t *testing.T) {
218
222
t .Run ("is_idempotent" , func (t * testing.T ) {
219
223
t .Parallel ()
220
224
221
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
225
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
222
226
223
227
s3Mock .EXPECT ().CreateBucket (gomock .Any ()).Return (nil , nil ).Times (2 )
224
228
s3Mock .EXPECT ().PutBucketTagging (gomock .Any ()).Return (nil , nil ).Times (2 )
@@ -236,7 +240,7 @@ func TestReconcileBucket(t *testing.T) {
236
240
t .Run ("ignores_when_bucket_already_exists_but_its_owned_by_the_same_account" , func (t * testing.T ) {
237
241
t .Parallel ()
238
242
239
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
243
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
240
244
241
245
err := awserr .New (s3svc .ErrCodeBucketAlreadyOwnedByYou , "err" , errors .New ("err" ))
242
246
@@ -255,7 +259,7 @@ func TestReconcileBucket(t *testing.T) {
255
259
t .Run ("bucket_creation_fails" , func (t * testing.T ) {
256
260
t .Parallel ()
257
261
258
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
262
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
259
263
260
264
s3Mock .EXPECT ().CreateBucket (gomock .Any ()).Return (nil , errors .New ("error" )).Times (1 )
261
265
@@ -267,7 +271,7 @@ func TestReconcileBucket(t *testing.T) {
267
271
t .Run ("bucket_creation_returns_unexpected_AWS_error" , func (t * testing.T ) {
268
272
t .Parallel ()
269
273
270
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
274
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
271
275
272
276
s3Mock .EXPECT ().CreateBucket (gomock .Any ()).Return (nil , awserr .New ("foo" , "" , nil )).Times (1 )
273
277
@@ -279,7 +283,7 @@ func TestReconcileBucket(t *testing.T) {
279
283
t .Run ("generating_bucket_policy_fails" , func (t * testing.T ) {
280
284
t .Parallel ()
281
285
282
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
286
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
283
287
284
288
s3Mock .EXPECT ().CreateBucket (gomock .Any ()).Return (nil , nil ).Times (1 )
285
289
s3Mock .EXPECT ().PutBucketTagging (gomock .Any ()).Return (nil , nil ).Times (1 )
@@ -297,7 +301,7 @@ func TestReconcileBucket(t *testing.T) {
297
301
t .Run ("creating_bucket_policy_fails" , func (t * testing.T ) {
298
302
t .Parallel ()
299
303
300
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
304
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
301
305
302
306
s3Mock .EXPECT ().CreateBucket (gomock .Any ()).Return (nil , nil ).Times (1 )
303
307
s3Mock .EXPECT ().PutBucketTagging (gomock .Any ()).Return (nil , nil ).Times (1 )
@@ -307,6 +311,27 @@ func TestReconcileBucket(t *testing.T) {
307
311
t .Fatalf ("Expected error" )
308
312
}
309
313
})
314
+
315
+ t .Run ("creates_bucket_without_location" , func (t * testing.T ) {
316
+ t .Parallel ()
317
+
318
+ bucketName := "test"
319
+ svc , s3Mock := testService (t , & testServiceInput {
320
+ Region : "us-east-1" ,
321
+ Bucket : & infrav1.S3Bucket {Name : bucketName },
322
+ })
323
+ input := & s3svc.CreateBucketInput {
324
+ Bucket : aws .String (bucketName ),
325
+ }
326
+
327
+ s3Mock .EXPECT ().CreateBucket (gomock .Eq (input )).Return (nil , nil ).Times (1 )
328
+ s3Mock .EXPECT ().PutBucketTagging (gomock .Any ()).Return (nil , nil ).Times (1 )
329
+ s3Mock .EXPECT ().PutBucketPolicy (gomock .Any ()).Return (nil , nil ).Times (1 )
330
+
331
+ if err := svc .ReconcileBucket (); err != nil {
332
+ t .Fatalf ("Unexpected error: %v" , err )
333
+ }
334
+ })
310
335
})
311
336
}
312
337
@@ -328,8 +353,10 @@ func TestDeleteBucket(t *testing.T) {
328
353
t .Run ("deletes_bucket_with_configured_name" , func (t * testing.T ) {
329
354
t .Parallel ()
330
355
331
- svc , s3Mock := testService (t , & infrav1.S3Bucket {
332
- Name : bucketName ,
356
+ svc , s3Mock := testService (t , & testServiceInput {
357
+ Bucket : & infrav1.S3Bucket {
358
+ Name : bucketName ,
359
+ },
333
360
})
334
361
335
362
input := & s3svc.DeleteBucketInput {
@@ -348,7 +375,7 @@ func TestDeleteBucket(t *testing.T) {
348
375
t .Run ("unexpected_error" , func (t * testing.T ) {
349
376
t .Parallel ()
350
377
351
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
378
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
352
379
353
380
s3Mock .EXPECT ().DeleteBucket (gomock .Any ()).Return (nil , errors .New ("err" )).Times (1 )
354
381
@@ -360,7 +387,7 @@ func TestDeleteBucket(t *testing.T) {
360
387
t .Run ("unexpected_AWS_error" , func (t * testing.T ) {
361
388
t .Parallel ()
362
389
363
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
390
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
364
391
365
392
s3Mock .EXPECT ().DeleteBucket (gomock .Any ()).Return (nil , awserr .New ("foo" , "" , nil )).Times (1 )
366
393
@@ -373,7 +400,7 @@ func TestDeleteBucket(t *testing.T) {
373
400
t .Run ("ignores_when_bucket_has_already_been_removed" , func (t * testing.T ) {
374
401
t .Parallel ()
375
402
376
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
403
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
377
404
378
405
s3Mock .EXPECT ().DeleteBucket (gomock .Any ()).Return (nil , awserr .New (s3svc .ErrCodeNoSuchBucket , "" , nil )).Times (1 )
379
406
@@ -385,7 +412,7 @@ func TestDeleteBucket(t *testing.T) {
385
412
t .Run ("skips_bucket_removal_when_bucket_is_not_empty" , func (t * testing.T ) {
386
413
t .Parallel ()
387
414
388
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
415
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
389
416
390
417
s3Mock .EXPECT ().DeleteBucket (gomock .Any ()).Return (nil , awserr .New ("BucketNotEmpty" , "" , nil )).Times (1 )
391
418
@@ -406,8 +433,10 @@ func TestCreateObject(t *testing.T) {
406
433
t .Run ("for_machine" , func (t * testing.T ) {
407
434
t .Parallel ()
408
435
409
- svc , s3Mock := testService (t , & infrav1.S3Bucket {
410
- Name : bucketName ,
436
+ svc , s3Mock := testService (t , & testServiceInput {
437
+ Bucket : & infrav1.S3Bucket {
438
+ Name : bucketName ,
439
+ },
411
440
})
412
441
413
442
machineScope := & scope.MachineScope {
@@ -487,7 +516,7 @@ func TestCreateObject(t *testing.T) {
487
516
t .Run ("is_idempotent" , func (t * testing.T ) {
488
517
t .Parallel ()
489
518
490
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
519
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
491
520
492
521
machineScope := & scope.MachineScope {
493
522
Machine : & clusterv1.Machine {},
@@ -516,7 +545,7 @@ func TestCreateObject(t *testing.T) {
516
545
t .Run ("object_creation_fails" , func (t * testing.T ) {
517
546
t .Parallel ()
518
547
519
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
548
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
520
549
521
550
machineScope := & scope.MachineScope {
522
551
Machine : & clusterv1.Machine {},
@@ -542,7 +571,7 @@ func TestCreateObject(t *testing.T) {
542
571
t .Run ("given_empty_machine_scope" , func (t * testing.T ) {
543
572
t .Parallel ()
544
573
545
- svc , _ := testService (t , & infrav1.S3Bucket {})
574
+ svc , _ := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
546
575
547
576
bootstrapDataURL , err := svc .Create (nil , []byte ("foo" ))
548
577
if err == nil {
@@ -558,7 +587,7 @@ func TestCreateObject(t *testing.T) {
558
587
t .Run ("given_empty_bootstrap_data" , func (t * testing.T ) {
559
588
t .Parallel ()
560
589
561
- svc , _ := testService (t , & infrav1.S3Bucket {})
590
+ svc , _ := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
562
591
563
592
machineScope := & scope.MachineScope {
564
593
Machine : & clusterv1.Machine {},
@@ -615,8 +644,10 @@ func TestDeleteObject(t *testing.T) {
615
644
616
645
expectedBucketName := "foo"
617
646
618
- svc , s3Mock := testService (t , & infrav1.S3Bucket {
619
- Name : expectedBucketName ,
647
+ svc , s3Mock := testService (t , & testServiceInput {
648
+ Bucket : & infrav1.S3Bucket {
649
+ Name : expectedBucketName ,
650
+ },
620
651
})
621
652
622
653
machineScope := & scope.MachineScope {
@@ -666,7 +697,7 @@ func TestDeleteObject(t *testing.T) {
666
697
t .Run ("succeeds_when_bucket_has_already_been_removed" , func (t * testing.T ) {
667
698
t .Parallel ()
668
699
669
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
700
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
670
701
671
702
machineScope := & scope.MachineScope {
672
703
Machine : & clusterv1.Machine {},
@@ -690,7 +721,7 @@ func TestDeleteObject(t *testing.T) {
690
721
t .Run ("object_deletion_fails" , func (t * testing.T ) {
691
722
t .Parallel ()
692
723
693
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
724
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
694
725
695
726
machineScope := & scope.MachineScope {
696
727
Machine : & clusterv1.Machine {},
@@ -712,7 +743,7 @@ func TestDeleteObject(t *testing.T) {
712
743
t .Run ("given_empty_machine_scope" , func (t * testing.T ) {
713
744
t .Parallel ()
714
745
715
- svc , _ := testService (t , & infrav1. S3Bucket {} )
746
+ svc , _ := testService (t , nil )
716
747
717
748
if err := svc .Delete (nil ); err == nil {
718
749
t .Fatalf ("Expected error" )
@@ -742,7 +773,7 @@ func TestDeleteObject(t *testing.T) {
742
773
t .Run ("is_idempotent" , func (t * testing.T ) {
743
774
t .Parallel ()
744
775
745
- svc , s3Mock := testService (t , & infrav1.S3Bucket {})
776
+ svc , s3Mock := testService (t , & testServiceInput { Bucket : & infrav1.S3Bucket {} })
746
777
747
778
machineScope := & scope.MachineScope {
748
779
Machine : & clusterv1.Machine {},
@@ -766,7 +797,14 @@ func TestDeleteObject(t *testing.T) {
766
797
})
767
798
}
768
799
769
- func testService (t * testing.T , bucket * infrav1.S3Bucket ) (* s3.Service , * mock_s3iface.MockS3API ) {
800
+ type testServiceInput struct {
801
+ Bucket * infrav1.S3Bucket
802
+ Region string
803
+ }
804
+
805
+ const testAWSRegion string = "us-west-2"
806
+
807
+ func testService (t * testing.T , si * testServiceInput ) (* s3.Service , * mock_s3iface.MockS3API ) {
770
808
t .Helper ()
771
809
772
810
mockCtrl := gomock .NewController (t )
@@ -780,6 +818,13 @@ func testService(t *testing.T, bucket *infrav1.S3Bucket) (*s3.Service, *mock_s3i
780
818
_ = infrav1 .AddToScheme (scheme )
781
819
client := fake .NewClientBuilder ().WithScheme (scheme ).Build ()
782
820
821
+ if si == nil {
822
+ si = & testServiceInput {}
823
+ }
824
+ if si .Region == "" {
825
+ si .Region = testAWSRegion
826
+ }
827
+
783
828
scope , err := scope .NewClusterScope (scope.ClusterScopeParams {
784
829
Client : client ,
785
830
Cluster : & clusterv1.Cluster {
@@ -790,8 +835,8 @@ func testService(t *testing.T, bucket *infrav1.S3Bucket) (*s3.Service, *mock_s3i
790
835
},
791
836
AWSCluster : & infrav1.AWSCluster {
792
837
Spec : infrav1.AWSClusterSpec {
793
- S3Bucket : bucket ,
794
- Region : "us-west-2" ,
838
+ S3Bucket : si . Bucket ,
839
+ Region : si . Region ,
795
840
AdditionalTags : infrav1.Tags {
796
841
"additional" : "from-aws-cluster" ,
797
842
},
0 commit comments