From 12f355a3bc35c1be93827dcc1a2099954676fe0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Mon, 20 Apr 2026 12:27:22 +0800 Subject: [PATCH] test: cover S3 error XML body compatibility (#2606) --- rustfs/src/server/layer.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/rustfs/src/server/layer.rs b/rustfs/src/server/layer.rs index e4b9c7743..df272d190 100644 --- a/rustfs/src/server/layer.rs +++ b/rustfs/src/server/layer.rs @@ -871,6 +871,30 @@ mod tests { ); } + #[tokio::test] + async fn test_fix_s3_error_message_in_xml_reports_changed_body() { + let body = Full::from(Bytes::from_static(b"SignatureDoesNotMatch")); + + let (fixed, changed) = fix_s3_error_message_in_xml(body).await.unwrap(); + let bytes = BodyExt::collect(fixed).await.unwrap().to_bytes(); + + assert!(changed); + assert!(bytes.starts_with(b"SignatureDoesNotMatch")); + assert!(bytes.ends_with(b"")); + } + + #[tokio::test] + async fn test_fix_s3_error_message_in_xml_reports_unchanged_body() { + let input = Bytes::from_static(b"AccessDenied"); + let body = Full::from(input.clone()); + + let (fixed, changed) = fix_s3_error_message_in_xml(body).await.unwrap(); + let bytes = BodyExt::collect(fixed).await.unwrap().to_bytes(); + + assert!(!changed); + assert_eq!(bytes, input); + } + #[test] fn test_insert_missing_signature_error_message() { let (fixed, changed) =