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