@@ -663,6 +663,31 @@ func BucketSetPolicy(bucketName string, access string, definition string) (*http
663
663
return response , err
664
664
}
665
665
666
+ func DeleteObjectsRetentionStatus (bucketName string , prefix string , versionID string ) (* http.Response , error ) {
667
+ /*
668
+ Helper function to Delete Object Retention Status
669
+ DELETE:
670
+ {{baseUrl}}/buckets/:bucket_name/objects/retention?prefix=proident velit&version_id=proident velit
671
+ */
672
+ url := "http://localhost:9090/api/v1/buckets/" + bucketName + "/objects/retention?prefix=" +
673
+ prefix + "&version_id=" + versionID
674
+ request , err := http .NewRequest (
675
+ "DELETE" ,
676
+ url ,
677
+ nil ,
678
+ )
679
+ if err != nil {
680
+ log .Println (err )
681
+ }
682
+ request .Header .Add ("Cookie" , fmt .Sprintf ("token=%s" , token ))
683
+ request .Header .Add ("Content-Type" , "application/json" )
684
+ client := & http.Client {
685
+ Timeout : 2 * time .Second ,
686
+ }
687
+ response , err := client .Do (request )
688
+ return response , err
689
+ }
690
+
666
691
func TestAddBucket (t * testing.T ) {
667
692
assert := assert .New (t )
668
693
type args struct {
@@ -2151,3 +2176,122 @@ func TestBucketSetPolicy(t *testing.T) {
2151
2176
})
2152
2177
}
2153
2178
}
2179
+
2180
+ func TestDeleteObjectsRetentionStatus (t * testing.T ) {
2181
+
2182
+ // Variables
2183
+ assert := assert .New (t )
2184
+ bucketName := "testdeleteobjectslegalholdstatus"
2185
+ fileName := "testdeleteobjectslegalholdstatus.txt"
2186
+ validPrefix := encodeBase64 (fileName )
2187
+
2188
+ // 1. Create bucket
2189
+ response , err := AddBucket (bucketName , true , true , nil , nil )
2190
+ assert .Nil (err )
2191
+ if err != nil {
2192
+ log .Println (err )
2193
+ assert .Fail ("Error creating the bucket" )
2194
+ return
2195
+ }
2196
+ if response != nil {
2197
+ assert .Equal (201 , response .StatusCode , inspectHTTPResponse (response ))
2198
+ }
2199
+
2200
+ // 2. Add object
2201
+ uploadResponse , uploadError := UploadAnObject (
2202
+ bucketName ,
2203
+ fileName ,
2204
+ )
2205
+ assert .Nil (uploadError )
2206
+ if uploadError != nil {
2207
+ log .Println (uploadError )
2208
+ return
2209
+ }
2210
+ addObjRsp := inspectHTTPResponse (uploadResponse )
2211
+ if uploadResponse != nil {
2212
+ assert .Equal (
2213
+ 200 ,
2214
+ uploadResponse .StatusCode ,
2215
+ addObjRsp ,
2216
+ )
2217
+ }
2218
+
2219
+ // Get versionID
2220
+ listResponse , listError := ListObjects (bucketName , validPrefix , "true" )
2221
+ fmt .Println (listError )
2222
+ bodyBytes , _ := ioutil .ReadAll (listResponse .Body )
2223
+ listObjs := models.ListObjectsResponse {}
2224
+ err = json .Unmarshal (bodyBytes , & listObjs )
2225
+ if err != nil {
2226
+ log .Println (err )
2227
+ assert .Nil (err )
2228
+ }
2229
+ versionID := listObjs .Objects [0 ].VersionID
2230
+
2231
+ // 3. Put Objects Retention Status
2232
+ putResponse , putError := PutObjectsRetentionStatus (
2233
+ bucketName ,
2234
+ validPrefix ,
2235
+ versionID ,
2236
+ "governance" ,
2237
+ "2033-01-11T23:59:59Z" ,
2238
+ false ,
2239
+ )
2240
+ if putError != nil {
2241
+ log .Println (putError )
2242
+ assert .Fail ("Error creating the bucket" )
2243
+ }
2244
+ if putResponse != nil {
2245
+ assert .Equal (
2246
+ 200 ,
2247
+ putResponse .StatusCode ,
2248
+ inspectHTTPResponse (putResponse ),
2249
+ )
2250
+ }
2251
+
2252
+ type args struct {
2253
+ prefix string
2254
+ }
2255
+ tests := []struct {
2256
+ name string
2257
+ expectedStatus int
2258
+ args args
2259
+ }{
2260
+ {
2261
+ name : "Valid prefix when deleting object's retention status" ,
2262
+ expectedStatus : 200 ,
2263
+ args : args {
2264
+ prefix : validPrefix ,
2265
+ },
2266
+ },
2267
+ {
2268
+ name : "Invalid prefix when deleting object's retention status" ,
2269
+ expectedStatus : 500 ,
2270
+ args : args {
2271
+ prefix : "fakefile" ,
2272
+ },
2273
+ },
2274
+ }
2275
+ for _ , tt := range tests {
2276
+ t .Run (tt .name , func (t * testing.T ) {
2277
+ // 4. Delete Objects Retention Status
2278
+ putResponse , putError := DeleteObjectsRetentionStatus (
2279
+ bucketName ,
2280
+ tt .args .prefix ,
2281
+ versionID ,
2282
+ )
2283
+ if putError != nil {
2284
+ log .Println (putError )
2285
+ assert .Fail ("Error creating the bucket" )
2286
+ }
2287
+ if putResponse != nil {
2288
+ assert .Equal (
2289
+ tt .expectedStatus ,
2290
+ putResponse .StatusCode ,
2291
+ inspectHTTPResponse (putResponse ),
2292
+ )
2293
+ }
2294
+ })
2295
+ }
2296
+
2297
+ }
0 commit comments