fix: block force delete on object lock buckets (#4298)

This commit is contained in:
Zhengchao An
2026-07-06 14:05:39 +08:00
committed by GitHub
parent 3e4c15da5d
commit a9115f729e
3 changed files with 29 additions and 6 deletions
+19 -1
View File
@@ -423,7 +423,7 @@ impl BucketMetadata {
}
pub fn object_locking(&self) -> bool {
self.lock_enabled || (self.versioning_config.as_ref().is_some_and(|v| v.enabled()))
self.lock_enabled || self.object_lock_config.as_ref().is_some_and(|v| v.enabled())
}
pub fn table_bucket_enabled(&self) -> bool {
@@ -1113,6 +1113,24 @@ mod test {
assert_eq!(bm.name, new.name);
}
#[test]
fn object_locking_requires_lock_metadata_not_plain_versioning() {
use s3s::dto::ObjectLockEnabled;
let mut bm = BucketMetadata::new("test-bucket");
bm.versioning_config = Some(VersioningConfiguration {
status: Some(s3s::dto::BucketVersioningStatus::from_static("Enabled")),
..Default::default()
});
assert!(!bm.object_locking());
bm.object_lock_config = Some(ObjectLockConfiguration {
object_lock_enabled: Some(ObjectLockEnabled::from_static(ObjectLockEnabled::ENABLED)),
..Default::default()
});
assert!(bm.object_locking());
}
#[test]
fn parse_all_configs_parses_stored_configs_without_store_dependency() {
let mut bm = BucketMetadata::new("test-bucket");