@@ -3386,3 +3386,186 @@ func TestBucketLifeCycle(t *testing.T) {
3386
3386
3387
3387
printEndFunc ("TestBucketLifeCycle" )
3388
3388
}
3389
+
3390
+ func SetAccessRuleWithBucket (bucketName string , prefix string , access string ) (* http.Response , error ) {
3391
+ /*
3392
+ Helper function to Set Access Rule within Bucket
3393
+ HTTP Verb: PUT
3394
+ URL: /bucket/{bucket}/access-rules
3395
+ Data Example:
3396
+ {
3397
+ "prefix":"prefix",
3398
+ "access":"readonly"
3399
+ }
3400
+ */
3401
+ requestDataAdd := map [string ]interface {}{
3402
+ "prefix" : prefix ,
3403
+ "access" : access ,
3404
+ }
3405
+ requestDataJSON , _ := json .Marshal (requestDataAdd )
3406
+ requestDataBody := bytes .NewReader (requestDataJSON )
3407
+ request , err := http .NewRequest (
3408
+ "PUT" ,
3409
+ "http://localhost:9090/api/v1/bucket/" + bucketName + "/access-rules" ,
3410
+ requestDataBody ,
3411
+ )
3412
+ if err != nil {
3413
+ log .Println (err )
3414
+ }
3415
+ request .Header .Add ("Cookie" , fmt .Sprintf ("token=%s" , token ))
3416
+ request .Header .Add ("Content-Type" , "application/json" )
3417
+ client := & http.Client {
3418
+ Timeout : 2 * time .Second ,
3419
+ }
3420
+ response , err := client .Do (request )
3421
+ return response , err
3422
+ }
3423
+
3424
+ func ListAccessRulesWithBucket (bucketName string ) (* http.Response , error ) {
3425
+ /*
3426
+ Helper function to List Access Rules Within Bucket
3427
+ HTTP Verb: GET
3428
+ URL: /bucket/{bucket}/access-rules
3429
+ */
3430
+ request , err := http .NewRequest (
3431
+ "GET" ,
3432
+ "http://localhost:9090/api/v1/bucket/" + bucketName + "/access-rules" , nil )
3433
+ if err != nil {
3434
+ log .Println (err )
3435
+ }
3436
+ request .Header .Add ("Cookie" , fmt .Sprintf ("token=%s" , token ))
3437
+ request .Header .Add ("Content-Type" , "application/json" )
3438
+ client := & http.Client {
3439
+ Timeout : 2 * time .Second ,
3440
+ }
3441
+ response , err := client .Do (request )
3442
+ return response , err
3443
+ }
3444
+
3445
+ func DeleteAccessRuleWithBucket (bucketName string , prefix string ) (* http.Response , error ) {
3446
+ /*
3447
+ Helper function to Delete Access Rule With Bucket
3448
+ HTTP Verb: DELETE
3449
+ URL: /bucket/{bucket}/access-rules
3450
+ Data Example: {"prefix":"prefix"}
3451
+ */
3452
+ requestDataAdd := map [string ]interface {}{
3453
+ "prefix" : prefix ,
3454
+ }
3455
+ requestDataJSON , _ := json .Marshal (requestDataAdd )
3456
+ requestDataBody := bytes .NewReader (requestDataJSON )
3457
+ request , err := http .NewRequest (
3458
+ "DELETE" ,
3459
+ "http://localhost:9090/api/v1/bucket/" + bucketName + "/access-rules" ,
3460
+ requestDataBody ,
3461
+ )
3462
+ if err != nil {
3463
+ log .Println (err )
3464
+ }
3465
+ request .Header .Add ("Cookie" , fmt .Sprintf ("token=%s" , token ))
3466
+ request .Header .Add ("Content-Type" , "application/json" )
3467
+ client := & http.Client {
3468
+ Timeout : 2 * time .Second ,
3469
+ }
3470
+ response , err := client .Do (request )
3471
+ return response , err
3472
+ }
3473
+
3474
+ func TestAccessRule (t * testing.T ) {
3475
+
3476
+ printStartFunc ("TestAccessRule" )
3477
+
3478
+ // Variables
3479
+ assert := assert .New (t )
3480
+ bucketName := "test-access-rule-bucket"
3481
+ locking := false
3482
+ versioning := false
3483
+ prefix := "prefix"
3484
+ access := "readonly"
3485
+
3486
+ // 1. Add bucket
3487
+ if ! BucketGotAdded (bucketName , locking , versioning , nil , nil , assert , 201 ) {
3488
+ return
3489
+ }
3490
+
3491
+ // 2. Set Access Rule With Bucket
3492
+ resp , err := SetAccessRuleWithBucket (
3493
+ bucketName ,
3494
+ prefix ,
3495
+ access ,
3496
+ )
3497
+ assert .Nil (err )
3498
+ if err != nil {
3499
+ log .Println (err )
3500
+ return
3501
+ }
3502
+ if resp != nil {
3503
+ assert .Equal (
3504
+ 200 , resp .StatusCode , "Status Code is incorrect" )
3505
+ }
3506
+
3507
+ // 3. List Access Rule
3508
+ resp , err = ListAccessRulesWithBucket (bucketName )
3509
+ assert .Nil (err )
3510
+ if err != nil {
3511
+ log .Println (err )
3512
+ return
3513
+ }
3514
+ if resp != nil {
3515
+ assert .Equal (
3516
+ 200 , resp .StatusCode , "Status Code is incorrect" )
3517
+ }
3518
+ bodyBytes , _ := ioutil .ReadAll (resp .Body )
3519
+ result := models.ListAccessRulesResponse {}
3520
+ err = json .Unmarshal (bodyBytes , & result )
3521
+ if err != nil {
3522
+ log .Println (err )
3523
+ assert .Nil (err )
3524
+ }
3525
+ Access := & result .AccessRules [0 ].Access
3526
+ Prefix := & result .AccessRules [0 ].Prefix
3527
+ assert .Equal ("readonly" , * Access , * Access )
3528
+ assert .Equal ("prefix" , * Prefix , * Prefix )
3529
+
3530
+ // 4. Delete Access Rule
3531
+ resp , err = DeleteAccessRuleWithBucket (
3532
+ bucketName ,
3533
+ prefix ,
3534
+ )
3535
+ assert .Nil (err )
3536
+ if err != nil {
3537
+ log .Println (err )
3538
+ return
3539
+ }
3540
+ if resp != nil {
3541
+ assert .Equal (
3542
+ 200 , resp .StatusCode , "Status Code is incorrect" )
3543
+ }
3544
+
3545
+ // 5. Verify access rule was deleted
3546
+ resp , err = ListAccessRulesWithBucket (bucketName )
3547
+ assert .Nil (err )
3548
+ if err != nil {
3549
+ log .Println (err )
3550
+ return
3551
+ }
3552
+ if resp != nil {
3553
+ assert .Equal (
3554
+ 200 , resp .StatusCode , "Status Code is incorrect" )
3555
+ }
3556
+ bodyBytes , _ = ioutil .ReadAll (resp .Body )
3557
+ result = models.ListAccessRulesResponse {}
3558
+ err = json .Unmarshal (bodyBytes , & result )
3559
+ if err != nil {
3560
+ log .Println (err )
3561
+ assert .Nil (err )
3562
+ }
3563
+ AccessRules := & result .AccessRules // The array has to be empty, no index accessible
3564
+ if len (* AccessRules ) == 0 {
3565
+ printMessage ("Cool, access rules are gone from this bucket" )
3566
+ } else {
3567
+ assert .Fail ("Access Rule not deleted" )
3568
+ }
3569
+
3570
+ printEndFunc ("TestAccessRule" )
3571
+ }
0 commit comments