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 ( var (
errLifecycleInvalidDate = Errorf("Date must be provided in ISO 8601 format") errLifecycleInvalidDate = Errorf("Date must be provided in ISO 8601 format")
errLifecycleInvalidDays = Errorf("Days must be positive integer when used with Expiration") 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") errLifecycleInvalidDeleteMarker = Errorf("Delete marker cannot be specified with Days or Date in a Lifecycle Expiration Policy")
errLifecycleDateNotMidnight = Errorf("'Date' must be at midnight GMT") errLifecycleDateNotMidnight = Errorf("'Date' must be at midnight GMT")
) )

View File

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

View File

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

View File

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