Skip to content

Commit

Permalink
Add test for Restore Object to a selected version end point (#1558)
Browse files Browse the repository at this point in the history
  • Loading branch information
cniackz committed Feb 11, 2022
1 parent df55d5d commit c986baf
Showing 1 changed file with 117 additions and 0 deletions.
117 changes: 117 additions & 0 deletions integration/buckets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,24 @@ func GetsTheMetadataOfAnObject(bucketName string, prefix string) (*http.Response
return response, err
}

func RestoreObjectToASelectedVersion(bucketName string, prefix string, versionID string) (*http.Response, error) {
request, err := http.NewRequest(
"PUT",
"http://localhost:9090/api/v1/buckets/"+bucketName+"/objects/restore?prefix="+prefix+"&version_id="+versionID,
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)
type args struct {
Expand Down Expand Up @@ -1930,3 +1948,102 @@ func TestPutBucketsTags(t *testing.T) {
})
}
}

func TestRestoreObjectToASelectedVersion(t *testing.T) {

// Variables
assert := assert.New(t)
bucketName := "testrestoreobjectstoselectedversion"
fileName := "testrestoreobjectstoselectedversion.txt"
validPrefix := encodeBase64(fileName)

// 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 object
uploadResponse, uploadError := UploadAnObject(
bucketName,
fileName,
)
assert.Nil(uploadError)
if uploadError != nil {
log.Println(uploadError)
return
}
addObjRsp := inspectHTTPResponse(uploadResponse)
if uploadResponse != nil {
assert.Equal(
200,
uploadResponse.StatusCode,
addObjRsp,
)
}

// 3. Get versionID
listResponse, listError := ListObjects(bucketName, validPrefix, "true")
fmt.Println(listError)
bodyBytes, _ := ioutil.ReadAll(listResponse.Body)
listObjs := models.ListObjectsResponse{}
err = json.Unmarshal(bodyBytes, &listObjs)
if err != nil {
log.Println(err)
assert.Nil(err)
}
versionID := listObjs.Objects[0].VersionID

type args struct {
prefix string
}
tests := []struct {
name string
expectedStatus int
args args
}{
{
name: "Valid prefix when restoring object",
expectedStatus: 200,
args: args{
prefix: validPrefix,
},
},
{
name: "Invalid prefix when restoring object",
expectedStatus: 500,
args: args{
prefix: "fakefile",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// 4. Restore Object to a selected version
restResp, restErr := RestoreObjectToASelectedVersion(
bucketName,
tt.args.prefix,
versionID,
)
assert.Nil(restErr)
if restErr != nil {
log.Println(restErr)
return
}
finalResponse := inspectHTTPResponse(restResp)
if restResp != nil {
assert.Equal(
tt.expectedStatus,
restResp.StatusCode,
finalResponse,
)
}
})
}
}

0 comments on commit c986baf

Please sign in to comment.