Client Test

Client Test

rev. c4f9295a7b4566dca79c361e3a2aa9e63cdf82e7

Files changed:

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_payload_traits.rs

@@ -210,210 +302,302 @@
  230    230   
  231    231   
#[allow(unreachable_code, unused_variables)]
  232    232   
#[cfg(test)]
  233    233   
mod http_payload_traits_test {
  234    234   
  235    235   
    /// Serializes a blob in the HTTP payload
  236    236   
    /// Test ID: RestJsonHttpPayloadTraitsWithBlob
  237    237   
    #[::tokio::test]
  238    238   
    #[::tracing_test::traced_test]
  239    239   
    async fn rest_json_http_payload_traits_with_blob_request() {
  240         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         240  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  241    241   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  242    242   
  243    243   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  244    244   
        let result = client
  245    245   
            .http_payload_traits()
  246    246   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  247    247   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::Blob::new("blobby blob blob")))
  248    248   
            .send()
  249    249   
            .await;
  250    250   
        let _ = dbg!(result);
  251    251   
        let http_request = request_receiver.expect_request();
  252    252   
        let expected_headers = [("Content-Type", "application/octet-stream"), ("X-Foo", "Foo")];
  253    253   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  254    254   
        let required_headers = &["Content-Length"];
  255    255   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  256    256   
        let body = http_request.body().bytes().expect("body should be strict");
  257    257   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  258    258   
            body,
  259    259   
            "blobby blob blob",
  260    260   
            ::aws_smithy_protocol_test::MediaType::from("application/octet-stream"),
  261    261   
        ));
  262    262   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  263    263   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  264    264   
        ::pretty_assertions::assert_eq!(uri.path(), "/HttpPayloadTraits", "path was incorrect");
  265    265   
    }
  266    266   
  267    267   
    /// Serializes an empty blob in the HTTP payload
  268    268   
    /// Test ID: RestJsonHttpPayloadTraitsWithNoBlobBody
  269    269   
    #[::tokio::test]
  270    270   
    #[::tracing_test::traced_test]
  271    271   
    async fn rest_json_http_payload_traits_with_no_blob_body_request() {
  272         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         272  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  273    273   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  274    274   
  275    275   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  276    276   
        let result = client
  277    277   
            .http_payload_traits()
  278    278   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  279    279   
            .send()
  280    280   
            .await;
  281    281   
        let _ = dbg!(result);
  282    282   
        let http_request = request_receiver.expect_request();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_payload_traits_with_media_type.rs

@@ -215,215 +275,275 @@
  235    235   
  236    236   
#[allow(unreachable_code, unused_variables)]
  237    237   
#[cfg(test)]
  238    238   
mod http_payload_traits_with_media_type_test {
  239    239   
  240    240   
    /// Serializes a blob in the HTTP payload with a content-type
  241    241   
    /// Test ID: RestJsonHttpPayloadTraitsWithMediaTypeWithBlob
  242    242   
    #[::tokio::test]
  243    243   
    #[::tracing_test::traced_test]
  244    244   
    async fn rest_json_http_payload_traits_with_media_type_with_blob_request() {
  245         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         245  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  246    246   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  247    247   
  248    248   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  249    249   
        let result = client
  250    250   
            .http_payload_traits_with_media_type()
  251    251   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  252    252   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::Blob::new("blobby blob blob")))
  253    253   
            .send()
  254    254   
            .await;
  255    255   
        let _ = dbg!(result);

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_payload_with_structure.rs

@@ -210,210 +270,270 @@
  230    230   
  231    231   
#[allow(unreachable_code, unused_variables)]
  232    232   
#[cfg(test)]
  233    233   
mod http_payload_with_structure_test {
  234    234   
  235    235   
    /// Serializes a structure in the payload
  236    236   
    /// Test ID: RestJsonHttpPayloadWithStructure
  237    237   
    #[::tokio::test]
  238    238   
    #[::tracing_test::traced_test]
  239    239   
    async fn rest_json_http_payload_with_structure_request() {
  240         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         240  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  241    241   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  242    242   
  243    243   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  244    244   
        let result = client
  245    245   
            .http_payload_with_structure()
  246    246   
            .set_nested(::std::option::Option::Some(
  247    247   
                crate::types::NestedPayload::builder()
  248    248   
                    .set_greeting(::std::option::Option::Some("hello".to_owned()))
  249    249   
                    .set_name(::std::option::Option::Some("Phreddy".to_owned()))
  250    250   
                    .build(),

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_payload_with_union.rs

@@ -210,210 +301,301 @@
  230    230   
  231    231   
#[allow(unreachable_code, unused_variables)]
  232    232   
#[cfg(test)]
  233    233   
mod http_payload_with_union_test {
  234    234   
  235    235   
    /// Serializes a union in the payload.
  236    236   
    /// Test ID: RestJsonHttpPayloadWithUnion
  237    237   
    #[::tokio::test]
  238    238   
    #[::tracing_test::traced_test]
  239    239   
    async fn rest_json_http_payload_with_union_request() {
  240         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         240  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  241    241   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  242    242   
  243    243   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  244    244   
        let result = client
  245    245   
            .http_payload_with_union()
  246    246   
            .set_nested(::std::option::Option::Some(crate::types::UnionPayload::Greeting("hello".to_owned())))
  247    247   
            .send()
  248    248   
            .await;
  249    249   
        let _ = dbg!(result);
  250    250   
        let http_request = request_receiver.expect_request();
  251    251   
        let expected_headers = [("Content-Type", "application/json")];
  252    252   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  253    253   
        let required_headers = &["Content-Length"];
  254    254   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  255    255   
        let body = http_request.body().bytes().expect("body should be strict");
  256    256   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  257    257   
            body,
  258    258   
            "{\n    \"greeting\": \"hello\"\n}",
  259    259   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  260    260   
        ));
  261    261   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  262    262   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  263    263   
        ::pretty_assertions::assert_eq!(uri.path(), "/HttpPayloadWithUnion", "path was incorrect");
  264    264   
    }
  265    265   
  266    266   
    /// No payload is sent if the union has no value.
  267    267   
    /// Test ID: RestJsonHttpPayloadWithUnsetUnion
  268    268   
    #[::tokio::test]
  269    269   
    #[::tracing_test::traced_test]
  270    270   
    async fn rest_json_http_payload_with_unset_union_request() {
  271         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         271  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  272    272   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  273    273   
  274    274   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  275    275   
        let result = client.http_payload_with_union().send().await;
  276    276   
        let _ = dbg!(result);
  277    277   
        let http_request = request_receiver.expect_request();
  278    278   
        let body = http_request.body().bytes().expect("body should be strict");
  279    279   
        // No body.
  280    280   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  281    281   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_prefix_headers.rs

@@ -205,205 +324,324 @@
  225    225   
  226    226   
#[allow(unreachable_code, unused_variables)]
  227    227   
#[cfg(test)]
  228    228   
mod http_prefix_headers_test {
  229    229   
  230    230   
    /// Adds headers by prefix
  231    231   
    /// Test ID: RestJsonHttpPrefixHeadersArePresent
  232    232   
    #[::tokio::test]
  233    233   
    #[::tracing_test::traced_test]
  234    234   
    async fn rest_json_http_prefix_headers_are_present_request() {
  235         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         235  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  236    236   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  237    237   
  238    238   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  239    239   
        let result = client
  240    240   
            .http_prefix_headers()
  241    241   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  242    242   
            .set_foo_map(::std::option::Option::Some({
  243    243   
                let mut ret = ::std::collections::HashMap::new();
  244    244   
                ret.insert("Abc".to_owned().to_ascii_lowercase(), "Abc value".to_owned());
  245    245   
                ret.insert("Def".to_owned().to_ascii_lowercase(), "Def value".to_owned());
  246    246   
                ret
  247    247   
            }))
  248    248   
            .send()
  249    249   
            .await;
  250    250   
        let _ = dbg!(result);
  251    251   
        let http_request = request_receiver.expect_request();
  252    252   
        let expected_headers = [("X-Foo", "Foo"), ("X-Foo-Abc", "Abc value"), ("X-Foo-Def", "Def value")];
  253    253   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  254    254   
        let body = http_request.body().bytes().expect("body should be strict");
  255    255   
        // No body.
  256    256   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  257    257   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  258    258   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  259    259   
        ::pretty_assertions::assert_eq!(uri.path(), "/HttpPrefixHeaders", "path was incorrect");
  260    260   
    }
  261    261   
  262    262   
    /// No prefix headers are serialized because the value is not present
  263    263   
    /// Test ID: RestJsonHttpPrefixHeadersAreNotPresent
  264    264   
    #[::tokio::test]
  265    265   
    #[::tracing_test::traced_test]
  266    266   
    async fn rest_json_http_prefix_headers_are_not_present_request() {
  267         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         267  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  268    268   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  269    269   
  270    270   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  271    271   
        let result = client
  272    272   
            .http_prefix_headers()
  273    273   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  274    274   
            .set_foo_map(::std::option::Option::Some(::std::collections::HashMap::new()))
  275    275   
            .send()
  276    276   
            .await;
  277    277   
        let _ = dbg!(result);
  278    278   
        let http_request = request_receiver.expect_request();
  279    279   
        let expected_headers = [("X-Foo", "Foo")];
  280    280   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  281    281   
        let body = http_request.body().bytes().expect("body should be strict");
  282    282   
        // No body.
  283    283   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  284    284   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  285    285   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  286    286   
        ::pretty_assertions::assert_eq!(uri.path(), "/HttpPrefixHeaders", "path was incorrect");
  287    287   
    }
  288    288   
  289    289   
    /// Serialize prefix headers were the value is present but empty
  290    290   
    /// Test ID: RestJsonHttpPrefixEmptyHeaders
  291    291   
    #[::tokio::test]
  292    292   
    #[::tracing_test::traced_test]
  293    293   
    async fn rest_json_http_prefix_empty_headers_request() {
  294         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         294  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  295    295   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  296    296   
  297    297   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  298    298   
        let result = client
  299    299   
            .http_prefix_headers()
  300    300   
            .set_foo_map(::std::option::Option::Some({
  301    301   
                let mut ret = ::std::collections::HashMap::new();
  302    302   
                ret.insert("Abc".to_owned().to_ascii_lowercase(), "".to_owned());
  303    303   
                ret
  304    304   
            }))

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_request_with_float_labels.rs

@@ -228,228 +346,346 @@
  248    248   
  249    249   
#[allow(unreachable_code, unused_variables)]
  250    250   
#[cfg(test)]
  251    251   
mod http_request_with_float_labels_test {
  252    252   
  253    253   
    /// Supports handling NaN float label values.
  254    254   
    /// Test ID: RestJsonSupportsNaNFloatLabels
  255    255   
    #[::tokio::test]
  256    256   
    #[::tracing_test::traced_test]
  257    257   
    async fn rest_json_supports_na_n_float_labels_request() {
  258         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         258  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  259    259   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  260    260   
  261    261   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  262    262   
        let result = client
  263    263   
            .http_request_with_float_labels()
  264    264   
            .set_float(::std::option::Option::Some(
  265    265   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  266    266   
            ))
  267    267   
            .set_double(::std::option::Option::Some(
  268    268   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  269    269   
            ))
  270    270   
            .send()
  271    271   
            .await;
  272    272   
        let _ = dbg!(result);
  273    273   
        let http_request = request_receiver.expect_request();
  274    274   
        let body = http_request.body().bytes().expect("body should be strict");
  275    275   
        // No body.
  276    276   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  277    277   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  278    278   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  279    279   
        ::pretty_assertions::assert_eq!(uri.path(), "/FloatHttpLabels/NaN/NaN", "path was incorrect");
  280    280   
    }
  281    281   
  282    282   
    /// Supports handling Infinity float label values.
  283    283   
    /// Test ID: RestJsonSupportsInfinityFloatLabels
  284    284   
    #[::tokio::test]
  285    285   
    #[::tracing_test::traced_test]
  286    286   
    async fn rest_json_supports_infinity_float_labels_request() {
  287         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         287  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  288    288   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  289    289   
  290    290   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  291    291   
        let result = client
  292    292   
            .http_request_with_float_labels()
  293    293   
            .set_float(::std::option::Option::Some(
  294    294   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  295    295   
            ))
  296    296   
            .set_double(::std::option::Option::Some(
  297    297   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  298    298   
            ))
  299    299   
            .send()
  300    300   
            .await;
  301    301   
        let _ = dbg!(result);
  302    302   
        let http_request = request_receiver.expect_request();
  303    303   
        let body = http_request.body().bytes().expect("body should be strict");
  304    304   
        // No body.
  305    305   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  306    306   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  307    307   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  308    308   
        ::pretty_assertions::assert_eq!(uri.path(), "/FloatHttpLabels/Infinity/Infinity", "path was incorrect");
  309    309   
    }
  310    310   
  311    311   
    /// Supports handling -Infinity float label values.
  312    312   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatLabels
  313    313   
    #[::tokio::test]
  314    314   
    #[::tracing_test::traced_test]
  315    315   
    async fn rest_json_supports_negative_infinity_float_labels_request() {
  316         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         316  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  317    317   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  318    318   
  319    319   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  320    320   
        let result = client
  321    321   
            .http_request_with_float_labels()
  322    322   
            .set_float(::std::option::Option::Some(
  323    323   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  324    324   
            ))
  325    325   
            .set_double(::std::option::Option::Some(
  326    326   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_request_with_greedy_label_in_path.rs

@@ -231,231 +291,291 @@
  251    251   
  252    252   
#[allow(unreachable_code, unused_variables)]
  253    253   
#[cfg(test)]
  254    254   
mod http_request_with_greedy_label_in_path_test {
  255    255   
  256    256   
    /// Serializes greedy labels and normal labels
  257    257   
    /// Test ID: RestJsonHttpRequestWithGreedyLabelInPath
  258    258   
    #[::tokio::test]
  259    259   
    #[::tracing_test::traced_test]
  260    260   
    async fn rest_json_http_request_with_greedy_label_in_path_request() {
  261         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         261  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  262    262   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  263    263   
  264    264   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  265    265   
        let result = client
  266    266   
            .http_request_with_greedy_label_in_path()
  267    267   
            .set_foo(::std::option::Option::Some("hello/escape".to_owned()))
  268    268   
            .set_baz(::std::option::Option::Some("there/guy".to_owned()))
  269    269   
            .send()
  270    270   
            .await;
  271    271   
        let _ = dbg!(result);

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_request_with_labels.rs

@@ -310,310 +407,407 @@
  330    330   
  331    331   
#[allow(unreachable_code, unused_variables)]
  332    332   
#[cfg(test)]
  333    333   
mod http_request_with_labels_test {
  334    334   
  335    335   
    /// Sends a GET request that uses URI label bindings
  336    336   
    /// Test ID: RestJsonInputWithHeadersAndAllParams
  337    337   
    #[::tokio::test]
  338    338   
    #[::tracing_test::traced_test]
  339    339   
    async fn rest_json_input_with_headers_and_all_params_request() {
  340         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         340  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  341    341   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  342    342   
  343    343   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  344    344   
        let result = client
  345    345   
            .http_request_with_labels()
  346    346   
            .set_string(::std::option::Option::Some("string".to_owned()))
  347    347   
            .set_short(::std::option::Option::Some(1))
  348    348   
            .set_integer(::std::option::Option::Some(2))
  349    349   
            .set_long(::std::option::Option::Some(3))
  350    350   
            .set_float(::std::option::Option::Some(4.1_f32))
  351    351   
            .set_double(::std::option::Option::Some(5.1_f64))
  352    352   
            .set_boolean(::std::option::Option::Some(true))
  353    353   
            .set_timestamp(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  354    354   
                1576540098, 0_f64,
  355    355   
            )))
  356    356   
            .send()
  357    357   
            .await;
  358    358   
        let _ = dbg!(result);
  359    359   
        let http_request = request_receiver.expect_request();
  360    360   
        let body = http_request.body().bytes().expect("body should be strict");
  361    361   
        // No body.
  362    362   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  363    363   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  364    364   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  365    365   
        ::pretty_assertions::assert_eq!(
  366    366   
            uri.path(),
  367    367   
            "/HttpRequestWithLabels/string/1/2/3/4.1/5.1/true/2019-12-16T23%3A48%3A18Z",
  368    368   
            "path was incorrect"
  369    369   
        );
  370    370   
    }
  371    371   
  372    372   
    /// Sends a GET request that uses URI label bindings
  373    373   
    /// Test ID: RestJsonHttpRequestLabelEscaping
  374    374   
    #[::tokio::test]
  375    375   
    #[::tracing_test::traced_test]
  376    376   
    async fn rest_json_http_request_label_escaping_request() {
  377         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         377  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  378    378   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  379    379   
  380    380   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  381    381   
        let result = client
  382    382   
            .http_request_with_labels()
  383    383   
            .set_string(::std::option::Option::Some(" %:/?#[]@!$&'()*+,;=😹".to_owned()))
  384    384   
            .set_short(::std::option::Option::Some(1))
  385    385   
            .set_integer(::std::option::Option::Some(2))
  386    386   
            .set_long(::std::option::Option::Some(3))
  387    387   
            .set_float(::std::option::Option::Some(4.1_f32))

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_request_with_labels_and_timestamp_format.rs

@@ -285,285 +345,345 @@
  305    305   
  306    306   
#[allow(unreachable_code, unused_variables)]
  307    307   
#[cfg(test)]
  308    308   
mod http_request_with_labels_and_timestamp_format_test {
  309    309   
  310    310   
    /// Serializes different timestamp formats in URI labels
  311    311   
    /// Test ID: RestJsonHttpRequestWithLabelsAndTimestampFormat
  312    312   
    #[::tokio::test]
  313    313   
    #[::tracing_test::traced_test]
  314    314   
    async fn rest_json_http_request_with_labels_and_timestamp_format_request() {
  315         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         315  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  316    316   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  317    317   
  318    318   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  319    319   
        let result = client
  320    320   
            .http_request_with_labels_and_timestamp_format()
  321    321   
            .set_member_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  322    322   
                1576540098, 0_f64,
  323    323   
            )))
  324    324   
            .set_member_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  325    325   
                1576540098, 0_f64,

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_request_with_regex_literal.rs

@@ -215,215 +275,275 @@
  235    235   
  236    236   
#[allow(unreachable_code, unused_variables)]
  237    237   
#[cfg(test)]
  238    238   
mod http_request_with_regex_literal_test {
  239    239   
  240    240   
    /// Path matching is not broken by regex expressions in literal segments
  241    241   
    /// Test ID: RestJsonToleratesRegexCharsInSegments
  242    242   
    #[::tokio::test]
  243    243   
    #[::tracing_test::traced_test]
  244    244   
    async fn rest_json_tolerates_regex_chars_in_segments_request() {
  245         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         245  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  246    246   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  247    247   
  248    248   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  249    249   
        let result = client
  250    250   
            .http_request_with_regex_literal()
  251    251   
            .set_str(::std::option::Option::Some("abc".to_owned()))
  252    252   
            .send()
  253    253   
            .await;
  254    254   
        let _ = dbg!(result);
  255    255   
        let http_request = request_receiver.expect_request();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/http_string_payload.rs

@@ -209,209 +269,269 @@
  229    229   
// operationContextParams trait. They target the operation's input shape.
  230    230   
  231    231   
#[allow(unreachable_code, unused_variables)]
  232    232   
#[cfg(test)]
  233    233   
mod http_string_payload_test {
  234    234   
  235    235   
    /// Test ID: RestJsonStringPayloadRequest
  236    236   
    #[::tokio::test]
  237    237   
    #[::tracing_test::traced_test]
  238    238   
    async fn rest_json_string_payload_request_request() {
  239         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         239  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  240    240   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  241    241   
  242    242   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  243    243   
        let result = client
  244    244   
            .http_string_payload()
  245    245   
            .set_payload(::std::option::Option::Some("rawstring".to_owned()))
  246    246   
            .send()
  247    247   
            .await;
  248    248   
        let _ = dbg!(result);
  249    249   
        let http_request = request_receiver.expect_request();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/input_and_output_with_headers.rs

@@ -206,206 +539,539 @@
  226    226   
#[allow(unreachable_code, unused_variables)]
  227    227   
#[cfg(test)]
  228    228   
mod input_and_output_with_headers_test {
  229    229   
    use ::aws_smithy_protocol_test::FloatEquals;
  230    230   
  231    231   
    /// Tests requests with string header bindings
  232    232   
    /// Test ID: RestJsonInputAndOutputWithStringHeaders
  233    233   
    #[::tokio::test]
  234    234   
    #[::tracing_test::traced_test]
  235    235   
    async fn rest_json_input_and_output_with_string_headers_request() {
  236         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         236  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  237    237   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  238    238   
  239    239   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  240    240   
        let result = client
  241    241   
            .input_and_output_with_headers()
  242    242   
            .set_header_string(::std::option::Option::Some("Hello".to_owned()))
  243    243   
            .set_header_string_list(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  244    244   
            .set_header_string_set(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  245    245   
            .send()
  246    246   
            .await;
  247    247   
        let _ = dbg!(result);
  248    248   
        let http_request = request_receiver.expect_request();
  249    249   
        let expected_headers = [("X-String", "Hello"), ("X-StringList", "a, b, c"), ("X-StringSet", "a, b, c")];
  250    250   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  251    251   
        let body = http_request.body().bytes().expect("body should be strict");
  252    252   
        // No body.
  253    253   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  254    254   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  255    255   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  256    256   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  257    257   
    }
  258    258   
  259    259   
    /// Tests requests with string list header bindings that require quoting
  260    260   
    /// Test ID: RestJsonInputAndOutputWithQuotedStringHeaders
  261    261   
    #[::tokio::test]
  262    262   
    #[::tracing_test::traced_test]
  263    263   
    async fn rest_json_input_and_output_with_quoted_string_headers_request() {
  264         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         264  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  265    265   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  266    266   
  267    267   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  268    268   
        let result = client
  269    269   
            .input_and_output_with_headers()
  270    270   
            .set_header_string_list(::std::option::Option::Some(vec!["b,c".to_owned(), "\"def\"".to_owned(), "a".to_owned()]))
  271    271   
            .send()
  272    272   
            .await;
  273    273   
        let _ = dbg!(result);
  274    274   
        let http_request = request_receiver.expect_request();
  275    275   
        let expected_headers = [("X-StringList", "\"b,c\", \"\\\"def\\\"\", a")];
  276    276   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  277    277   
        let body = http_request.body().bytes().expect("body should be strict");
  278    278   
        // No body.
  279    279   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  280    280   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  281    281   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  282    282   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  283    283   
    }
  284    284   
  285    285   
    /// Tests requests with numeric header bindings
  286    286   
    /// Test ID: RestJsonInputAndOutputWithNumericHeaders
  287    287   
    #[::tokio::test]
  288    288   
    #[::tracing_test::traced_test]
  289    289   
    async fn rest_json_input_and_output_with_numeric_headers_request() {
  290         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         290  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  291    291   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  292    292   
  293    293   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  294    294   
        let result = client
  295    295   
            .input_and_output_with_headers()
  296    296   
            .set_header_byte(::std::option::Option::Some(1))
  297    297   
            .set_header_short(::std::option::Option::Some(123))
  298    298   
            .set_header_integer(::std::option::Option::Some(123))
  299    299   
            .set_header_long(::std::option::Option::Some(123))
  300    300   
            .set_header_float(::std::option::Option::Some(1.1_f32))
  301    301   
            .set_header_double(::std::option::Option::Some(1.1_f64))
  302    302   
            .set_header_integer_list(::std::option::Option::Some(vec![1, 2, 3]))
  303    303   
            .send()
  304    304   
            .await;
  305    305   
        let _ = dbg!(result);
  306    306   
        let http_request = request_receiver.expect_request();
  307    307   
        let expected_headers = [
  308    308   
            ("X-Byte", "1"),
  309    309   
            ("X-Double", "1.1"),
  310    310   
            ("X-Float", "1.1"),
  311    311   
            ("X-Integer", "123"),
  312    312   
            ("X-IntegerList", "1, 2, 3"),
  313    313   
            ("X-Long", "123"),
  314    314   
            ("X-Short", "123"),
  315    315   
        ];
  316    316   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  317    317   
        let body = http_request.body().bytes().expect("body should be strict");
  318    318   
        // No body.
  319    319   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  320    320   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  321    321   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  322    322   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  323    323   
    }
  324    324   
  325    325   
    /// Tests requests with boolean header bindings
  326    326   
    /// Test ID: RestJsonInputAndOutputWithBooleanHeaders
  327    327   
    #[::tokio::test]
  328    328   
    #[::tracing_test::traced_test]
  329    329   
    async fn rest_json_input_and_output_with_boolean_headers_request() {
  330         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         330  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  331    331   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  332    332   
  333    333   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  334    334   
        let result = client
  335    335   
            .input_and_output_with_headers()
  336    336   
            .set_header_true_bool(::std::option::Option::Some(true))
  337    337   
            .set_header_false_bool(::std::option::Option::Some(false))
  338    338   
            .set_header_boolean_list(::std::option::Option::Some(vec![true, false, true]))
  339    339   
            .send()
  340    340   
            .await;
  341    341   
        let _ = dbg!(result);
  342    342   
        let http_request = request_receiver.expect_request();
  343    343   
        let expected_headers = [("X-Boolean1", "true"), ("X-Boolean2", "false"), ("X-BooleanList", "true, false, true")];
  344    344   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  345    345   
        let body = http_request.body().bytes().expect("body should be strict");
  346    346   
        // No body.
  347    347   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  348    348   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  349    349   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  350    350   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  351    351   
    }
  352    352   
  353    353   
    /// Tests requests with timestamp header bindings
  354    354   
    /// Test ID: RestJsonInputAndOutputWithTimestampHeaders
  355    355   
    #[::tokio::test]
  356    356   
    #[::tracing_test::traced_test]
  357    357   
    async fn rest_json_input_and_output_with_timestamp_headers_request() {
  358         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         358  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  359    359   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  360    360   
  361    361   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  362    362   
        let result = client
  363    363   
            .input_and_output_with_headers()
  364    364   
            .set_header_timestamp_list(::std::option::Option::Some(vec![
  365    365   
                ::aws_smithy_types::DateTime::from_fractional_secs(1576540098, 0_f64),
  366    366   
                ::aws_smithy_types::DateTime::from_fractional_secs(1576540098, 0_f64),
  367    367   
            ]))
  368    368   
            .send()
  369    369   
            .await;
  370    370   
        let _ = dbg!(result);
  371    371   
        let http_request = request_receiver.expect_request();
  372    372   
        let expected_headers = [("X-TimestampList", "Mon, 16 Dec 2019 23:48:18 GMT, Mon, 16 Dec 2019 23:48:18 GMT")];
  373    373   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  374    374   
        let body = http_request.body().bytes().expect("body should be strict");
  375    375   
        // No body.
  376    376   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  377    377   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  378    378   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  379    379   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  380    380   
    }
  381    381   
  382    382   
    /// Tests requests with enum header bindings
  383    383   
    /// Test ID: RestJsonInputAndOutputWithEnumHeaders
  384    384   
    #[::tokio::test]
  385    385   
    #[::tracing_test::traced_test]
  386    386   
    async fn rest_json_input_and_output_with_enum_headers_request() {
  387         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         387  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  388    388   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  389    389   
  390    390   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  391    391   
        let result = client
  392    392   
            .input_and_output_with_headers()
  393    393   
            .set_header_enum(::std::option::Option::Some(
  394    394   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  395    395   
            ))
  396    396   
            .set_header_enum_list(::std::option::Option::Some(vec![
  397    397   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  398    398   
                "Bar".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  399    399   
                "Baz".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  400    400   
            ]))
  401    401   
            .send()
  402    402   
            .await;
  403    403   
        let _ = dbg!(result);
  404    404   
        let http_request = request_receiver.expect_request();
  405    405   
        let expected_headers = [("X-Enum", "Foo"), ("X-EnumList", "Foo, Bar, Baz")];
  406    406   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  407    407   
        let body = http_request.body().bytes().expect("body should be strict");
  408    408   
        // No body.
  409    409   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  410    410   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  411    411   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  412    412   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  413    413   
    }
  414    414   
  415    415   
    /// Tests requests with intEnum header bindings
  416    416   
    /// Test ID: RestJsonInputAndOutputWithIntEnumHeaders
  417    417   
    #[::tokio::test]
  418    418   
    #[::tracing_test::traced_test]
  419    419   
    async fn rest_json_input_and_output_with_int_enum_headers_request() {
  420         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         420  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  421    421   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  422    422   
  423    423   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  424    424   
        let result = client
  425    425   
            .input_and_output_with_headers()
  426    426   
            .set_header_integer_enum(::std::option::Option::Some(1))
  427    427   
            .set_header_integer_enum_list(::std::option::Option::Some(vec![1, 2, 3]))
  428    428   
            .send()
  429    429   
            .await;
  430    430   
        let _ = dbg!(result);
  431    431   
        let http_request = request_receiver.expect_request();
  432    432   
        let expected_headers = [("X-IntegerEnum", "1"), ("X-IntegerEnumList", "1, 2, 3")];
  433    433   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  434    434   
        let body = http_request.body().bytes().expect("body should be strict");
  435    435   
        // No body.
  436    436   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  437    437   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  438    438   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  439    439   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  440    440   
    }
  441    441   
  442    442   
    /// Supports handling NaN float header values.
  443    443   
    /// Test ID: RestJsonSupportsNaNFloatHeaderInputs
  444    444   
    #[::tokio::test]
  445    445   
    #[::tracing_test::traced_test]
  446    446   
    async fn rest_json_supports_na_n_float_header_inputs_request() {
  447         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         447  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  448    448   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  449    449   
  450    450   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  451    451   
        let result = client
  452    452   
            .input_and_output_with_headers()
  453    453   
            .set_header_float(::std::option::Option::Some(
  454    454   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  455    455   
            ))
  456    456   
            .set_header_double(::std::option::Option::Some(
  457    457   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  458    458   
            ))
  459    459   
            .send()
  460    460   
            .await;
  461    461   
        let _ = dbg!(result);
  462    462   
        let http_request = request_receiver.expect_request();
  463    463   
        let expected_headers = [("X-Double", "NaN"), ("X-Float", "NaN")];
  464    464   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  465    465   
        let body = http_request.body().bytes().expect("body should be strict");
  466    466   
        // No body.
  467    467   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  468    468   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  469    469   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  470    470   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  471    471   
    }
  472    472   
  473    473   
    /// Supports handling Infinity float header values.
  474    474   
    /// Test ID: RestJsonSupportsInfinityFloatHeaderInputs
  475    475   
    #[::tokio::test]
  476    476   
    #[::tracing_test::traced_test]
  477    477   
    async fn rest_json_supports_infinity_float_header_inputs_request() {
  478         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         478  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  479    479   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  480    480   
  481    481   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  482    482   
        let result = client
  483    483   
            .input_and_output_with_headers()
  484    484   
            .set_header_float(::std::option::Option::Some(
  485    485   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  486    486   
            ))
  487    487   
            .set_header_double(::std::option::Option::Some(
  488    488   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  489    489   
            ))
  490    490   
            .send()
  491    491   
            .await;
  492    492   
        let _ = dbg!(result);
  493    493   
        let http_request = request_receiver.expect_request();
  494    494   
        let expected_headers = [("X-Double", "Infinity"), ("X-Float", "Infinity")];
  495    495   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  496    496   
        let body = http_request.body().bytes().expect("body should be strict");
  497    497   
        // No body.
  498    498   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  499    499   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  500    500   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  501    501   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  502    502   
    }
  503    503   
  504    504   
    /// Supports handling -Infinity float header values.
  505    505   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatHeaderInputs
  506    506   
    #[::tokio::test]
  507    507   
    #[::tracing_test::traced_test]
  508    508   
    async fn rest_json_supports_negative_infinity_float_header_inputs_request() {
  509         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         509  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  510    510   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  511    511   
  512    512   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  513    513   
        let result = client
  514    514   
            .input_and_output_with_headers()
  515    515   
            .set_header_float(::std::option::Option::Some(
  516    516   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  517    517   
            ))
  518    518   
            .set_header_double(::std::option::Option::Some(
  519    519   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/json_blobs.rs

@@ -199,199 +259,259 @@
  219    219   
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222    222   
mod json_blobs_test {
  223    223   
  224    224   
    /// Blobs are base64 encoded
  225    225   
    /// Test ID: RestJsonJsonBlobs
  226    226   
    #[::tokio::test]
  227    227   
    #[::tracing_test::traced_test]
  228    228   
    async fn rest_json_json_blobs_request() {
  229         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         229  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  230    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  231    231   
  232    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  233    233   
        let result = client
  234    234   
            .json_blobs()
  235    235   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("value")))
  236    236   
            .send()
  237    237   
            .await;
  238    238   
        let _ = dbg!(result);
  239    239   
        let http_request = request_receiver.expect_request();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/json_enums.rs

@@ -199,199 +259,259 @@
  219    219   
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222    222   
mod json_enums_test {
  223    223   
  224    224   
    /// Serializes simple scalar properties
  225    225   
    /// Test ID: RestJsonJsonEnums
  226    226   
    #[::tokio::test]
  227    227   
    #[::tracing_test::traced_test]
  228    228   
    async fn rest_json_json_enums_request() {
  229         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         229  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  230    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  231    231   
  232    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  233    233   
        let result = client
  234    234   
            .json_enums()
  235    235   
            .set_foo_enum1(::std::option::Option::Some(
  236    236   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  237    237   
            ))
  238    238   
            .set_foo_enum2(::std::option::Option::Some(
  239    239   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/json_int_enums.rs

@@ -202,202 +262,262 @@
  222    222   
  223    223   
#[allow(unreachable_code, unused_variables)]
  224    224   
#[cfg(test)]
  225    225   
mod json_int_enums_test {
  226    226   
  227    227   
    /// Serializes intEnums as integers
  228    228   
    /// Test ID: RestJsonJsonIntEnums
  229    229   
    #[::tokio::test]
  230    230   
    #[::tracing_test::traced_test]
  231    231   
    async fn rest_json_json_int_enums_request() {
  232         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         232  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  233    233   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  234    234   
  235    235   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  236    236   
        let result = client
  237    237   
            .json_int_enums()
  238    238   
            .set_integer_enum1(::std::option::Option::Some(1))
  239    239   
            .set_integer_enum2(::std::option::Option::Some(2))
  240    240   
            .set_integer_enum3(::std::option::Option::Some(3))
  241    241   
            .set_integer_enum_list(::std::option::Option::Some(vec![1, 2, 3]))
  242    242   
            .set_integer_enum_set(::std::option::Option::Some(vec![1, 2]))

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/json_lists.rs

@@ -199,199 +312,312 @@
  219    219   
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222    222   
mod json_lists_test {
  223    223   
  224    224   
    /// Serializes JSON lists
  225    225   
    /// Test ID: RestJsonLists
  226    226   
    #[::tokio::test]
  227    227   
    #[::tracing_test::traced_test]
  228    228   
    async fn rest_json_lists_request() {
  229         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         229  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  230    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  231    231   
  232    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  233    233   
        let result = client
  234    234   
            .json_lists()
  235    235   
            .set_string_list(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  236    236   
            .set_string_set(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  237    237   
            .set_integer_list(::std::option::Option::Some(vec![1, 2]))
  238    238   
            .set_boolean_list(::std::option::Option::Some(vec![true, false]))
  239    239   
            .set_timestamp_list(::std::option::Option::Some(vec![
  240    240   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  241    241   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  242    242   
            ]))
  243    243   
            .set_enum_list(::std::option::Option::Some(vec![
  244    244   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  245    245   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  246    246   
            ]))
  247    247   
            .set_int_enum_list(::std::option::Option::Some(vec![1, 2]))
  248    248   
            .set_nested_string_list(::std::option::Option::Some(vec![
  249    249   
                vec!["foo".to_owned(), "bar".to_owned()],
  250    250   
                vec!["baz".to_owned(), "qux".to_owned()],
  251    251   
            ]))
  252    252   
            .set_structure_list(::std::option::Option::Some(vec![
  253    253   
                crate::types::StructureListMember::builder()
  254    254   
                    .set_a(::std::option::Option::Some("1".to_owned()))
  255    255   
                    .set_b(::std::option::Option::Some("2".to_owned()))
  256    256   
                    .build(),
  257    257   
                crate::types::StructureListMember::builder()
  258    258   
                    .set_a(::std::option::Option::Some("3".to_owned()))
  259    259   
                    .set_b(::std::option::Option::Some("4".to_owned()))
  260    260   
                    .build(),
  261    261   
            ]))
  262    262   
            .send()
  263    263   
            .await;
  264    264   
        let _ = dbg!(result);
  265    265   
        let http_request = request_receiver.expect_request();
  266    266   
        let expected_headers = [("Content-Type", "application/json")];
  267    267   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  268    268   
        let body = http_request.body().bytes().expect("body should be strict");
  269    269   
        ::aws_smithy_protocol_test::assert_ok(
  270    270   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"stringList\": [\n        \"foo\",\n        \"bar\"\n    ],\n    \"stringSet\": [\n        \"foo\",\n        \"bar\"\n    ],\n    \"integerList\": [\n        1,\n        2\n    ],\n    \"booleanList\": [\n        true,\n        false\n    ],\n    \"timestampList\": [\n        1398796238,\n        1398796238\n    ],\n    \"enumList\": [\n        \"Foo\",\n        \"0\"\n    ],\n    \"intEnumList\": [\n        1,\n        2\n    ],\n    \"nestedStringList\": [\n        [\n            \"foo\",\n            \"bar\"\n        ],\n        [\n            \"baz\",\n            \"qux\"\n        ]\n    ],\n    \"myStructureList\": [\n        {\n            \"value\": \"1\",\n            \"other\": \"2\"\n        },\n        {\n            \"value\": \"3\",\n            \"other\": \"4\"\n        }\n    ]\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  271    271   
        );
  272    272   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  273    273   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  274    274   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonLists", "path was incorrect");
  275    275   
    }
  276    276   
  277    277   
    /// Serializes empty JSON lists
  278    278   
    /// Test ID: RestJsonListsEmpty
  279    279   
    #[::tokio::test]
  280    280   
    #[::tracing_test::traced_test]
  281    281   
    async fn rest_json_lists_empty_request() {
  282         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         282  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  283    283   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  284    284   
  285    285   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  286    286   
        let result = client.json_lists().set_string_list(::std::option::Option::Some(vec![])).send().await;
  287    287   
        let _ = dbg!(result);
  288    288   
        let http_request = request_receiver.expect_request();
  289    289   
        let expected_headers = [("Content-Type", "application/json")];
  290    290   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  291    291   
        let body = http_request.body().bytes().expect("body should be strict");
  292    292   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(