From 2e9a42320cff0d1eb8b23249fb45430a7805015a Mon Sep 17 00:00:00 2001 From: Cesar Celis Hernandez Date: Fri, 28 Jan 2022 12:01:38 -0600 Subject: [PATCH] Test to delete object (#1477) --- integration/buckets_test.go | 121 ++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/integration/buckets_test.go b/integration/buckets_test.go index 4f61eb744..b8bf10b0c 100644 --- a/integration/buckets_test.go +++ b/integration/buckets_test.go @@ -394,6 +394,52 @@ func UploadAnObject(bucketName string, fileName string) (*http.Response, error) return response, err } +func DeleteObject(bucketName string, path string, recursive bool, allVersions bool) (*http.Response, error) { + /* + Helper function to delete an object from a given bucket. + DELETE: + {{baseUrl}}/buckets/bucketName/objects?path=Y2VzYXJpby50eHQ=&recursive=false&all_versions=false + */ + url := "http://localhost:9090/api/v1/buckets/" + bucketName + "/objects?path=" + + path + "&recursive=" + strconv.FormatBool(recursive) + "&all_versions=" + + strconv.FormatBool(allVersions) + request, err := http.NewRequest( + "DELETE", + url, + 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 ListObjects(bucketName string) (*http.Response, error) { + /* + Helper function to list objects in a bucket. + GET: {{baseUrl}}/buckets/:bucket_name/objects + */ + request, err := http.NewRequest("GET", + "http://localhost:9090/api/v1/buckets/"+bucketName+"/objects", + 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 TestAddBucket(t *testing.T) { assert := assert.New(t) @@ -1012,3 +1058,78 @@ func TestUploadObjectToBucket(t *testing.T) { assert.Equal(200, uploadResponse.StatusCode, finalResponse) } } + +func TestDeleteObject(t *testing.T) { + /* + Test to delete an object from a given bucket. + */ + + // Variables + assert := assert.New(t) + bucketName := "testdeleteobjectbucket1" + fileName := "testdeleteobjectfile" + path := "dGVzdGRlbGV0ZW9iamVjdGZpbGUxLnR4dA==" // fileName encoded base64 + numberOfFiles := 2 + + // 1. Create bucket + response, err := AddBucket(bucketName, true, true, nil, nil) + assert.Nil(err) + if err != nil { + log.Println(err) + assert.Fail("Error creating the bucket") + return + } + if response != nil { + assert.Equal(201, response.StatusCode, inspectHTTPResponse(response)) + } + + // 2. Add two objects to the bucket created. + for i := 1; i <= numberOfFiles; i++ { + uploadResponse, uploadError := UploadAnObject( + bucketName, fileName+strconv.Itoa(i)+".txt") + assert.Nil(uploadError) + if uploadError != nil { + log.Println(uploadError) + return + } + if uploadResponse != nil { + assert.Equal(200, uploadResponse.StatusCode, + inspectHTTPResponse(uploadResponse)) + } + } + + // 3. Delete only one object from the bucket. + deleteResponse, deleteError := DeleteObject(bucketName, path, false, false) + assert.Nil(deleteError) + if deleteError != nil { + log.Println(deleteError) + return + } + if deleteResponse != nil { + assert.Equal(200, deleteResponse.StatusCode, + inspectHTTPResponse(deleteResponse)) + } + + // 4. List the objects in the bucket and make sure the object is gone + listResponse, listError := ListObjects(bucketName) + assert.Nil(listError) + if listError != nil { + log.Println(listError) + return + } + finalResponse := inspectHTTPResponse(listResponse) + if listResponse != nil { + assert.Equal(200, listResponse.StatusCode, + finalResponse) + } + // Expected only one file: "testdeleteobjectfile2.txt" + // "testdeleteobjectfile1.txt" should be gone by now. + assert.True( + strings.Contains( + finalResponse, + "testdeleteobjectfile2.txt"), finalResponse) // Still there + assert.False( + strings.Contains( + finalResponse, + "testdeleteobjectfile1.txt"), finalResponse) // Gone +}