Skip to content

Commit c986baf

Browse files
authored
Add test for Restore Object to a selected version end point (#1558)
1 parent df55d5d commit c986baf

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

integration/buckets_test.go

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,24 @@ func GetsTheMetadataOfAnObject(bucketName string, prefix string) (*http.Response
610610
return response, err
611611
}
612612

613+
func RestoreObjectToASelectedVersion(bucketName string, prefix string, versionID string) (*http.Response, error) {
614+
request, err := http.NewRequest(
615+
"PUT",
616+
"http://localhost:9090/api/v1/buckets/"+bucketName+"/objects/restore?prefix="+prefix+"&version_id="+versionID,
617+
nil,
618+
)
619+
if err != nil {
620+
log.Println(err)
621+
}
622+
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
623+
request.Header.Add("Content-Type", "application/json")
624+
client := &http.Client{
625+
Timeout: 2 * time.Second,
626+
}
627+
response, err := client.Do(request)
628+
return response, err
629+
}
630+
613631
func TestAddBucket(t *testing.T) {
614632
assert := assert.New(t)
615633
type args struct {
@@ -1930,3 +1948,102 @@ func TestPutBucketsTags(t *testing.T) {
19301948
})
19311949
}
19321950
}
1951+
1952+
func TestRestoreObjectToASelectedVersion(t *testing.T) {
1953+
1954+
// Variables
1955+
assert := assert.New(t)
1956+
bucketName := "testrestoreobjectstoselectedversion"
1957+
fileName := "testrestoreobjectstoselectedversion.txt"
1958+
validPrefix := encodeBase64(fileName)
1959+
1960+
// 1. Create bucket
1961+
response, err := AddBucket(bucketName, true, true, nil, nil)
1962+
assert.Nil(err)
1963+
if err != nil {
1964+
log.Println(err)
1965+
assert.Fail("Error creating the bucket")
1966+
return
1967+
}
1968+
if response != nil {
1969+
assert.Equal(201, response.StatusCode, inspectHTTPResponse(response))
1970+
}
1971+
1972+
// 2. Add object
1973+
uploadResponse, uploadError := UploadAnObject(
1974+
bucketName,
1975+
fileName,
1976+
)
1977+
assert.Nil(uploadError)
1978+
if uploadError != nil {
1979+
log.Println(uploadError)
1980+
return
1981+
}
1982+
addObjRsp := inspectHTTPResponse(uploadResponse)
1983+
if uploadResponse != nil {
1984+
assert.Equal(
1985+
200,
1986+
uploadResponse.StatusCode,
1987+
addObjRsp,
1988+
)
1989+
}
1990+
1991+
// 3. Get versionID
1992+
listResponse, listError := ListObjects(bucketName, validPrefix, "true")
1993+
fmt.Println(listError)
1994+
bodyBytes, _ := ioutil.ReadAll(listResponse.Body)
1995+
listObjs := models.ListObjectsResponse{}
1996+
err = json.Unmarshal(bodyBytes, &listObjs)
1997+
if err != nil {
1998+
log.Println(err)
1999+
assert.Nil(err)
2000+
}
2001+
versionID := listObjs.Objects[0].VersionID
2002+
2003+
type args struct {
2004+
prefix string
2005+
}
2006+
tests := []struct {
2007+
name string
2008+
expectedStatus int
2009+
args args
2010+
}{
2011+
{
2012+
name: "Valid prefix when restoring object",
2013+
expectedStatus: 200,
2014+
args: args{
2015+
prefix: validPrefix,
2016+
},
2017+
},
2018+
{
2019+
name: "Invalid prefix when restoring object",
2020+
expectedStatus: 500,
2021+
args: args{
2022+
prefix: "fakefile",
2023+
},
2024+
},
2025+
}
2026+
for _, tt := range tests {
2027+
t.Run(tt.name, func(t *testing.T) {
2028+
// 4. Restore Object to a selected version
2029+
restResp, restErr := RestoreObjectToASelectedVersion(
2030+
bucketName,
2031+
tt.args.prefix,
2032+
versionID,
2033+
)
2034+
assert.Nil(restErr)
2035+
if restErr != nil {
2036+
log.Println(restErr)
2037+
return
2038+
}
2039+
finalResponse := inspectHTTPResponse(restResp)
2040+
if restResp != nil {
2041+
assert.Equal(
2042+
tt.expectedStatus,
2043+
restResp.StatusCode,
2044+
finalResponse,
2045+
)
2046+
}
2047+
})
2048+
}
2049+
}

0 commit comments

Comments
 (0)