fix: lifecycle-expiration validation bug (#10327)

master
KevinSmile 4 years ago committed by GitHub
parent c097ce9c32
commit 5f7bd2b1da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      pkg/bucket/lifecycle/expiration.go
  2. 2
      pkg/bucket/lifecycle/expiration_test.go
  3. 12
      pkg/bucket/lifecycle/rule.go
  4. 2
      pkg/bucket/lifecycle/rule_test.go

@ -24,7 +24,7 @@ import (
var (
errLifecycleInvalidDate = Errorf("Date must be provided in ISO 8601 format")
errLifecycleInvalidDays = Errorf("Days must be positive integer when used with Expiration")
errLifecycleInvalidExpiration = Errorf("At least one of Days or Date should be present inside Expiration")
errLifecycleInvalidExpiration = Errorf("Exactly one of Days (positive integer) or Date (positive ISO 8601 format) should be present inside Expiration.")
errLifecycleInvalidDeleteMarker = Errorf("Delete marker cannot be specified with Days or Date in a Lifecycle Expiration Policy")
errLifecycleDateNotMidnight = Errorf("'Date' must be at midnight GMT")
)

@ -80,7 +80,7 @@ func TestInvalidExpiration(t *testing.T) {
</Expiration>`,
expectedErr: errLifecycleInvalidExpiration,
},
{ // Expiration with both number of days nor a date
{ // Expiration with both number of days and a date
inputXML: `<Expiration>
<Days>3</Days>
<Date>2019-04-20T00:00:00Z</Date>

@ -46,10 +46,9 @@ type Rule struct {
}
var (
errInvalidRuleID = Errorf("ID length is limited to 255 characters")
errEmptyRuleStatus = Errorf("Status should not be empty")
errInvalidRuleStatus = Errorf("Status must be set to either Enabled or Disabled")
errMissingExpirationAction = Errorf("No expiration action found")
errInvalidRuleID = Errorf("ID length is limited to 255 characters")
errEmptyRuleStatus = Errorf("Status should not be empty")
errInvalidRuleStatus = Errorf("Status must be set to either Enabled or Disabled")
)
// generates random UUID
@ -94,10 +93,7 @@ func (r Rule) validateStatus() error {
}
func (r Rule) validateAction() error {
if r.Expiration == (Expiration{}) {
return errMissingExpirationAction
}
return nil
return r.Expiration.Validate()
}
func (r Rule) validateFilter() error {

@ -67,7 +67,7 @@ func TestInvalidRules(t *testing.T) {
<ID>rule without expiration</ID>
<Status>Enabled</Status>
</Rule>`,
expectedErr: errMissingExpirationAction,
expectedErr: errLifecycleInvalidExpiration,
},
{ // Rule with ID longer than 255 characters
inputXML: ` <Rule>

Loading…
Cancel
Save