From 24b1283cf7486ab15f15de8ceeace6a690845d27 Mon Sep 17 00:00:00 2001 From: overtrue Date: Sun, 12 Apr 2026 06:04:20 +0800 Subject: [PATCH] test(s3): cover empty optional cors headers --- crates/s3/src/client.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/crates/s3/src/client.rs b/crates/s3/src/client.rs index 75f0db5..a4783a7 100644 --- a/crates/s3/src/client.rs +++ b/crates/s3/src/client.rs @@ -3003,6 +3003,19 @@ mod tests { assert_eq!(rule.max_age_seconds, Some(300)); } + #[test] + fn sdk_cors_rule_to_core_drops_empty_optional_headers() { + let sdk_rule = aws_sdk_s3::types::CorsRule::builder() + .allowed_origins("https://app.example.com") + .allowed_methods("GET") + .build() + .expect("build cors rule"); + + let rule = sdk_cors_rule_to_core(&sdk_rule); + assert_eq!(rule.allowed_headers, None); + assert_eq!(rule.expose_headers, None); + } + #[test] fn core_cors_rule_to_sdk_normalizes_method_case() { let rule = CorsRule { @@ -3022,6 +3035,22 @@ mod tests { assert_eq!(sdk_rule.max_age_seconds(), Some(600)); } + #[test] + fn core_cors_rule_to_sdk_drops_empty_optional_headers() { + let rule = CorsRule { + id: None, + allowed_origins: vec!["https://app.example.com".to_string()], + allowed_methods: vec!["GET".to_string()], + allowed_headers: Some(Vec::new()), + expose_headers: Some(Vec::new()), + max_age_seconds: None, + }; + + let sdk_rule = core_cors_rule_to_sdk(&rule).expect("convert cors rule"); + assert!(sdk_rule.allowed_headers().is_empty()); + assert!(sdk_rule.expose_headers().is_empty()); + } + #[test] fn parse_cors_configuration_xml_round_trips_rule_fields() { let body = r#"