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