fix: avoid unwrap() panic in delete_prefix parsing (#1476)

Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
weisd
2026-01-12 13:26:01 +08:00
committed by GitHub
parent f9d3a908f0
commit f0da8ce216

View File

@@ -80,7 +80,7 @@ pub async fn del_opts(
opts.delete_prefix = headers
.get(RUSTFS_FORCE_DELETE)
.map(|v| v.to_str().unwrap() == "true")
.map(|v| v.to_str().unwrap_or_default() == "true")
.unwrap_or_default();
opts.version_id = {
@@ -671,6 +671,39 @@ mod tests {
}
}
#[tokio::test]
async fn test_del_opts_with_delete_prefix() {
let mut headers = create_test_headers();
let metadata = create_test_metadata();
// Test without RUSTFS_FORCE_DELETE header - should default to false
let result = del_opts("test-bucket", "test-object", None, &headers, metadata.clone()).await;
assert!(result.is_ok());
let opts = result.unwrap();
assert!(!opts.delete_prefix);
// Test with RUSTFS_FORCE_DELETE header set to "true"
headers.insert(RUSTFS_FORCE_DELETE, HeaderValue::from_static("true"));
let result = del_opts("test-bucket", "test-object", None, &headers, metadata.clone()).await;
assert!(result.is_ok());
let opts = result.unwrap();
assert!(opts.delete_prefix);
// Test with RUSTFS_FORCE_DELETE header set to "false"
headers.insert(RUSTFS_FORCE_DELETE, HeaderValue::from_static("false"));
let result = del_opts("test-bucket", "test-object", None, &headers, metadata.clone()).await;
assert!(result.is_ok());
let opts = result.unwrap();
assert!(!opts.delete_prefix);
// Test with RUSTFS_FORCE_DELETE header set to other value
headers.insert(RUSTFS_FORCE_DELETE, HeaderValue::from_static("maybe"));
let result = del_opts("test-bucket", "test-object", None, &headers, metadata).await;
assert!(result.is_ok());
let opts = result.unwrap();
assert!(!opts.delete_prefix);
}
#[tokio::test]
async fn test_get_opts_basic() {
let headers = create_test_headers();