diff --git a/.github/workflows/jobs.yaml b/.github/workflows/jobs.yaml index 5062a0839..f98cb513a 100644 --- a/.github/workflows/jobs.yaml +++ b/.github/workflows/jobs.yaml @@ -1605,7 +1605,7 @@ jobs: go tool cover -func=all.out | grep total > tmp2 result=`cat tmp2 | awk 'END {print $3}'` result=${result%\%} - threshold=52.20 + threshold=52.60 echo "Result:" echo "$result%" if (( $(echo "$result >= $threshold" |bc -l) )); then diff --git a/integration/user_api_bucket_test.go b/integration/user_api_bucket_test.go index 571e4289e..f1b330186 100644 --- a/integration/user_api_bucket_test.go +++ b/integration/user_api_bucket_test.go @@ -3657,6 +3657,24 @@ func GetRemoteBucket() (*http.Response, error) { return response, err } +func GetRemoteBucketARN(sourceBucket string) (*http.Response, error) { + request, err := http.NewRequest( + "GET", + fmt.Sprintf("http://localhost:9090/api/v1/remote-buckets/%s", sourceBucket), + nil, + ) + if err != nil { + log.Println(err) + } + request.Header.Add("Cookie", fmt.Sprintf("token=%s", token)) + request.Header.Add("Content-Type", "application/json") + client := &http.Client{ + Timeout: 2 * time.Second, + } + response, err := client.Do(request) + return response, err +} + func AddRemoteBucket(accessKey, secretKey, targetURL, sourceBucket, targetBucket string) (*http.Response, error) { // Needed Parameters for API Call bucketsRelationArray := make([]map[string]interface{}, 1) @@ -3707,6 +3725,27 @@ func AddRemoteBucket(accessKey, secretKey, targetURL, sourceBucket, targetBucket return response, err } +func DeleteRemoteBucket(sourceBucket string, arn string) (*http.Response, error) { + // Needed Parameters for API Call + request, err := http.NewRequest( + "DELETE", + fmt.Sprintf("http://localhost:9090/api/v1/remote-buckets/%s/%s", sourceBucket, arn), + nil, + ) + if err != nil { + log.Println(err) + } + request.Header.Add("Cookie", fmt.Sprintf("token=%s", token)) + request.Header.Add("Content-Type", "application/json") + + // Performing the call + client := &http.Client{ + Timeout: 2 * time.Second, + } + response, err := client.Do(request) + return response, err +} + func TestAddRemoteBucket(t *testing.T) { // Variables assert := assert.New(t) @@ -3755,3 +3794,69 @@ func TestAddRemoteBucket(t *testing.T) { fmt.Println("finalResponse: ", finalResponse) assert.Equal(strings.Contains(finalResponse, targetBucket), true) } + +func TestDeleteRemoteBucket(t *testing.T) { + // Variables + assert := assert.New(t) + accessKey := "minioadmin" + secretKey := "minioadmin" + targetURL := "https://play.min.io" + sourceBucket := "deletesource" + targetBucket := os.Getenv("THETARGET") + fmt.Println("targetBucket: ", targetBucket) + + // 1. Create bucket + if !BucketGotAdded("deletesource", true, true, nil, nil, assert, 201) { + return + } + + // 2. Add Remote Bucket + resp, err := AddRemoteBucket( + accessKey, + secretKey, + targetURL, + sourceBucket, + targetBucket, + ) + assert.Nil(err) + if err != nil { + log.Println(err) + return + } + if resp != nil { + assert.Equal( + 201, resp.StatusCode, inspectHTTPResponse(resp)) + } + + // 3. Get ARN + resp, err = GetRemoteBucketARN(sourceBucket) + assert.Nil(err) + if err != nil { + log.Println(err) + return + } + bodyBytes, _ := ioutil.ReadAll(resp.Body) + remoteBucket := models.RemoteBucket{} + err = json.Unmarshal(bodyBytes, &remoteBucket) + if err != nil { + log.Println(err) + assert.Nil(err) + } + if resp != nil { + assert.Equal( + 200, resp.StatusCode, inspectHTTPResponse(resp)) + } + + // 4. Delete Remote Bucket + resp, err = DeleteRemoteBucket(sourceBucket, *remoteBucket.RemoteARN) + assert.Nil(err) + if err != nil { + log.Println(err) + return + } + finalResponse := inspectHTTPResponse(resp) + if resp != nil { + assert.Equal( + 204, resp.StatusCode, finalResponse) + } +}