Client Test

Client Test

rev. c4f9295a7b4566dca79c361e3a2aa9e63cdf82e7 (ignoring whitespace)

Files changed:

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

@@ -206,206 +266,266 @@
  226    226   
#[cfg(test)]
  227    227   
mod unit_input_and_output_test {
  228    228   
  229    229   
    /// A unit type input serializes no payload. When clients do not
  230    230   
    /// need to serialize any data in the payload, they should omit
  231    231   
    /// a payload altogether.
  232    232   
    /// Test ID: RestJsonUnitInputAndOutput
  233    233   
    #[::tokio::test]
  234    234   
    #[::tracing_test::traced_test]
  235    235   
    async fn rest_json_unit_input_and_output_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.unit_input_and_output().send().await;
  241    241   
        let _ = dbg!(result);
  242    242   
        let http_request = request_receiver.expect_request();
  243    243   
        let body = http_request.body().bytes().expect("body should be strict");
  244    244   
        // No body.
  245    245   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  246    246   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/Cargo.toml

@@ -1,1 +52,53 @@
   19     19   
features = ["client"]
   20     20   
[dependencies.aws-smithy-runtime-api]
   21     21   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-runtime-api"
   22     22   
features = ["client", "http-02x"]
   23     23   
[dependencies.aws-smithy-types]
   24     24   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-types"
   25     25   
[dependencies.bytes]
   26     26   
version = "1.4.0"
   27     27   
[dependencies.http]
   28     28   
version = "0.2.9"
          29  +
[dev-dependencies.aws-smithy-http-client]
          30  +
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-http-client"
          31  +
features = ["test-util"]
   29     32   
[dev-dependencies.aws-smithy-protocol-test]
   30     33   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-protocol-test"
   31         -
[dev-dependencies.aws-smithy-runtime]
   32         -
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-runtime"
   33         -
features = ["client", "test-util"]
   34     34   
[dev-dependencies.pretty_assertions]
   35     35   
version = "1.3.0"
   36     36   
[dev-dependencies.tokio]
   37     37   
version = "1.23.1"
   38     38   
features = ["macros", "test-util", "rt-multi-thread"]
   39     39   
[dev-dependencies.tracing]
   40     40   
version = "0.1"
   41     41   
[dev-dependencies.tracing-test]
   42     42   
version = "0.2.5"
   43     43   
features = ["no-env-filter"]
   44     44   
[features]
   45     45   
test-util = ["aws-smithy-runtime/test-util"]
   46     46   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
   47     47   
behavior-version-latest = []
   48     48   
rustls = ["aws-smithy-runtime/tls-rustls"]
          49  +
default-https-client = ["aws-smithy-runtime/default-https-client"]
   49     50   
gated-tests = []
   50         -
default = ["rt-tokio", "rustls"]
          51  +
default = ["rt-tokio", "rustls", "default-https-client"]
   51     52   
   52     53   

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/enum_query.rs

@@ -205,205 +265,265 @@
  225    225   
// operationContextParams trait. They target the operation's input shape.
  226    226   
  227    227   
#[allow(unreachable_code, unused_variables)]
  228    228   
#[cfg(test)]
  229    229   
mod enum_query_test {
  230    230   
  231    231   
    /// Test ID: EnumQueryRequest
  232    232   
    #[::tokio::test]
  233    233   
    #[::tracing_test::traced_test]
  234    234   
    async fn enum_query_request_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   
            .enum_query()
  241    241   
            .set_enum(::std::option::Option::Some(
  242    242   
                "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  243    243   
            ))
  244    244   
            .send()
  245    245   
            .await;

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/escaped_string_values.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 escaped_string_values_test {
  234    234   
  235    235   
    /// Test ID: EscapedStringValuesRequest
  236    236   
    #[::tokio::test]
  237    237   
    #[::tracing_test::traced_test]
  238    238   
    async fn escaped_string_values_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   
            .escaped_string_values()
  245    245   
            .set_enum(::std::option::Option::Some(
  246    246   
                "has\"quotes"
  247    247   
                    .parse::<crate::types::EnumWithEscapedChars>()
  248    248   
                    .expect("static value validated to member"),
  249    249   
            ))

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/map_with_enum_key_op.rs

@@ -202,202 +262,262 @@
  222    222   
// operationContextParams trait. They target the operation's input shape.
  223    223   
  224    224   
#[allow(unreachable_code, unused_variables)]
  225    225   
#[cfg(test)]
  226    226   
mod map_with_enum_key_op_test {
  227    227   
  228    228   
    /// Test ID: MapWithEnumKeyRequest
  229    229   
    #[::tokio::test]
  230    230   
    #[::tracing_test::traced_test]
  231    231   
    async fn map_with_enum_key_request_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   
            .map_with_enum_key_op()
  238    238   
            .set_map(::std::option::Option::Some({
  239    239   
                let mut ret = ::std::collections::HashMap::new();
  240    240   
                ret.insert(
  241    241   
                    "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  242    242   
                    "something".to_owned(),

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/primitive_int_op.rs

@@ -202,202 +262,262 @@
  222    222   
  223    223   
#[allow(unreachable_code, unused_variables)]
  224    224   
#[cfg(test)]
  225    225   
mod primitive_int_op_test {
  226    226   
  227    227   
    /// Primitive ints should not be serialized when they are unset
  228    228   
    /// Test ID: SerPrimitiveInt
  229    229   
    #[::tokio::test]
  230    230   
    #[::tracing_test::traced_test]
  231    231   
    async fn ser_primitive_int_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.primitive_int_op().send().await;
  237    237   
        let _ = dbg!(result);
  238    238   
        let http_request = request_receiver.expect_request();
  239    239   
        let expected_headers = [("Content-Type", "application/json")];
  240    240   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  241    241   
        let body = http_request.body().bytes().expect("body should be strict");
  242    242   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/query_precedence.rs

@@ -221,221 +351,351 @@
  241    241   
  242    242   
#[allow(unreachable_code, unused_variables)]
  243    243   
#[cfg(test)]
  244    244   
mod query_precedence_test {
  245    245   
  246    246   
    /// Keys and values must be url encoded
  247    247   
    /// Test ID: UrlParamsKeyEncoding
  248    248   
    #[::tokio::test]
  249    249   
    #[::tracing_test::traced_test]
  250    250   
    async fn url_params_key_encoding_request() {
  251         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         251  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  252    252   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  253    253   
  254    254   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  255    255   
        let result = client
  256    256   
            .query_precedence()
  257    257   
            .set_foo(::std::option::Option::Some("&🐱".to_owned()))
  258    258   
            .set_baz(::std::option::Option::Some({
  259    259   
                let mut ret = ::std::collections::HashMap::new();
  260    260   
                ret.insert("hello there".to_owned(), "how's your encoding?".to_owned());
  261    261   
                ret.insert("a & b & c".to_owned(), "better encode = this".to_owned());
  262    262   
                ret
  263    263   
            }))
  264    264   
            .send()
  265    265   
            .await;
  266    266   
        let _ = dbg!(result);
  267    267   
        let http_request = request_receiver.expect_request();
  268    268   
        let expected_query_params = &[
  269    269   
            "bar=%26%F0%9F%90%B1",
  270    270   
            "hello%20there=how%27s%20your%20encoding%3F",
  271    271   
            "a%20%26%20b%20%26%20c=better%20encode%20%3D%20this",
  272    272   
        ];
  273    273   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  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(), "POST", "method was incorrect");
  279    279   
        ::pretty_assertions::assert_eq!(uri.path(), "/Precedence", "path was incorrect");
  280    280   
    }
  281    281   
  282    282   
    /// Prefer named query parameters when serializing
  283    283   
    /// Test ID: RestJsonQueryPrecedenceForbid
  284    284   
    #[::tokio::test]
  285    285   
    #[::tracing_test::traced_test]
  286    286   
    async fn rest_json_query_precedence_forbid_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   
            .query_precedence()
  293    293   
            .set_foo(::std::option::Option::Some("named".to_owned()))
  294    294   
            .set_baz(::std::option::Option::Some({
  295    295   
                let mut ret = ::std::collections::HashMap::new();
  296    296   
                ret.insert("bar".to_owned(), "fromMap".to_owned());
  297    297   
                ret.insert("qux".to_owned(), "alsoFromMap".to_owned());
  298    298   
                ret
  299    299   
            }))
  300    300   
            .send()
  301    301   
            .await;
  302    302   
        let _ = dbg!(result);
  303    303   
        let http_request = request_receiver.expect_request();
  304    304   
        let expected_query_params = &["bar=named", "qux=alsoFromMap"];
  305    305   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  306    306   
        let forbid_params = &["bar=fromMap"];
  307    307   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::forbid_query_params(&http_request, forbid_params));
  308    308   
        let body = http_request.body().bytes().expect("body should be strict");
  309    309   
        // No body.
  310    310   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  311    311   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  312    312   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  313    313   
        ::pretty_assertions::assert_eq!(uri.path(), "/Precedence", "path was incorrect");
  314    314   
    }
  315    315   
  316    316   
    /// Prefer named query parameters when serializing
  317    317   
    /// Test ID: RestJsonQueryPrecedence
  318    318   
    #[::tokio::test]
  319    319   
    #[::tracing_test::traced_test]
  320    320   
    async fn rest_json_query_precedence_request() {
  321         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         321  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  322    322   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  323    323   
  324    324   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  325    325   
        let result = client
  326    326   
            .query_precedence()
  327    327   
            .set_foo(::std::option::Option::Some("named".to_owned()))
  328    328   
            .set_baz(::std::option::Option::Some({
  329    329   
                let mut ret = ::std::collections::HashMap::new();
  330    330   
                ret.insert("bar".to_owned(), "fromMap".to_owned());
  331    331   
                ret.insert("qux".to_owned(), "alsoFromMap".to_owned());

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/string_payload.rs

@@ -203,203 +263,263 @@
  223    223   
// operationContextParams trait. They target the operation's input shape.
  224    224   
  225    225   
#[allow(unreachable_code, unused_variables)]
  226    226   
#[cfg(test)]
  227    227   
mod string_payload_test {
  228    228   
  229    229   
    /// Test ID: StringPayload
  230    230   
    #[::tokio::test]
  231    231   
    #[::tracing_test::traced_test]
  232    232   
    async fn string_payload_request() {
  233         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         233  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  234    234   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  235    235   
  236    236   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  237    237   
        let result = client
  238    238   
            .string_payload()
  239    239   
            .set_payload(::std::option::Option::Some("rawstring".to_owned()))
  240    240   
            .send()
  241    241   
            .await;
  242    242   
        let _ = dbg!(result);
  243    243   
        let http_request = request_receiver.expect_request();

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/Cargo.toml

@@ -9,9 +64,65 @@
   29     29   
[dependencies.fastrand]
   30     30   
version = "2.0.0"
   31     31   
[dependencies.flate2]
   32     32   
version = "1.0.30"
   33     33   
[dependencies.http]
   34     34   
version = "0.2.9"
   35     35   
[dependencies.http-body]
   36     36   
version = "0.4.4"
   37     37   
[dependencies.tracing]
   38     38   
version = "0.1"
          39  +
[dev-dependencies.aws-smithy-http-client]
          40  +
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-http-client"
          41  +
features = ["test-util"]
   39     42   
[dev-dependencies.aws-smithy-protocol-test]
   40     43   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-protocol-test"
   41         -
[dev-dependencies.aws-smithy-runtime]
   42         -
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-runtime"
   43         -
features = ["client", "test-util"]
   44     44   
[dev-dependencies.aws-smithy-types]
   45     45   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-types"
   46     46   
[dev-dependencies.bytes]
   47     47   
version = "1.4.0"
   48     48   
[dev-dependencies.pretty_assertions]
   49     49   
version = "1.3.0"
   50     50   
[dev-dependencies.tokio]
   51     51   
version = "1.23.1"
   52     52   
features = ["macros", "test-util", "rt-multi-thread"]
   53     53   
[dev-dependencies.tracing-test]
   54     54   
version = "0.2.5"
   55     55   
features = ["no-env-filter"]
   56     56   
[features]
   57     57   
test-util = ["aws-smithy-runtime/test-util"]
   58     58   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
   59     59   
behavior-version-latest = []
   60     60   
rustls = ["aws-smithy-runtime/tls-rustls"]
          61  +
default-https-client = ["aws-smithy-runtime/default-https-client"]
   61     62   
gated-tests = []
   62         -
default = ["rt-tokio", "rustls"]
          63  +
default = ["rt-tokio", "rustls", "default-https-client"]
   63     64   
   64     65   

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/all_query_string_types.rs

@@ -367,367 +427,427 @@
  387    387   
  388    388   
#[allow(unreachable_code, unused_variables)]
  389    389   
#[cfg(test)]
  390    390   
mod all_query_string_types_test {
  391    391   
  392    392   
    /// Serializes query string parameters with all supported types
  393    393   
    /// Test ID: AllQueryStringTypes
  394    394   
    #[::tokio::test]
  395    395   
    #[::tracing_test::traced_test]
  396    396   
    async fn all_query_string_types_request() {
  397         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         397  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  398    398   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  399    399   
  400    400   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  401    401   
        let result = client
  402    402   
            .all_query_string_types()
  403    403   
            .set_query_string(::std::option::Option::Some("Hello there".to_owned()))
  404    404   
            .set_query_string_list(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  405    405   
            .set_query_string_set(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  406    406   
            .set_query_byte(::std::option::Option::Some(1))
  407    407   
            .set_query_short(::std::option::Option::Some(2))
@@ -460,460 +670,670 @@
  480    480   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  481    481   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  482    482   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  483    483   
    }
  484    484   
  485    485   
    /// Handles query string maps
  486    486   
    /// Test ID: RestXmlQueryStringMap
  487    487   
    #[::tokio::test]
  488    488   
    #[::tracing_test::traced_test]
  489    489   
    async fn rest_xml_query_string_map_request() {
  490         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         490  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  491    491   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  492    492   
  493    493   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  494    494   
        let result = client
  495    495   
            .all_query_string_types()
  496    496   
            .set_query_params_map_of_strings(::std::option::Option::Some({
  497    497   
                let mut ret = ::std::collections::HashMap::new();
  498    498   
                ret.insert("QueryParamsStringKeyA".to_owned(), "Foo".to_owned());
  499    499   
                ret.insert("QueryParamsStringKeyB".to_owned(), "Bar".to_owned());
  500    500   
                ret
  501    501   
            }))
  502    502   
            .send()
  503    503   
            .await;
  504    504   
        let _ = dbg!(result);
  505    505   
        let http_request = request_receiver.expect_request();
  506    506   
        let expected_query_params = &["QueryParamsStringKeyA=Foo", "QueryParamsStringKeyB=Bar"];
  507    507   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  508    508   
        let body = http_request.body().bytes().expect("body should be strict");
  509    509   
        // No body.
  510    510   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  511    511   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  512    512   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  513    513   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  514    514   
    }
  515    515   
  516    516   
    /// Handles escaping all required characters in the query string.
  517    517   
    /// Test ID: RestXmlQueryStringEscaping
  518    518   
    #[::tokio::test]
  519    519   
    #[::tracing_test::traced_test]
  520    520   
    async fn rest_xml_query_string_escaping_request() {
  521         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         521  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  522    522   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  523    523   
  524    524   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  525    525   
        let result = client
  526    526   
            .all_query_string_types()
  527    527   
            .set_query_string(::std::option::Option::Some(" %:/?#[]@!$&'()*+,;=😹".to_owned()))
  528    528   
            .send()
  529    529   
            .await;
  530    530   
        let _ = dbg!(result);
  531    531   
        let http_request = request_receiver.expect_request();
  532    532   
        let expected_query_params = &["String=%20%25%3A%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D%F0%9F%98%B9"];
  533    533   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  534    534   
        let body = http_request.body().bytes().expect("body should be strict");
  535    535   
        // No body.
  536    536   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  537    537   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  538    538   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  539    539   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  540    540   
    }
  541    541   
  542    542   
    /// Supports handling NaN float query values.
  543    543   
    /// Test ID: RestXmlSupportsNaNFloatQueryValues
  544    544   
    #[::tokio::test]
  545    545   
    #[::tracing_test::traced_test]
  546    546   
    async fn rest_xml_supports_na_n_float_query_values_request() {
  547         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         547  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  548    548   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  549    549   
  550    550   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  551    551   
        let result = client
  552    552   
            .all_query_string_types()
  553    553   
            .set_query_float(::std::option::Option::Some(
  554    554   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  555    555   
            ))
  556    556   
            .set_query_double(::std::option::Option::Some(
  557    557   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  558    558   
            ))
  559    559   
            .send()
  560    560   
            .await;
  561    561   
        let _ = dbg!(result);
  562    562   
        let http_request = request_receiver.expect_request();
  563    563   
        let expected_query_params = &["Float=NaN", "Double=NaN"];
  564    564   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  565    565   
        let body = http_request.body().bytes().expect("body should be strict");
  566    566   
        // No body.
  567    567   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  568    568   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  569    569   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  570    570   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  571    571   
    }
  572    572   
  573    573   
    /// Supports handling Infinity float query values.
  574    574   
    /// Test ID: RestXmlSupportsInfinityFloatQueryValues
  575    575   
    #[::tokio::test]
  576    576   
    #[::tracing_test::traced_test]
  577    577   
    async fn rest_xml_supports_infinity_float_query_values_request() {
  578         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         578  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  579    579   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  580    580   
  581    581   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  582    582   
        let result = client
  583    583   
            .all_query_string_types()
  584    584   
            .set_query_float(::std::option::Option::Some(
  585    585   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  586    586   
            ))
  587    587   
            .set_query_double(::std::option::Option::Some(
  588    588   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  589    589   
            ))
  590    590   
            .send()
  591    591   
            .await;
  592    592   
        let _ = dbg!(result);
  593    593   
        let http_request = request_receiver.expect_request();
  594    594   
        let expected_query_params = &["Float=Infinity", "Double=Infinity"];
  595    595   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  596    596   
        let body = http_request.body().bytes().expect("body should be strict");
  597    597   
        // No body.
  598    598   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  599    599   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  600    600   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  601    601   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  602    602   
    }
  603    603   
  604    604   
    /// Supports handling -Infinity float query values.
  605    605   
    /// Test ID: RestXmlSupportsNegativeInfinityFloatQueryValues
  606    606   
    #[::tokio::test]
  607    607   
    #[::tracing_test::traced_test]
  608    608   
    async fn rest_xml_supports_negative_infinity_float_query_values_request() {
  609         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         609  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  610    610   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  611    611   
  612    612   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  613    613   
        let result = client
  614    614   
            .all_query_string_types()
  615    615   
            .set_query_float(::std::option::Option::Some(
  616    616   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  617    617   
            ))
  618    618   
            .set_query_double(::std::option::Option::Some(
  619    619   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  620    620   
            ))
  621    621   
            .send()
  622    622   
            .await;
  623    623   
        let _ = dbg!(result);
  624    624   
        let http_request = request_receiver.expect_request();
  625    625   
        let expected_query_params = &["Float=-Infinity", "Double=-Infinity"];
  626    626   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  627    627   
        let body = http_request.body().bytes().expect("body should be strict");
  628    628   
        // No body.
  629    629   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  630    630   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  631    631   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  632    632   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  633    633   
    }
  634    634   
  635    635   
    /// Query values of 0 and false are serialized
  636    636   
    /// Test ID: RestXmlZeroAndFalseQueryValues
  637    637   
    #[::tokio::test]
  638    638   
    #[::tracing_test::traced_test]
  639    639   
    async fn rest_xml_zero_and_false_query_values_request() {
  640         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         640  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  641    641   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  642    642   
  643    643   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  644    644   
        let result = client
  645    645   
            .all_query_string_types()
  646    646   
            .set_query_integer(::std::option::Option::Some(0))
  647    647   
            .set_query_boolean(::std::option::Option::Some(false))
  648    648   
            .send()
  649    649   
            .await;
  650    650   
        let _ = dbg!(result);

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/body_with_xml_name.rs

@@ -202,202 +262,262 @@
  222    222   
  223    223   
#[allow(unreachable_code, unused_variables)]
  224    224   
#[cfg(test)]
  225    225   
mod body_with_xml_name_test {
  226    226   
  227    227   
    /// Serializes a payload using a wrapper name based on the xmlName
  228    228   
    /// Test ID: BodyWithXmlName
  229    229   
    #[::tokio::test]
  230    230   
    #[::tracing_test::traced_test]
  231    231   
    async fn body_with_xml_name_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   
            .body_with_xml_name()
  238    238   
            .set_nested(::std::option::Option::Some(
  239    239   
                crate::types::PayloadWithXmlName::builder()
  240    240   
                    .set_name(::std::option::Option::Some("Phreddy".to_owned()))
  241    241   
                    .build(),
  242    242   
            ))

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/constant_and_variable_query_string.rs

@@ -225,225 +313,313 @@
  245    245   
  246    246   
#[allow(unreachable_code, unused_variables)]
  247    247   
#[cfg(test)]
  248    248   
mod constant_and_variable_query_string_test {
  249    249   
  250    250   
    /// Mixes constant and variable query string parameters
  251    251   
    /// Test ID: ConstantAndVariableQueryStringMissingOneValue
  252    252   
    #[::tokio::test]
  253    253   
    #[::tracing_test::traced_test]
  254    254   
    async fn constant_and_variable_query_string_missing_one_value_request() {
  255         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         255  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  256    256   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  257    257   
  258    258   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  259    259   
        let result = client
  260    260   
            .constant_and_variable_query_string()
  261    261   
            .set_baz(::std::option::Option::Some("bam".to_owned()))
  262    262   
            .send()
  263    263   
            .await;
  264    264   
        let _ = dbg!(result);
  265    265   
        let http_request = request_receiver.expect_request();
  266    266   
        let expected_query_params = &["foo=bar", "baz=bam"];
  267    267   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  268    268   
        let forbid_params = &["maybeSet"];
  269    269   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::forbid_query_params(&http_request, forbid_params));
  270    270   
        let body = http_request.body().bytes().expect("body should be strict");
  271    271   
        // No body.
  272    272   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  273    273   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  274    274   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  275    275   
        ::pretty_assertions::assert_eq!(uri.path(), "/ConstantAndVariableQueryString", "path was incorrect");
  276    276   
    }
  277    277   
  278    278   
    /// Mixes constant and variable query string parameters
  279    279   
    /// Test ID: ConstantAndVariableQueryStringAllValues
  280    280   
    #[::tokio::test]
  281    281   
    #[::tracing_test::traced_test]
  282    282   
    async fn constant_and_variable_query_string_all_values_request() {
  283         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         283  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  284    284   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  285    285   
  286    286   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  287    287   
        let result = client
  288    288   
            .constant_and_variable_query_string()
  289    289   
            .set_baz(::std::option::Option::Some("bam".to_owned()))
  290    290   
            .set_maybe_set(::std::option::Option::Some("yes".to_owned()))
  291    291   
            .send()
  292    292   
            .await;
  293    293   
        let _ = dbg!(result);

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/constant_query_string.rs

@@ -225,225 +285,285 @@
  245    245   
  246    246   
#[allow(unreachable_code, unused_variables)]
  247    247   
#[cfg(test)]
  248    248   
mod constant_query_string_test {
  249    249   
  250    250   
    /// Includes constant query string parameters
  251    251   
    /// Test ID: ConstantQueryString
  252    252   
    #[::tokio::test]
  253    253   
    #[::tracing_test::traced_test]
  254    254   
    async fn constant_query_string_request() {
  255         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         255  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  256    256   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  257    257   
  258    258   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  259    259   
        let result = client
  260    260   
            .constant_query_string()
  261    261   
            .set_hello(::std::option::Option::Some("hi".to_owned()))
  262    262   
            .send()
  263    263   
            .await;
  264    264   
        let _ = dbg!(result);
  265    265   
        let http_request = request_receiver.expect_request();

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/empty_input_and_empty_output.rs

@@ -204,204 +264,264 @@
  224    224   
  225    225   
#[allow(unreachable_code, unused_variables)]
  226    226   
#[cfg(test)]
  227    227   
mod empty_input_and_empty_output_test {
  228    228   
  229    229   
    /// Empty input serializes no payload
  230    230   
    /// Test ID: EmptyInputAndEmptyOutput
  231    231   
    #[::tokio::test]
  232    232   
    #[::tracing_test::traced_test]
  233    233   
    async fn empty_input_and_empty_output_request() {
  234         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         234  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  235    235   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  236    236   
  237    237   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  238    238   
        let result = client.empty_input_and_empty_output().send().await;
  239    239   
        let _ = dbg!(result);
  240    240   
        let http_request = request_receiver.expect_request();
  241    241   
        let body = http_request.body().bytes().expect("body should be strict");
  242    242   
        // No body.
  243    243   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  244    244   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/endpoint_operation.rs

@@ -204,204 +264,264 @@
  224    224   
#[allow(unreachable_code, unused_variables)]
  225    225   
#[cfg(test)]
  226    226   
mod endpoint_operation_test {
  227    227   
  228    228   
    /// Operations can prepend to the given host if they define the
  229    229   
    /// endpoint trait.
  230    230   
    /// Test ID: RestXmlEndpointTrait
  231    231   
    #[::tokio::test]
  232    232   
    #[::tracing_test::traced_test]
  233    233   
    async fn rest_xml_endpoint_trait_request() {
  234         -
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
         234  +
        let (http_client, request_receiver) = ::aws_smithy_http_client::test_util::capture_request(None);
  235    235   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  236    236   
  237    237   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  238    238   
        let result = client.endpoint_operation().send().await;
  239    239   
        let _ = dbg!(result);
  240    240   
        let http_request = request_receiver.expect_request();
  241    241   
        let body = http_request.body().bytes().expect("body should be strict");
  242    242   
        // No body.
  243    243   
        ::pretty_assertions::assert_eq!(&body, &bytes::Bytes::new());
  244    244   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");

tmp-codegen-diff/codegen-client-test/rest_xml/rust-client-codegen/src/operation/endpoint_with_host_label_header_operation.rs

@@ -231,231 +291,291 @@
  251    251   
  252    252   
    /// Operations can prepend to the given host if they define the
  253    253   
    /// endpoint trait, and can use the host label trait to define
  254    254   
    /// further customization based on user input. The label must also
  255    255   
    /// be serialized in into any other location it is bound to, such
  256    256   
    /// as the body or in this case an http header.
  257    257   
    /// Test ID: RestXmlEndpointTraitWithHostLabelAndHttpBinding
  258    258   
    #[::tokio::test]
  259    259   
    #[::tracing_test::traced_test]
  260    260   
    async fn rest_xml_endpoint_trait_with_host_label_and_http_binding_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   
            .endpoint_with_host_label_header_operation()
  267    267   
            .set_account_id(::std::option::Option::Some("bar".to_owned()))
  268    268   
            .send()
  269    269   
            .await;
  270    270   
        let _ = dbg!(result);
  271    271   
        let http_request = request_receiver.expect_request();