mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-05 23:57:10 +00:00
fixes
This commit is contained in:
@@ -27,7 +27,7 @@ var (
|
||||
ErrInvalidObjectLockMode = errors.New("invalid object lock mode")
|
||||
ErrInvalidLegalHoldStatus = errors.New("invalid legal hold status")
|
||||
ErrInvalidRetentionDateFormat = errors.New("invalid retention until date format")
|
||||
ErrRetentionDateMustBeFuture = errors.New("retention until date must be in the future")
|
||||
ErrRetentionDateMustBeFuture = errors.New("retain until date must be in the future")
|
||||
ErrObjectLockModeRequiresDate = errors.New("object lock mode requires retention until date")
|
||||
ErrRetentionDateRequiresMode = errors.New("retention until date requires object lock mode")
|
||||
ErrGovernanceBypassVersioningRequired = errors.New("governance bypass header can only be used on versioned buckets")
|
||||
@@ -604,6 +604,10 @@ func mapValidationErrorToS3Error(err error) s3err.ErrorCode {
|
||||
// For invalid retention period (e.g., Days <= 0), return InvalidRetentionPeriod
|
||||
// This matches the test expectations
|
||||
return s3err.ErrInvalidRetentionPeriod
|
||||
case errors.Is(err, ErrInvalidRetentionMode):
|
||||
// For invalid retention mode, return InvalidRequest
|
||||
// This matches the test expectations
|
||||
return s3err.ErrInvalidRequest
|
||||
// Validation error constants
|
||||
case errors.Is(err, ErrObjectLockConfigurationMissingEnabled):
|
||||
return s3err.ErrMalformedXML
|
||||
@@ -625,5 +629,15 @@ func mapValidationErrorToS3Error(err error) s3err.ErrorCode {
|
||||
return s3err.ErrInvalidRetentionPeriod
|
||||
}
|
||||
|
||||
// Check for error constants from the updated validation functions
|
||||
switch {
|
||||
case errors.Is(err, ErrRetentionMissingMode):
|
||||
return s3err.ErrInvalidRequest
|
||||
case errors.Is(err, ErrRetentionMissingRetainUntilDate):
|
||||
return s3err.ErrInvalidRequest
|
||||
case errors.Is(err, ErrInvalidRetentionModeValue):
|
||||
return s3err.ErrInvalidRequest
|
||||
}
|
||||
|
||||
return s3err.ErrInvalidRequest
|
||||
}
|
||||
|
||||
@@ -35,6 +35,11 @@ var (
|
||||
ErrInvalidRetentionMode = errors.New("invalid retention mode specified")
|
||||
ErrBothDaysAndYearsSpecified = errors.New("both days and years cannot be specified in the same retention configuration")
|
||||
ErrMalformedXML = errors.New("malformed XML in request body")
|
||||
|
||||
// Validation error constants with specific messages for tests
|
||||
ErrRetentionMissingMode = errors.New("retention configuration must specify Mode")
|
||||
ErrRetentionMissingRetainUntilDate = errors.New("retention configuration must specify RetainUntilDate")
|
||||
ErrInvalidRetentionModeValue = errors.New("invalid retention mode")
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -157,23 +162,24 @@ func parseObjectLockConfiguration(request *http.Request) (*ObjectLockConfigurati
|
||||
|
||||
// validateRetention validates retention configuration
|
||||
func validateRetention(retention *ObjectRetention) error {
|
||||
// AWS requires both Mode and RetainUntilDate for PutObjectRetention
|
||||
// Check if mode is specified
|
||||
if retention.Mode == "" {
|
||||
return ErrInvalidRetentionMode
|
||||
return ErrRetentionMissingMode
|
||||
}
|
||||
|
||||
// Check if retain until date is specified
|
||||
if retention.RetainUntilDate == nil {
|
||||
return ErrInvalidRetentionPeriod
|
||||
return ErrRetentionMissingRetainUntilDate
|
||||
}
|
||||
|
||||
// For invalid retention mode values, return MalformedXML error
|
||||
// This matches the test expectations for lowercase/invalid mode values
|
||||
// Check if mode is valid
|
||||
if retention.Mode != s3_constants.RetentionModeGovernance && retention.Mode != s3_constants.RetentionModeCompliance {
|
||||
return ErrMalformedXML
|
||||
return ErrInvalidRetentionModeValue
|
||||
}
|
||||
|
||||
// Check if retain until date is in the future
|
||||
if retention.RetainUntilDate.Before(time.Now()) {
|
||||
return ErrInvalidRetentionPeriod
|
||||
return ErrRetentionDateMustBeFuture
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -181,10 +187,9 @@ func validateRetention(retention *ObjectRetention) error {
|
||||
|
||||
// validateLegalHold validates legal hold configuration
|
||||
func validateLegalHold(legalHold *ObjectLegalHold) error {
|
||||
// For invalid legal hold status values, return MalformedXML error
|
||||
// This matches the test expectations for invalid status values
|
||||
// Check if status is valid
|
||||
if legalHold.Status != s3_constants.LegalHoldOn && legalHold.Status != s3_constants.LegalHoldOff {
|
||||
return ErrMalformedXML
|
||||
return ErrInvalidLegalHoldStatus
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -236,9 +241,9 @@ func validateDefaultRetention(retention *DefaultRetention) error {
|
||||
return ErrInvalidRetentionPeriod
|
||||
}
|
||||
|
||||
// Check for Days: 0 when Years is also 0 (this should return InvalidRetentionPeriod)
|
||||
// Check for neither Days nor Years being specified
|
||||
if retention.Days == 0 && retention.Years == 0 {
|
||||
return ErrInvalidRetentionPeriod
|
||||
return ErrDefaultRetentionMissingPeriod
|
||||
}
|
||||
|
||||
// Check for both Days and Years being specified
|
||||
|
||||
Reference in New Issue
Block a user