Browse Source

add test cases & return error while the rules array is empty in function verifLifecycleRules

hangzws 6 years ago
parent
commit
7310d2731d
3 changed files with 75 additions and 2 deletions
  1. 68 2
      oss/client_test.go
  2. 3 0
      oss/type.go
  3. 4 0
      oss/type_test.go

+ 68 - 2
oss/client_test.go

@@ -64,8 +64,6 @@ var (
 	timeoutInOperation = 3 * time.Second
 	timeoutInOperation = 3 * time.Second
 )
 )
 
 
-//var randMarker = rand.New(rand.NewSource(time.Now().UnixNano()))
-
 func randStr(n int) string {
 func randStr(n int) string {
 	b := make([]rune, n)
 	b := make([]rune, n)
 	randMarker := rand.New(rand.NewSource(time.Now().UnixNano()))
 	randMarker := rand.New(rand.NewSource(time.Now().UnixNano()))
@@ -760,6 +758,74 @@ func (s *OssClientSuite) TestSetBucketLifecycleNew(c *C) {
 	err = client.DeleteBucketLifecycle(bucketNameTest)
 	err = client.DeleteBucketLifecycle(bucketNameTest)
 	c.Assert(err, IsNil)
 	c.Assert(err, IsNil)
 
 
+	// Set two rule: rule1 and rule2
+	rules = []LifecycleRule{rule1, rule2}
+	err = client.SetBucketLifecycle(bucketNameTest, rules)
+	c.Assert(err, IsNil)
+
+	res, err = client.GetBucketLifecycle(bucketNameTest)
+	c.Assert(err, IsNil)
+	c.Assert(len(res.Rules), Equals, 2)
+	c.Assert(res.Rules[0].ID, Equals, "rule1")
+	c.Assert(res.Rules[0].Expiration, NotNil)
+	c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
+	c.Assert(res.Rules[1].ID, Equals, "rule2")
+	c.Assert(res.Rules[1].Expiration, NotNil)
+	c.Assert(res.Rules[1].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
+	c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
+	c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
+
+	err = client.DeleteBucketLifecycle(bucketNameTest)
+	c.Assert(err, IsNil)
+
+	// Set two rule: rule2 and rule3
+	rules = []LifecycleRule{rule2, rule3}
+	err = client.SetBucketLifecycle(bucketNameTest, rules)
+	c.Assert(err, IsNil)
+
+	res, err = client.GetBucketLifecycle(bucketNameTest)
+	c.Assert(err, IsNil)
+	c.Assert(len(res.Rules), Equals, 2)
+	c.Assert(res.Rules[0].ID, Equals, "rule2")
+	c.Assert(res.Rules[0].Expiration, NotNil)
+	c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
+	c.Assert(res.Rules[0].AbortMultipartUpload, NotNil)
+	c.Assert(res.Rules[0].AbortMultipartUpload.Days, Equals, 30)
+	c.Assert(res.Rules[1].ID, Equals, "rule3")
+	c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
+	c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
+	c.Assert(len(res.Rules[1].Transitions), Equals, 2)
+	c.Assert(res.Rules[1].Transitions[0].StorageClass, Equals, StorageIA)
+	c.Assert(res.Rules[1].Transitions[0].Days, Equals, 3)
+	c.Assert(res.Rules[1].Transitions[1].StorageClass, Equals, StorageArchive)
+	c.Assert(res.Rules[1].Transitions[1].Days, Equals, 30)
+
+	err = client.DeleteBucketLifecycle(bucketNameTest)
+	c.Assert(err, IsNil)
+
+	// Set two rule: rule1 and rule3
+	rules = []LifecycleRule{rule1, rule3}
+	err = client.SetBucketLifecycle(bucketNameTest, rules)
+	c.Assert(err, IsNil)
+
+	res, err = client.GetBucketLifecycle(bucketNameTest)
+	c.Assert(err, IsNil)
+	c.Assert(len(res.Rules), Equals, 2)
+	c.Assert(res.Rules[0].ID, Equals, "rule1")
+	c.Assert(res.Rules[0].Expiration, NotNil)
+	c.Assert(res.Rules[0].Expiration.CreatedBeforeDate, Equals, "2015-11-11T00:00:00.000Z")
+	c.Assert(res.Rules[1].ID, Equals, "rule3")
+	c.Assert(res.Rules[1].AbortMultipartUpload, NotNil)
+	c.Assert(res.Rules[1].AbortMultipartUpload.Days, Equals, 30)
+	c.Assert(len(res.Rules[1].Transitions), Equals, 2)
+	c.Assert(res.Rules[1].Transitions[0].StorageClass, Equals, StorageIA)
+	c.Assert(res.Rules[1].Transitions[0].Days, Equals, 3)
+	c.Assert(res.Rules[1].Transitions[1].StorageClass, Equals, StorageArchive)
+	c.Assert(res.Rules[1].Transitions[1].Days, Equals, 30)
+
+	err = client.DeleteBucketLifecycle(bucketNameTest)
+	c.Assert(err, IsNil)
+
 	// Set three rules
 	// Set three rules
 	rules = []LifecycleRule{rule1, rule2, rule3}
 	rules = []LifecycleRule{rule1, rule2, rule3}
 	err = client.SetBucketLifecycle(bucketNameTest, rules)
 	err = client.SetBucketLifecycle(bucketNameTest, rules)

+ 3 - 0
oss/type.go

@@ -100,6 +100,9 @@ func BuildLifecycleRuleByDate(id, prefix string, status bool, year, month, day i
 
 
 // ValidateLifecycleRule Determine if a lifecycle rule is valid, if it is invalid, it will return an error.
 // ValidateLifecycleRule Determine if a lifecycle rule is valid, if it is invalid, it will return an error.
 func verifyLifecycleRules(rules []LifecycleRule) error {
 func verifyLifecycleRules(rules []LifecycleRule) error {
+	if len(rules) == 0 {
+		return fmt.Errorf("invalid rules, the length of rules is zero")
+	}
 	for _, rule := range rules {
 	for _, rule := range rules {
 		if rule.Status != "Enabled" && rule.Status != "Disabled" {
 		if rule.Status != "Enabled" && rule.Status != "Disabled" {
 			return fmt.Errorf("invalid rule, the value of status must be Enabled or Disabled")
 			return fmt.Errorf("invalid rule, the value of status must be Enabled or Disabled")

+ 4 - 0
oss/type_test.go

@@ -268,6 +268,10 @@ func (s *OssTypeSuite) TestValidateLifecleRules(c *C) {
 	err = verifyLifecycleRules(rules)
 	err = verifyLifecycleRules(rules)
 	c.Assert(err, NotNil)
 	c.Assert(err, NotNil)
 
 
+	rules = []LifecycleRule{}
+	err1 := verifyLifecycleRules(rules)
+	c.Assert(err1, NotNil)
+
 	expiration = LifecycleExpiration{
 	expiration = LifecycleExpiration{
 		Days: 30,
 		Days: 30,
 	}
 	}