Skip to content

Commit 2e9a423

Browse files
authored
Test to delete object (#1477)
1 parent 1d92f90 commit 2e9a423

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed

integration/buckets_test.go

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,52 @@ func UploadAnObject(bucketName string, fileName string) (*http.Response, error)
394394
return response, err
395395
}
396396

397+
func DeleteObject(bucketName string, path string, recursive bool, allVersions bool) (*http.Response, error) {
398+
/*
399+
Helper function to delete an object from a given bucket.
400+
DELETE:
401+
{{baseUrl}}/buckets/bucketName/objects?path=Y2VzYXJpby50eHQ=&recursive=false&all_versions=false
402+
*/
403+
url := "http://localhost:9090/api/v1/buckets/" + bucketName + "/objects?path=" +
404+
path + "&recursive=" + strconv.FormatBool(recursive) + "&all_versions=" +
405+
strconv.FormatBool(allVersions)
406+
request, err := http.NewRequest(
407+
"DELETE",
408+
url,
409+
nil,
410+
)
411+
if err != nil {
412+
log.Println(err)
413+
}
414+
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
415+
request.Header.Add("Content-Type", "application/json")
416+
client := &http.Client{
417+
Timeout: 2 * time.Second,
418+
}
419+
response, err := client.Do(request)
420+
return response, err
421+
}
422+
423+
func ListObjects(bucketName string) (*http.Response, error) {
424+
/*
425+
Helper function to list objects in a bucket.
426+
GET: {{baseUrl}}/buckets/:bucket_name/objects
427+
*/
428+
request, err := http.NewRequest("GET",
429+
"http://localhost:9090/api/v1/buckets/"+bucketName+"/objects",
430+
nil)
431+
if err != nil {
432+
log.Println(err)
433+
}
434+
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
435+
request.Header.Add("Content-Type", "application/json")
436+
client := &http.Client{
437+
Timeout: 2 * time.Second,
438+
}
439+
response, err := client.Do(request)
440+
return response, err
441+
}
442+
397443
func TestAddBucket(t *testing.T) {
398444
assert := assert.New(t)
399445

@@ -1012,3 +1058,78 @@ func TestUploadObjectToBucket(t *testing.T) {
10121058
assert.Equal(200, uploadResponse.StatusCode, finalResponse)
10131059
}
10141060
}
1061+
1062+
func TestDeleteObject(t *testing.T) {
1063+
/*
1064+
Test to delete an object from a given bucket.
1065+
*/
1066+
1067+
// Variables
1068+
assert := assert.New(t)
1069+
bucketName := "testdeleteobjectbucket1"
1070+
fileName := "testdeleteobjectfile"
1071+
path := "dGVzdGRlbGV0ZW9iamVjdGZpbGUxLnR4dA==" // fileName encoded base64
1072+
numberOfFiles := 2
1073+
1074+
// 1. Create bucket
1075+
response, err := AddBucket(bucketName, true, true, nil, nil)
1076+
assert.Nil(err)
1077+
if err != nil {
1078+
log.Println(err)
1079+
assert.Fail("Error creating the bucket")
1080+
return
1081+
}
1082+
if response != nil {
1083+
assert.Equal(201, response.StatusCode, inspectHTTPResponse(response))
1084+
}
1085+
1086+
// 2. Add two objects to the bucket created.
1087+
for i := 1; i <= numberOfFiles; i++ {
1088+
uploadResponse, uploadError := UploadAnObject(
1089+
bucketName, fileName+strconv.Itoa(i)+".txt")
1090+
assert.Nil(uploadError)
1091+
if uploadError != nil {
1092+
log.Println(uploadError)
1093+
return
1094+
}
1095+
if uploadResponse != nil {
1096+
assert.Equal(200, uploadResponse.StatusCode,
1097+
inspectHTTPResponse(uploadResponse))
1098+
}
1099+
}
1100+
1101+
// 3. Delete only one object from the bucket.
1102+
deleteResponse, deleteError := DeleteObject(bucketName, path, false, false)
1103+
assert.Nil(deleteError)
1104+
if deleteError != nil {
1105+
log.Println(deleteError)
1106+
return
1107+
}
1108+
if deleteResponse != nil {
1109+
assert.Equal(200, deleteResponse.StatusCode,
1110+
inspectHTTPResponse(deleteResponse))
1111+
}
1112+
1113+
// 4. List the objects in the bucket and make sure the object is gone
1114+
listResponse, listError := ListObjects(bucketName)
1115+
assert.Nil(listError)
1116+
if listError != nil {
1117+
log.Println(listError)
1118+
return
1119+
}
1120+
finalResponse := inspectHTTPResponse(listResponse)
1121+
if listResponse != nil {
1122+
assert.Equal(200, listResponse.StatusCode,
1123+
finalResponse)
1124+
}
1125+
// Expected only one file: "testdeleteobjectfile2.txt"
1126+
// "testdeleteobjectfile1.txt" should be gone by now.
1127+
assert.True(
1128+
strings.Contains(
1129+
finalResponse,
1130+
"testdeleteobjectfile2.txt"), finalResponse) // Still there
1131+
assert.False(
1132+
strings.Contains(
1133+
finalResponse,
1134+
"testdeleteobjectfile1.txt"), finalResponse) // Gone
1135+
}

0 commit comments

Comments
 (0)