fix: lifecycle-expiration validation bug (#10327)

This commit is contained in:
KevinSmile 2020-08-25 04:56:50 +08:00 committed by GitHub
parent c097ce9c32
commit 5f7bd2b1da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 11 deletions

View File

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

View File

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

View File

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

View File

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