@@ -7,7 +7,9 @@ use std::time::{Duration, SystemTime};
77
88use aws_config:: timeout:: TimeoutConfig ;
99use aws_config:: Region ;
10- use aws_runtime:: user_agent:: test_util:: assert_ua_does_not_contain_metric_values;
10+ use aws_runtime:: user_agent:: test_util:: {
11+ assert_ua_contains_metric_values, assert_ua_does_not_contain_metric_values,
12+ } ;
1113use aws_sdk_s3:: config:: endpoint:: { EndpointFuture , Params , ResolveEndpoint } ;
1214use aws_sdk_s3:: config:: { Builder , Credentials } ;
1315use aws_sdk_s3:: presigning:: PresigningConfig ;
@@ -466,3 +468,34 @@ async fn s3_express_auth_flow_should_not_be_reached_with_no_auth_schemes() {
466468 // If s3 Express auth flow were exercised, no request would be received, most likely due to `TimeoutError`.
467469 let _ = request. expect_request ( ) ;
468470}
471+
472+ #[ tokio:: test]
473+ async fn s3_express_request_contains_metric_j ( ) {
474+ let _logs = capture_test_logs ( ) ;
475+
476+ let http_client = ReplayingClient :: from_file ( "tests/data/express/mixed-auths.json" ) . unwrap ( ) ;
477+ let client = test_client ( |b| b. http_client ( http_client. clone ( ) ) ) . await ;
478+
479+ let _result = client
480+ . list_objects_v2 ( )
481+ . bucket ( "s3express-test-bucket--usw2-az1--x-s3" )
482+ . send ( )
483+ . await
484+ . expect ( "Request should succeed" ) ;
485+
486+ let requests = http_client. take_requests ( ) . await ;
487+
488+ let s3_express_request = requests
489+ . iter ( )
490+ . find ( |req| req. headers ( ) . get ( "x-amz-s3session-token" ) . is_some ( ) )
491+ . expect ( "Should have at least one S3 Express request with session token" ) ;
492+
493+ let user_agent = s3_express_request
494+ . headers ( )
495+ . get ( "x-amz-user-agent" )
496+ . expect ( "User-Agent header should be present" )
497+ . to_str ( )
498+ . expect ( "User-Agent should be valid UTF-8" ) ;
499+
500+ assert_ua_contains_metric_values ( user_agent, & [ "J" ] ) ;
501+ }
0 commit comments