Skip to content

Commit 1f97f39

Browse files
authored
Add test for Put Objects legalhold status end point in Console API (#1577)
1 parent c15d75e commit 1f97f39

File tree

1 file changed

+125
-3
lines changed

1 file changed

+125
-3
lines changed

integration/buckets_test.go

Lines changed: 125 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1928,9 +1928,9 @@ func TestPutObjectsRetentionStatus(t *testing.T) {
19281928

19291929
// Variables
19301930
assert := assert.New(t)
1931-
bucketName := "testputobjectslegalholdstatus"
1932-
fileName := "testputobjectslegalholdstatus.txt"
1933-
prefix := "dGVzdHB1dG9iamVjdHNsZWdhbGhvbGRzdGF0dXMudHh0" // encoded base64
1931+
bucketName := "testputobjectsretentionstatus"
1932+
fileName := "testputobjectsretentionstatus.txt"
1933+
prefix := encodeBase64(fileName)
19341934

19351935
// 1. Create bucket
19361936
response, err := AddBucket(bucketName, true, true, nil, nil)
@@ -2694,3 +2694,125 @@ func TestGetBucketQuota(t *testing.T) {
26942694
}
26952695

26962696
}
2697+
2698+
func PutObjectsLegalholdStatus(bucketName string, prefix string, status string, versionID string) (*http.Response, error) {
2699+
// Helper function to test "Put Object's legalhold status" end point
2700+
requestDataAdd := map[string]interface{}{
2701+
"status": status,
2702+
}
2703+
requestDataJSON, _ := json.Marshal(requestDataAdd)
2704+
requestDataBody := bytes.NewReader(requestDataJSON)
2705+
request, err := http.NewRequest(
2706+
"PUT",
2707+
"http://localhost:9090/api/v1/buckets/"+bucketName+"/objects/legalhold?prefix="+prefix+"&version_id="+versionID,
2708+
requestDataBody,
2709+
)
2710+
if err != nil {
2711+
log.Println(err)
2712+
}
2713+
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
2714+
request.Header.Add("Content-Type", "application/json")
2715+
client := &http.Client{
2716+
Timeout: 2 * time.Second,
2717+
}
2718+
response, err := client.Do(request)
2719+
return response, err
2720+
}
2721+
2722+
func TestPutObjectsLegalholdStatus(t *testing.T) {
2723+
// Variables
2724+
assert := assert.New(t)
2725+
bucketName := "testputobjectslegalholdstatus"
2726+
fileName := "testputobjectslegalholdstatus.txt"
2727+
prefix := "dGVzdHB1dG9iamVjdHNsZWdhbGhvbGRzdGF0dXMudHh0" // encoded base64
2728+
status := "enabled"
2729+
2730+
// 1. Create bucket
2731+
response, err := AddBucket(bucketName, true, true, nil, nil)
2732+
assert.Nil(err)
2733+
if err != nil {
2734+
log.Println(err)
2735+
assert.Fail("Error creating the bucket")
2736+
return
2737+
}
2738+
if response != nil {
2739+
assert.Equal(201, response.StatusCode, inspectHTTPResponse(response))
2740+
}
2741+
2742+
// 2. Add object
2743+
uploadResponse, uploadError := UploadAnObject(
2744+
bucketName,
2745+
fileName,
2746+
)
2747+
assert.Nil(uploadError)
2748+
if uploadError != nil {
2749+
log.Println(uploadError)
2750+
return
2751+
}
2752+
addObjRsp := inspectHTTPResponse(uploadResponse)
2753+
if uploadResponse != nil {
2754+
assert.Equal(
2755+
200,
2756+
uploadResponse.StatusCode,
2757+
addObjRsp,
2758+
)
2759+
}
2760+
2761+
// Get versionID
2762+
listResponse, listError := ListObjects(bucketName, prefix, "true")
2763+
fmt.Println(listError)
2764+
bodyBytes, _ := ioutil.ReadAll(listResponse.Body)
2765+
listObjs := models.ListObjectsResponse{}
2766+
err = json.Unmarshal(bodyBytes, &listObjs)
2767+
if err != nil {
2768+
log.Println(err)
2769+
assert.Nil(err)
2770+
}
2771+
validVersionID := listObjs.Objects[0].VersionID
2772+
2773+
type args struct {
2774+
versionID string
2775+
}
2776+
tests := []struct {
2777+
name string
2778+
expectedStatus int
2779+
args args
2780+
}{
2781+
{
2782+
name: "Valid VersionID when putting object's legal hold status",
2783+
expectedStatus: 200,
2784+
args: args{
2785+
versionID: validVersionID,
2786+
},
2787+
},
2788+
{
2789+
name: "Invalid VersionID when putting object's legal hold status",
2790+
expectedStatus: 500,
2791+
args: args{
2792+
versionID: "*&^###Test1ThisMightBeInvalid555",
2793+
},
2794+
},
2795+
}
2796+
for _, tt := range tests {
2797+
t.Run(tt.name, func(t *testing.T) {
2798+
// 3. Put Objects Legal Status
2799+
putResponse, putError := PutObjectsLegalholdStatus(
2800+
bucketName,
2801+
prefix,
2802+
status,
2803+
tt.args.versionID,
2804+
)
2805+
if putError != nil {
2806+
log.Println(putError)
2807+
assert.Fail("Error putting object's legal hold status")
2808+
}
2809+
if putResponse != nil {
2810+
assert.Equal(
2811+
tt.expectedStatus,
2812+
putResponse.StatusCode,
2813+
inspectHTTPResponse(putResponse),
2814+
)
2815+
}
2816+
})
2817+
}
2818+
}

0 commit comments

Comments
 (0)