mirror of
https://github.com/rustfs/rustfs.git
synced 2026-01-16 17:20:33 +00:00
fix: avoid unwrap() panic in delete_prefix parsing (#1476)
Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user