Skip to content

Commit e626f59

Browse files
cniackzcniackzbexsoft
authored
Add bucket retention test (#1459)
Co-authored-by: cniackz <cniackz@cniackzs-MacBook-Air.local> Co-authored-by: Alex <33497058+bexsoft@users.noreply.github.com>
1 parent cc8d5ab commit e626f59

File tree

1 file changed

+140
-13
lines changed

1 file changed

+140
-13
lines changed

integration/buckets_test.go

Lines changed: 140 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -189,16 +189,18 @@ func TestMain(m *testing.M) {
189189
os.Exit(code)
190190
}
191191

192-
func AddBucket(BucketName string, Versioning bool, Locking bool) (*http.Response, error) {
192+
func AddBucket(name string, locking bool, versioning bool, quota map[string]interface{}, retention map[string]interface{}) (*http.Response, error) {
193193
/*
194194
This is an atomic function that we can re-use to create a bucket on any
195195
desired test.
196196
*/
197197
// Needed Parameters for API Call
198198
requestDataAdd := map[string]interface{}{
199-
"name": BucketName,
200-
"versioning": Versioning,
201-
"locking": Locking,
199+
"name": name,
200+
"locking": locking,
201+
"versioning": versioning,
202+
"quota": quota,
203+
"retention": retention,
202204
}
203205

204206
// Creating the Call by adding the URL and Headers
@@ -287,10 +289,61 @@ func PutBucketsTags(bucketName string, tags map[string]string) (*http.Response,
287289
return response, err
288290
}
289291

292+
func SetBucketRetention(bucketName string, mode string, unit string, validity int) (*http.Response, error) {
293+
/*
294+
Helper function to set bucket's retention
295+
PUT: {{baseUrl}}/buckets/:bucket_name/retention
296+
{
297+
"mode":"compliance",
298+
"unit":"years",
299+
"validity":2
300+
}
301+
*/
302+
requestDataAdd := map[string]interface{}{
303+
"mode": mode,
304+
"unit": unit,
305+
"validity": validity,
306+
}
307+
requestDataJSON, _ := json.Marshal(requestDataAdd)
308+
requestDataBody := bytes.NewReader(requestDataJSON)
309+
request, err := http.NewRequest("PUT",
310+
"http://localhost:9090/api/v1/buckets/"+bucketName+"/retention",
311+
requestDataBody)
312+
if err != nil {
313+
log.Println(err)
314+
}
315+
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
316+
request.Header.Add("Content-Type", "application/json")
317+
client := &http.Client{
318+
Timeout: 2 * time.Second,
319+
}
320+
response, err := client.Do(request)
321+
return response, err
322+
}
323+
324+
func GetBucketRetention(bucketName string) (*http.Response, error) {
325+
/*
326+
Helper function to get the bucket's retention
327+
*/
328+
request, err := http.NewRequest("GET",
329+
"http://localhost:9090/api/v1/buckets/"+bucketName+"/retention",
330+
nil)
331+
if err != nil {
332+
log.Println(err)
333+
}
334+
request.Header.Add("Cookie", fmt.Sprintf("token=%s", token))
335+
request.Header.Add("Content-Type", "application/json")
336+
client := &http.Client{
337+
Timeout: 2 * time.Second,
338+
}
339+
response, err := client.Do(request)
340+
return response, err
341+
}
342+
290343
func TestAddBucket(t *testing.T) {
291344
assert := assert.New(t)
292345

293-
response, err := AddBucket("test1", false, false)
346+
response, err := AddBucket("test1", false, false, nil, nil)
294347
assert.Nil(err)
295348
if err != nil {
296349
log.Println(err)
@@ -315,7 +368,7 @@ func TestAddBucketLocking(t *testing.T) {
315368
test will see and make sure this is not allowed and that we get proper
316369
error for this scenario.
317370
*/
318-
response, err := AddBucket("test1", false, true)
371+
response, err := AddBucket("test1", true, false, nil, nil)
319372
assert.Nil(err)
320373
if err != nil {
321374
log.Println(err)
@@ -332,7 +385,7 @@ func TestAddBucketLocking(t *testing.T) {
332385
/*
333386
This is valid, versioning is true, then locking can be true as well.
334387
*/
335-
response, err = AddBucket("thujun", true, true)
388+
response, err = AddBucket("thujun", true, true, nil, nil)
336389
assert.Nil(err)
337390
if err != nil {
338391
log.Println(err)
@@ -366,7 +419,7 @@ func TestGetBucket(t *testing.T) {
366419
Timeout: 2 * time.Second,
367420
}
368421

369-
response, err := AddBucket("test3", false, false)
422+
response, err := AddBucket("test3", false, false, nil, nil)
370423
assert.Nil(err)
371424
if err != nil {
372425
log.Println(err)
@@ -403,7 +456,7 @@ func TestSetBucketTags(t *testing.T) {
403456
}
404457

405458
// put bucket
406-
response, err := AddBucket("test4", false, false)
459+
response, err := AddBucket("test4", false, false, nil, nil)
407460
assert.Nil(err)
408461
if err != nil {
409462
log.Println(err)
@@ -513,7 +566,7 @@ func TestBucketVersioning(t *testing.T) {
513566

514567
requestDataBody := bytes.NewReader(requestDataJSON)
515568

516-
response, err = AddBucket("test2", true, false)
569+
response, err = AddBucket("test2", true, false, nil, nil)
517570
assert.Nil(err)
518571
if err != nil {
519572
log.Println(err)
@@ -599,7 +652,7 @@ func TestListBuckets(t *testing.T) {
599652
var numberOfBuckets = 3
600653
for i := 1; i <= numberOfBuckets; i++ {
601654
response, err := AddBucket(
602-
"testlistbuckets"+strconv.Itoa(i), false, false)
655+
"testlistbuckets"+strconv.Itoa(i), false, false, nil, nil)
603656
assert.Nil(err)
604657
if err != nil {
605658
log.Println(err)
@@ -648,7 +701,7 @@ func TestBucketInformationSuccessfulResponse(t *testing.T) {
648701

649702
// 1. Create the bucket
650703
assert := assert.New(t)
651-
response, err := AddBucket("bucketinformation1", false, false)
704+
response, err := AddBucket("bucketinformation1", false, false, nil, nil)
652705
assert.Nil(err)
653706
if err != nil {
654707
log.Println(err)
@@ -703,7 +756,7 @@ func TestBucketInformationGenericErrorResponse(t *testing.T) {
703756
*/
704757
// 1. Create the bucket
705758
assert := assert.New(t)
706-
response, err := AddBucket("bucketinformation2", false, false)
759+
response, err := AddBucket("bucketinformation2", false, false, nil, nil)
707760
assert.Nil(err)
708761
if err != nil {
709762
log.Println(err)
@@ -747,3 +800,77 @@ func TestBucketInformationGenericErrorResponse(t *testing.T) {
747800
// tag2 is not part of the response, this is why assert.False is used.
748801
assert.False(strings.Contains(finalResponse, "tag2"), finalResponse)
749802
}
803+
804+
func TestBucketRetention(t *testing.T) {
805+
/*
806+
To test bucket retention feature
807+
*/
808+
// 1. Create the bucket with 2 years validity retention
809+
assert := assert.New(t)
810+
/*
811+
{
812+
"name":"setbucketretention1",
813+
"versioning":true,
814+
"locking":true,
815+
"retention":
816+
{
817+
"mode":"compliance",
818+
"unit":"years",
819+
"validity":2
820+
}
821+
}
822+
*/
823+
retention := make(map[string]interface{})
824+
retention["mode"] = "compliance"
825+
retention["unit"] = "years"
826+
retention["validity"] = 2
827+
response, err := AddBucket("setbucketretention1", true, true, nil, retention)
828+
assert.Nil(err)
829+
if err != nil {
830+
log.Println(err)
831+
assert.Fail("Error creating the bucket")
832+
return
833+
}
834+
if response != nil {
835+
assert.Equal(201, response.StatusCode, inspectHTTPResponse(response))
836+
}
837+
838+
// 2. Set the bucket's retention from 2 years to 3 years
839+
setBucketRetentionResponse, setBucketRetentionError := SetBucketRetention(
840+
"setbucketretention1",
841+
"compliance",
842+
"years",
843+
3,
844+
)
845+
assert.Nil(setBucketRetentionError)
846+
if setBucketRetentionError != nil {
847+
log.Println(setBucketRetentionError)
848+
assert.Fail("Error creating the bucket")
849+
return
850+
}
851+
if setBucketRetentionResponse != nil {
852+
assert.Equal(200, setBucketRetentionResponse.StatusCode,
853+
inspectHTTPResponse(setBucketRetentionResponse))
854+
}
855+
856+
// 3. Verify the bucket's retention was properly set.
857+
getBucketRetentionResponse, getBucketRetentionError := GetBucketRetention(
858+
"setbucketretention1",
859+
)
860+
assert.Nil(getBucketRetentionError)
861+
if getBucketRetentionError != nil {
862+
log.Println(getBucketRetentionError)
863+
assert.Fail("Error creating the bucket")
864+
return
865+
}
866+
finalResponse := inspectHTTPResponse(getBucketRetentionResponse)
867+
if getBucketRetentionResponse != nil {
868+
assert.Equal(
869+
200,
870+
getBucketRetentionResponse.StatusCode,
871+
finalResponse,
872+
)
873+
}
874+
expected := "Http Response: {\"mode\":\"compliance\",\"unit\":\"years\",\"validity\":3}\n"
875+
assert.Equal(expected, finalResponse, finalResponse)
876+
}

0 commit comments

Comments
 (0)