@@ -118,12 +118,22 @@ func TestAddBAR(t *testing.T) {
118
118
119
119
// Test add with multipleBRs
120
120
func TestAddWithMultipleBAR (t * testing.T ) {
121
- runCreateBucketWithMultipleBA (t , "addWithMultipleBR " )
121
+ runCreateBucketWithMultipleBA (t , "addWithMultipleBAR " )
122
122
}
123
123
124
124
// Test add idempotency
125
125
func TestAddBARIdempotency (t * testing.T ) {
126
- runCreateBucketIdempotency (t , "addWithMultipleBR" )
126
+ runCreateBucketIdempotency (t , "addBARIdempotency" )
127
+ }
128
+
129
+ // Test delete BAR
130
+ func TestDeleteBAR (t * testing.T ) {
131
+ runDeleteBucketAccessRequest (t , "deleteBAR" )
132
+ }
133
+
134
+ // Test delete BAR Idempotency
135
+ func TestDeleteBARIdempotency (t * testing.T ) {
136
+ runDeleteBucketAccessRequestIdempotency (t , "deleteBARIdempotency" )
127
137
}
128
138
129
139
func runCreateBucketAccess (t * testing.T , name string ) {
@@ -329,3 +339,170 @@ func runCreateBucketIdempotency(t *testing.T, name string) {
329
339
t .Fatalf ("Expecting a single BucketAccess created but found %v" , len (bucketAccessList .Items ))
330
340
}
331
341
}
342
+
343
+ func runDeleteBucketAccessRequest (t * testing.T , name string ) {
344
+ ctx , cancel := context .WithCancel (context .Background ())
345
+ defer cancel ()
346
+
347
+ client := bucketclientset .NewSimpleClientset ()
348
+ kubeClient := fake .NewSimpleClientset ()
349
+
350
+ listener := NewListener ()
351
+ listener .InitializeKubeClient (kubeClient )
352
+ listener .InitializeBucketClient (client )
353
+
354
+ _ , err := kubeClient .CoreV1 ().ServiceAccounts (sa1 .Namespace ).Create (ctx , & sa1 , metav1.CreateOptions {})
355
+ if err != nil {
356
+ t .Fatalf ("Error occurred when creating ServiceAccount: %v" , err )
357
+ }
358
+ defer kubeClient .CoreV1 ().ServiceAccounts (sa1 .Namespace ).Delete (ctx , sa1 .Name , metav1.DeleteOptions {})
359
+
360
+ _ , err = kubeClient .CoreV1 ().ConfigMaps (cosiConfigMap .Namespace ).Create (ctx , & cosiConfigMap , metav1.CreateOptions {})
361
+ if err != nil {
362
+ t .Fatalf ("Error occurred when creating ConfigMap: %v" , err )
363
+ }
364
+ defer kubeClient .CoreV1 ().ConfigMaps (cosiConfigMap .Namespace ).Delete (ctx , cosiConfigMap .Name , metav1.DeleteOptions {})
365
+
366
+ bucketaccessclass , err := util .CreateBucketAccessClass (ctx , client , & goldAccessClass )
367
+ if err != nil {
368
+ t .Fatalf ("Error occurred when creating BucketAccessClass: %v" , err )
369
+ }
370
+
371
+ bucketrequest , err := util .CreateBucketRequest (ctx , client , & bucketRequest1 )
372
+ if err != nil {
373
+ t .Fatalf ("Error occurred when creating BucketRequest: %v" , err )
374
+ }
375
+
376
+ bucketaccessrequest , err := util .CreateBucketAccessRequest (ctx , client , & bucketAccessRequest1 )
377
+ if err != nil {
378
+ t .Fatalf ("Error occurred when creating BucketAccessRequest: %v" , err )
379
+ }
380
+
381
+ listener .Add (ctx , bucketaccessrequest )
382
+
383
+ bucketAccessList := util .GetBucketAccesses (ctx , client , 1 )
384
+ defer util .DeleteObjects (ctx , client , * bucketrequest , * bucketaccessrequest , * bucketaccessclass , bucketAccessList .Items )
385
+
386
+ if len (bucketAccessList .Items ) != 1 {
387
+ t .Fatalf ("Expecting a single BucketAccess created but found %v" , len (bucketAccessList .Items ))
388
+ }
389
+ bucketaccess := bucketAccessList .Items [0 ]
390
+
391
+ bucketaccessrequest2 , err := client .ObjectstorageV1alpha1 ().BucketAccessRequests (bucketaccessrequest .Namespace ).Get (ctx , bucketaccessrequest .Name , metav1.GetOptions {})
392
+ if err != nil {
393
+ t .Fatalf ("Error occurred when updating BucketAccessRequest: %v" , err )
394
+ }
395
+
396
+ if ! util .ValidateBucketAccess (bucketaccess , * bucketaccessrequest , * bucketaccessclass ) {
397
+ t .Fatalf ("Failed to compare the resulting BucketAccess with the BucketAccessRequest %v and BucketAccessClass %v" , bucketaccessrequest , bucketaccessclass )
398
+ }
399
+
400
+ //peform delete and see if the bucketAccessRequest can be deleted
401
+ err = client .ObjectstorageV1alpha1 ().BucketAccessRequests (bucketaccessrequest2 .Namespace ).Delete (ctx , bucketaccessrequest2 .Name , metav1.DeleteOptions {})
402
+ if err != nil {
403
+ t .Fatalf ("Error occurred when deleting BucketAccessRequest: %v" , err )
404
+ }
405
+
406
+ // force update for the finalizer
407
+ old := bucketaccessrequest
408
+ now := metav1 .Now ()
409
+ bucketaccessrequest2 .ObjectMeta .DeletionTimestamp = & now
410
+ listener .Update (ctx , old , bucketaccessrequest2 )
411
+
412
+ // there should not be a corresponding BucketAccess
413
+ bucketAccessList = util .GetBucketAccesses (ctx , client , 0 )
414
+ if len (bucketAccessList .Items ) > 0 {
415
+ t .Fatalf ("Expecting BucketAccess object be deleted but found %v" , bucketAccessList .Items )
416
+ }
417
+ }
418
+
419
+ func runDeleteBucketAccessRequestIdempotency (t * testing.T , name string ) {
420
+ ctx , cancel := context .WithCancel (context .Background ())
421
+ defer cancel ()
422
+
423
+ client := bucketclientset .NewSimpleClientset ()
424
+ kubeClient := fake .NewSimpleClientset ()
425
+
426
+ listener := NewListener ()
427
+ listener .InitializeKubeClient (kubeClient )
428
+ listener .InitializeBucketClient (client )
429
+
430
+ _ , err := kubeClient .CoreV1 ().ServiceAccounts (sa1 .Namespace ).Create (ctx , & sa1 , metav1.CreateOptions {})
431
+ if err != nil {
432
+ t .Fatalf ("Error occurred when creating ServiceAccount: %v" , err )
433
+ }
434
+ defer kubeClient .CoreV1 ().ServiceAccounts (sa1 .Namespace ).Delete (ctx , sa1 .Name , metav1.DeleteOptions {})
435
+
436
+ _ , err = kubeClient .CoreV1 ().ConfigMaps (cosiConfigMap .Namespace ).Create (ctx , & cosiConfigMap , metav1.CreateOptions {})
437
+ if err != nil {
438
+ t .Fatalf ("Error occurred when creating ConfigMap: %v" , err )
439
+ }
440
+ defer kubeClient .CoreV1 ().ConfigMaps (cosiConfigMap .Namespace ).Delete (ctx , cosiConfigMap .Name , metav1.DeleteOptions {})
441
+
442
+ bucketaccessclass , err := util .CreateBucketAccessClass (ctx , client , & goldAccessClass )
443
+ if err != nil {
444
+ t .Fatalf ("Error occurred when creating BucketAccessClass: %v" , err )
445
+ }
446
+
447
+ bucketrequest , err := util .CreateBucketRequest (ctx , client , & bucketRequest1 )
448
+ if err != nil {
449
+ t .Fatalf ("Error occurred when creating BucketRequest: %v" , err )
450
+ }
451
+
452
+ bucketaccessrequest , err := util .CreateBucketAccessRequest (ctx , client , & bucketAccessRequest1 )
453
+ if err != nil {
454
+ t .Fatalf ("Error occurred when creating BucketAccessRequest: %v" , err )
455
+ }
456
+
457
+ listener .Add (ctx , bucketaccessrequest )
458
+
459
+ bucketAccessList := util .GetBucketAccesses (ctx , client , 1 )
460
+ defer util .DeleteObjects (ctx , client , * bucketrequest , * bucketaccessrequest , * bucketaccessclass , bucketAccessList .Items )
461
+
462
+ if len (bucketAccessList .Items ) != 1 {
463
+ t .Fatalf ("Expecting a single BucketAccess created but found %v" , len (bucketAccessList .Items ))
464
+ }
465
+ bucketaccess := bucketAccessList .Items [0 ]
466
+
467
+ bucketaccessrequest2 , err := client .ObjectstorageV1alpha1 ().BucketAccessRequests (bucketaccessrequest .Namespace ).Get (ctx , bucketaccessrequest .Name , metav1.GetOptions {})
468
+ if err != nil {
469
+ t .Fatalf ("Error occurred when updating BucketAccessRequest: %v" , err )
470
+ }
471
+
472
+ if ! util .ValidateBucketAccess (bucketaccess , * bucketaccessrequest , * bucketaccessclass ) {
473
+ t .Fatalf ("Failed to compare the resulting BucketAccess with the BucketAccessRequest %v and BucketAccessClass %v" , bucketaccessrequest , bucketaccessclass )
474
+ }
475
+
476
+ //peform delete and see if the bucketAccessRequest can be deleted
477
+ err = client .ObjectstorageV1alpha1 ().BucketAccessRequests (bucketaccessrequest2 .Namespace ).Delete (ctx , bucketaccessrequest2 .Name , metav1.DeleteOptions {})
478
+ if err != nil {
479
+ t .Fatalf ("Error occurred when deleting BucketAccessRequest: %v" , err )
480
+ }
481
+
482
+ // force update for the finalizer
483
+ old := bucketaccessrequest
484
+ now := metav1 .Now ()
485
+ bucketaccessrequest2 .ObjectMeta .DeletionTimestamp = & now
486
+ listener .Update (ctx , old , bucketaccessrequest2 )
487
+
488
+ //there should not be a corresponding BucketAccess
489
+ bucketAccessList = util .GetBucketAccesses (ctx , client , 0 )
490
+ if len (bucketAccessList .Items ) > 0 {
491
+ t .Fatalf ("Expecting BucketAccess object be deleted but found %v" , bucketAccessList .Items )
492
+ }
493
+
494
+ //Create a duplicate update
495
+ listener .Update (ctx , old , bucketaccessrequest2 )
496
+ //there should not be a corresponding BucketAccess
497
+ bucketAccessList = util .GetBucketAccesses (ctx , client , 0 )
498
+ if len (bucketAccessList .Items ) > 0 {
499
+ t .Fatalf ("Expecting BucketAccess object be deleted but found %v" , bucketAccessList .Items )
500
+ }
501
+
502
+ // call the delete directly the second time
503
+ listener .Delete (ctx , bucketaccessrequest )
504
+ bucketAccessList = util .GetBucketAccesses (ctx , client , 0 )
505
+ if len (bucketAccessList .Items ) != 0 {
506
+ t .Fatalf ("Expecting a single BucketAccess created but found %v" , len (bucketAccessList .Items ))
507
+ }
508
+ }
0 commit comments