Skip to content

Commit 7f4546e

Browse files
authored
Adding Access Rules Integration Test (#1719)
1 parent 1a92c59 commit 7f4546e

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

integration/user_api_bucket_test.go

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3386,3 +3386,186 @@ func TestBucketLifeCycle(t *testing.T) {
33863386

33873387
printEndFunc("TestBucketLifeCycle")
33883388
}
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

Comments
 (0)