mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-28 16:07:05 +00:00
test(storage): cover write-offset pre-auth rejection (#2319)
This commit is contained in:
@@ -2245,4 +2245,47 @@ mod tests {
|
|||||||
|
|
||||||
assert!(has_write_offset_bytes_header(&headers));
|
assert!(has_write_offset_bytes_header(&headers));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn put_object_rejects_write_offset_bytes_before_authorize_request() {
|
||||||
|
let input = PutObjectInput::builder()
|
||||||
|
.bucket("test-bucket".to_string())
|
||||||
|
.key("test-key".to_string())
|
||||||
|
.build()
|
||||||
|
.expect("put object input should build");
|
||||||
|
|
||||||
|
let mut req = S3Request {
|
||||||
|
input,
|
||||||
|
method: Method::PUT,
|
||||||
|
uri: Uri::from_static("/test-bucket/test-key"),
|
||||||
|
headers: HeaderMap::new(),
|
||||||
|
extensions: http::Extensions::new(),
|
||||||
|
credentials: None,
|
||||||
|
region: None,
|
||||||
|
service: None,
|
||||||
|
trailing_headers: None,
|
||||||
|
};
|
||||||
|
req.headers
|
||||||
|
.insert("x-amz-write-offset-bytes", http::HeaderValue::from_static("0"));
|
||||||
|
req.extensions.insert(ReqInfo {
|
||||||
|
cred: Some(rustfs_credentials::Credentials::default()),
|
||||||
|
..ReqInfo::default()
|
||||||
|
});
|
||||||
|
|
||||||
|
let err = FS::new()
|
||||||
|
.put_object(&mut req)
|
||||||
|
.await
|
||||||
|
.expect_err("write-offset-bytes requests should be rejected before authorization");
|
||||||
|
|
||||||
|
assert_eq!(err.code(), &S3ErrorCode::NotImplemented);
|
||||||
|
assert_eq!(
|
||||||
|
err.message(),
|
||||||
|
Some(ApiError::error_code_to_message(&S3ErrorCode::NotImplemented).as_str())
|
||||||
|
);
|
||||||
|
|
||||||
|
let req_info = req.extensions.get::<ReqInfo>().expect("req info should remain available");
|
||||||
|
assert_eq!(req_info.bucket.as_deref(), Some("test-bucket"));
|
||||||
|
assert_eq!(req_info.object.as_deref(), Some("test-key"));
|
||||||
|
assert_eq!(req_info.version_id, None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user