@@ -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