aws_sdk_s3/config/
endpoint.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use ::aws_smithy_runtime_api::client::endpoint::EndpointFuture;
3pub use ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver;
4pub use ::aws_smithy_types::endpoint::Endpoint;
5
6/// Interceptor that tracks endpoint override business metric.
7#[derive(Debug, Default)]
8pub(crate) struct EndpointOverrideFeatureTrackerInterceptor;
9
10impl ::aws_smithy_runtime_api::client::interceptors::Intercept for EndpointOverrideFeatureTrackerInterceptor {
11    fn name(&self) -> &'static str {
12        "EndpointOverrideFeatureTrackerInterceptor"
13    }
14
15    fn read_before_execution(
16        &self,
17        _context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<'_>,
18        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
19    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
20        if cfg.load::<::aws_types::endpoint_config::EndpointUrl>().is_some() {
21            cfg.interceptor_state()
22                .store_append(::aws_runtime::sdk_feature::AwsSdkFeature::EndpointOverride);
23        }
24        ::std::result::Result::Ok(())
25    }
26}
27
28#[cfg(test)]
29mod test {
30
31    /// region is not a valid DNS-suffix
32    #[test]
33    fn test_1() {
34        let params = crate::config::endpoint::Params::builder()
35            .region("a b".to_string())
36            .use_fips(false)
37            .use_dual_stack(false)
38            .accelerate(false)
39            .build()
40            .expect("invalid params");
41        let resolver = crate::config::endpoint::DefaultResolver::new();
42        let endpoint = resolver.resolve_endpoint(&params);
43        let error = endpoint.expect_err("expected error: Invalid region: region was not a valid DNS name. [region is not a valid DNS-suffix]");
44        assert_eq!(format!("{}", error), "Invalid region: region was not a valid DNS name.")
45    }
46
47    /// Invalid access point ARN: Not S3
48    #[test]
49    fn test_2() {
50        let params = crate::config::endpoint::Params::builder()
51            .region("us-east-1".to_string())
52            .use_fips(false)
53            .use_dual_stack(false)
54            .accelerate(false)
55            .bucket("arn:aws:not-s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
56            .build()
57            .expect("invalid params");
58        let resolver = crate::config::endpoint::DefaultResolver::new();
59        let endpoint = resolver.resolve_endpoint(&params);
60        let error =
61            endpoint.expect_err("expected error: Invalid ARN: The ARN was not for the S3 service, found: not-s3 [Invalid access point ARN: Not S3]");
62        assert_eq!(format!("{}", error), "Invalid ARN: The ARN was not for the S3 service, found: not-s3")
63    }
64
65    /// Invalid access point ARN: invalid resource
66    #[test]
67    fn test_3() {
68        let params = crate::config::endpoint::Params::builder()
69            .region("us-east-1".to_string())
70            .use_fips(false)
71            .use_dual_stack(false)
72            .accelerate(false)
73            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint:more-data".to_string())
74            .build()
75            .expect("invalid params");
76        let resolver = crate::config::endpoint::DefaultResolver::new();
77        let endpoint = resolver.resolve_endpoint(&params);
78        let error = endpoint.expect_err("expected error: Invalid ARN: The ARN may only contain a single resource component after `accesspoint`. [Invalid access point ARN: invalid resource]");
79        assert_eq!(
80            format!("{}", error),
81            "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."
82        )
83    }
84
85    /// Invalid access point ARN: invalid no ap name
86    #[test]
87    fn test_4() {
88        let params = crate::config::endpoint::Params::builder()
89            .region("us-east-1".to_string())
90            .use_fips(false)
91            .use_dual_stack(false)
92            .accelerate(false)
93            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:".to_string())
94            .build()
95            .expect("invalid params");
96        let resolver = crate::config::endpoint::DefaultResolver::new();
97        let endpoint = resolver.resolve_endpoint(&params);
98        let error = endpoint.expect_err("expected error: Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided [Invalid access point ARN: invalid no ap name]");
99        assert_eq!(
100            format!("{}", error),
101            "Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided"
102        )
103    }
104
105    /// Invalid access point ARN: AccountId is invalid
106    #[test]
107    fn test_5() {
108        let params = crate::config::endpoint::Params::builder()
109            .region("us-east-1".to_string())
110            .use_fips(false)
111            .use_dual_stack(false)
112            .accelerate(false)
113            .bucket("arn:aws:s3:us-west-2:123456_789012:accesspoint:apname".to_string())
114            .build()
115            .expect("invalid params");
116        let resolver = crate::config::endpoint::DefaultResolver::new();
117        let endpoint = resolver.resolve_endpoint(&params);
118        let error = endpoint.expect_err("expected error: Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `123456_789012` [Invalid access point ARN: AccountId is invalid]");
119        assert_eq!(
120            format!("{}", error),
121            "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `123456_789012`"
122        )
123    }
124
125    /// Invalid access point ARN: access point name is invalid
126    #[test]
127    fn test_6() {
128        let params = crate::config::endpoint::Params::builder()
129            .region("us-east-1".to_string())
130            .use_fips(false)
131            .use_dual_stack(false)
132            .accelerate(false)
133            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:ap_name".to_string())
134            .build()
135            .expect("invalid params");
136        let resolver = crate::config::endpoint::DefaultResolver::new();
137        let endpoint = resolver.resolve_endpoint(&params);
138        let error = endpoint.expect_err("expected error: Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `ap_name` [Invalid access point ARN: access point name is invalid]");
139        assert_eq!(
140            format!("{}", error),
141            "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `ap_name`"
142        )
143    }
144
145    /// Access points (disable access points explicitly false)
146    #[test]
147    fn test_7() {
148        let params = crate::config::endpoint::Params::builder()
149            .region("us-east-1".to_string())
150            .use_fips(false)
151            .use_dual_stack(false)
152            .accelerate(false)
153            .disable_access_points(false)
154            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
155            .build()
156            .expect("invalid params");
157        let resolver = crate::config::endpoint::DefaultResolver::new();
158        let endpoint = resolver.resolve_endpoint(&params);
159        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com");
160        assert_eq!(
161            endpoint,
162            ::aws_smithy_types::endpoint::Endpoint::builder()
163                .url("https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com")
164                .property(
165                    "authSchemes",
166                    vec![{
167                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
168                        out.insert("name".to_string(), "sigv4".to_string().into());
169                        out.insert("signingName".to_string(), "s3".to_string().into());
170                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
171                        out.insert("disableDoubleEncoding".to_string(), true.into());
172                        out
173                    }
174                    .into()]
175                )
176                .build()
177        );
178    }
179
180    /// Access points: partition does not support FIPS
181    #[test]
182    fn test_8() {
183        let params = crate::config::endpoint::Params::builder()
184            .region("cn-north-1".to_string())
185            .use_fips(true)
186            .use_dual_stack(false)
187            .accelerate(false)
188            .bucket("arn:aws:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
189            .build()
190            .expect("invalid params");
191        let resolver = crate::config::endpoint::DefaultResolver::new();
192        let endpoint = resolver.resolve_endpoint(&params);
193        let error = endpoint.expect_err("expected error: Partition does not support FIPS [Access points: partition does not support FIPS]");
194        assert_eq!(format!("{}", error), "Partition does not support FIPS")
195    }
196
197    /// Bucket region is invalid
198    #[test]
199    fn test_9() {
200        let params = crate::config::endpoint::Params::builder()
201            .region("us-east-1".to_string())
202            .use_fips(false)
203            .use_dual_stack(false)
204            .accelerate(false)
205            .disable_access_points(false)
206            .bucket("arn:aws:s3:us-west -2:123456789012:accesspoint:myendpoint".to_string())
207            .build()
208            .expect("invalid params");
209        let resolver = crate::config::endpoint::DefaultResolver::new();
210        let endpoint = resolver.resolve_endpoint(&params);
211        let error = endpoint.expect_err("expected error: Invalid region in ARN: `us-west -2` (invalid DNS name) [Bucket region is invalid]");
212        assert_eq!(format!("{}", error), "Invalid region in ARN: `us-west -2` (invalid DNS name)")
213    }
214
215    /// Access points when Access points explicitly disabled (used for CreateBucket)
216    #[test]
217    fn test_10() {
218        let params = crate::config::endpoint::Params::builder()
219            .region("us-east-1".to_string())
220            .use_fips(false)
221            .use_dual_stack(false)
222            .accelerate(false)
223            .disable_access_points(true)
224            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
225            .build()
226            .expect("invalid params");
227        let resolver = crate::config::endpoint::DefaultResolver::new();
228        let endpoint = resolver.resolve_endpoint(&params);
229        let error = endpoint.expect_err("expected error: Access points are not supported for this operation [Access points when Access points explicitly disabled (used for CreateBucket)]");
230        assert_eq!(format!("{}", error), "Access points are not supported for this operation")
231    }
232
233    /// missing arn type
234    #[test]
235    fn test_11() {
236        let params = crate::config::endpoint::Params::builder()
237            .region("us-east-1".to_string())
238            .use_fips(false)
239            .use_dual_stack(false)
240            .accelerate(false)
241            .disable_access_points(true)
242            .bucket("arn:aws:s3:us-west-2:123456789012:".to_string())
243            .build()
244            .expect("invalid params");
245        let resolver = crate::config::endpoint::DefaultResolver::new();
246        let endpoint = resolver.resolve_endpoint(&params);
247        let error = endpoint.expect_err("expected error: Invalid ARN: `arn:aws:s3:us-west-2:123456789012:` was not a valid ARN [missing arn type]");
248        assert_eq!(
249            format!("{}", error),
250            "Invalid ARN: `arn:aws:s3:us-west-2:123456789012:` was not a valid ARN"
251        )
252    }
253
254    /// SDK::Host + access point + Dualstack is an error
255    #[test]
256    fn test_12() {
257        let params = crate::config::endpoint::Params::builder()
258            .accelerate(false)
259            .bucket("arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
260            .force_path_style(false)
261            .endpoint("https://beta.example.com".to_string())
262            .region("cn-north-1".to_string())
263            .use_dual_stack(true)
264            .use_fips(false)
265            .build()
266            .expect("invalid params");
267        let resolver = crate::config::endpoint::DefaultResolver::new();
268        let endpoint = resolver.resolve_endpoint(&params);
269        let error = endpoint.expect_err(
270            "expected error: Cannot set dual-stack in combination with a custom endpoint. [SDK::Host + access point + Dualstack is an error]",
271        );
272        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
273    }
274
275    /// Access point ARN with FIPS & Dualstack
276    #[test]
277    fn test_13() {
278        let params = crate::config::endpoint::Params::builder()
279            .region("us-east-1".to_string())
280            .use_fips(true)
281            .use_dual_stack(true)
282            .accelerate(false)
283            .disable_access_points(false)
284            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
285            .build()
286            .expect("invalid params");
287        let resolver = crate::config::endpoint::DefaultResolver::new();
288        let endpoint = resolver.resolve_endpoint(&params);
289        let endpoint =
290            endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com");
291        assert_eq!(
292            endpoint,
293            ::aws_smithy_types::endpoint::Endpoint::builder()
294                .url("https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com")
295                .property(
296                    "authSchemes",
297                    vec![{
298                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
299                        out.insert("name".to_string(), "sigv4".to_string().into());
300                        out.insert("signingName".to_string(), "s3".to_string().into());
301                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
302                        out.insert("disableDoubleEncoding".to_string(), true.into());
303                        out
304                    }
305                    .into()]
306                )
307                .build()
308        );
309    }
310
311    /// Access point ARN with Dualstack
312    #[test]
313    fn test_14() {
314        let params = crate::config::endpoint::Params::builder()
315            .region("us-east-1".to_string())
316            .use_fips(false)
317            .use_dual_stack(true)
318            .accelerate(false)
319            .disable_access_points(false)
320            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
321            .build()
322            .expect("invalid params");
323        let resolver = crate::config::endpoint::DefaultResolver::new();
324        let endpoint = resolver.resolve_endpoint(&params);
325        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.dualstack.us-west-2.amazonaws.com");
326        assert_eq!(
327            endpoint,
328            ::aws_smithy_types::endpoint::Endpoint::builder()
329                .url("https://myendpoint-123456789012.s3-accesspoint.dualstack.us-west-2.amazonaws.com")
330                .property(
331                    "authSchemes",
332                    vec![{
333                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
334                        out.insert("name".to_string(), "sigv4".to_string().into());
335                        out.insert("signingName".to_string(), "s3".to_string().into());
336                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
337                        out.insert("disableDoubleEncoding".to_string(), true.into());
338                        out
339                    }
340                    .into()]
341                )
342                .build()
343        );
344    }
345
346    /// vanilla MRAP
347    #[test]
348    fn test_15() {
349        let params = crate::config::endpoint::Params::builder()
350            .bucket("arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
351            .region("us-east-1".to_string())
352            .disable_multi_region_access_points(false)
353            .use_fips(false)
354            .use_dual_stack(false)
355            .accelerate(false)
356            .build()
357            .expect("invalid params");
358        let resolver = crate::config::endpoint::DefaultResolver::new();
359        let endpoint = resolver.resolve_endpoint(&params);
360        let endpoint = endpoint.expect("Expected valid endpoint: https://mfzwi23gnjvgw.mrap.accesspoint.s3-global.amazonaws.com");
361        assert_eq!(
362            endpoint,
363            ::aws_smithy_types::endpoint::Endpoint::builder()
364                .url("https://mfzwi23gnjvgw.mrap.accesspoint.s3-global.amazonaws.com")
365                .property(
366                    "authSchemes",
367                    vec![{
368                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
369                        out.insert("name".to_string(), "sigv4a".to_string().into());
370                        out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
371                        out.insert("signingName".to_string(), "s3".to_string().into());
372                        out.insert("disableDoubleEncoding".to_string(), true.into());
373                        out
374                    }
375                    .into()]
376                )
377                .build()
378        );
379    }
380
381    /// MRAP does not support FIPS
382    #[test]
383    fn test_16() {
384        let params = crate::config::endpoint::Params::builder()
385            .bucket("arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
386            .region("us-east-1".to_string())
387            .disable_multi_region_access_points(false)
388            .use_fips(true)
389            .use_dual_stack(false)
390            .accelerate(false)
391            .build()
392            .expect("invalid params");
393        let resolver = crate::config::endpoint::DefaultResolver::new();
394        let endpoint = resolver.resolve_endpoint(&params);
395        let error = endpoint.expect_err("expected error: S3 MRAP does not support FIPS [MRAP does not support FIPS]");
396        assert_eq!(format!("{}", error), "S3 MRAP does not support FIPS")
397    }
398
399    /// MRAP does not support DualStack
400    #[test]
401    fn test_17() {
402        let params = crate::config::endpoint::Params::builder()
403            .bucket("arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
404            .region("us-east-1".to_string())
405            .disable_multi_region_access_points(false)
406            .use_fips(false)
407            .use_dual_stack(true)
408            .accelerate(false)
409            .build()
410            .expect("invalid params");
411        let resolver = crate::config::endpoint::DefaultResolver::new();
412        let endpoint = resolver.resolve_endpoint(&params);
413        let error = endpoint.expect_err("expected error: S3 MRAP does not support dual-stack [MRAP does not support DualStack]");
414        assert_eq!(format!("{}", error), "S3 MRAP does not support dual-stack")
415    }
416
417    /// MRAP does not support S3 Accelerate
418    #[test]
419    fn test_18() {
420        let params = crate::config::endpoint::Params::builder()
421            .bucket("arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
422            .region("us-east-1".to_string())
423            .disable_multi_region_access_points(false)
424            .use_fips(false)
425            .use_dual_stack(false)
426            .accelerate(true)
427            .build()
428            .expect("invalid params");
429        let resolver = crate::config::endpoint::DefaultResolver::new();
430        let endpoint = resolver.resolve_endpoint(&params);
431        let error = endpoint.expect_err("expected error: S3 MRAP does not support S3 Accelerate [MRAP does not support S3 Accelerate]");
432        assert_eq!(format!("{}", error), "S3 MRAP does not support S3 Accelerate")
433    }
434
435    /// MRAP explicitly disabled
436    #[test]
437    fn test_19() {
438        let params = crate::config::endpoint::Params::builder()
439            .bucket("arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
440            .region("us-east-1".to_string())
441            .disable_multi_region_access_points(true)
442            .use_fips(false)
443            .use_dual_stack(false)
444            .accelerate(false)
445            .build()
446            .expect("invalid params");
447        let resolver = crate::config::endpoint::DefaultResolver::new();
448        let endpoint = resolver.resolve_endpoint(&params);
449        let error =
450            endpoint.expect_err("expected error: Invalid configuration: Multi-Region Access Point ARNs are disabled. [MRAP explicitly disabled]");
451        assert_eq!(
452            format!("{}", error),
453            "Invalid configuration: Multi-Region Access Point ARNs are disabled."
454        )
455    }
456
457    /// Dual-stack endpoint with path-style forced
458    #[test]
459    fn test_20() {
460        let params = crate::config::endpoint::Params::builder()
461            .bucket("bucketname".to_string())
462            .region("us-west-2".to_string())
463            .force_path_style(true)
464            .use_fips(false)
465            .accelerate(false)
466            .use_dual_stack(true)
467            .build()
468            .expect("invalid params");
469        let resolver = crate::config::endpoint::DefaultResolver::new();
470        let endpoint = resolver.resolve_endpoint(&params);
471        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-west-2.amazonaws.com/bucketname");
472        assert_eq!(
473            endpoint,
474            ::aws_smithy_types::endpoint::Endpoint::builder()
475                .url("https://s3.dualstack.us-west-2.amazonaws.com/bucketname")
476                .property(
477                    "authSchemes",
478                    vec![{
479                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
480                        out.insert("name".to_string(), "sigv4".to_string().into());
481                        out.insert("signingName".to_string(), "s3".to_string().into());
482                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
483                        out.insert("disableDoubleEncoding".to_string(), true.into());
484                        out
485                    }
486                    .into()]
487                )
488                .build()
489        );
490    }
491
492    /// Dual-stack endpoint + SDK::Host is error
493    #[test]
494    fn test_21() {
495        let params = crate::config::endpoint::Params::builder()
496            .bucket("bucketname".to_string())
497            .region("us-west-2".to_string())
498            .force_path_style(true)
499            .use_fips(false)
500            .accelerate(false)
501            .use_dual_stack(true)
502            .endpoint("https://abc.com".to_string())
503            .build()
504            .expect("invalid params");
505        let resolver = crate::config::endpoint::DefaultResolver::new();
506        let endpoint = resolver.resolve_endpoint(&params);
507        let error = endpoint
508            .expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [Dual-stack endpoint + SDK::Host is error]");
509        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
510    }
511
512    /// path style + ARN bucket
513    #[test]
514    fn test_22() {
515        let params = crate::config::endpoint::Params::builder()
516            .accelerate(false)
517            .bucket("arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
518            .force_path_style(true)
519            .region("us-west-2".to_string())
520            .use_dual_stack(false)
521            .use_fips(false)
522            .build()
523            .expect("invalid params");
524        let resolver = crate::config::endpoint::DefaultResolver::new();
525        let endpoint = resolver.resolve_endpoint(&params);
526        let error = endpoint.expect_err("expected error: Path-style addressing cannot be used with ARN buckets [path style + ARN bucket]");
527        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with ARN buckets")
528    }
529
530    /// implicit path style bucket + dualstack
531    #[test]
532    fn test_23() {
533        let params = crate::config::endpoint::Params::builder()
534            .accelerate(false)
535            .bucket("99_ab".to_string())
536            .region("us-west-2".to_string())
537            .use_dual_stack(true)
538            .use_fips(false)
539            .build()
540            .expect("invalid params");
541        let resolver = crate::config::endpoint::DefaultResolver::new();
542        let endpoint = resolver.resolve_endpoint(&params);
543        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-west-2.amazonaws.com/99_ab");
544        assert_eq!(
545            endpoint,
546            ::aws_smithy_types::endpoint::Endpoint::builder()
547                .url("https://s3.dualstack.us-west-2.amazonaws.com/99_ab")
548                .property(
549                    "authSchemes",
550                    vec![{
551                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
552                        out.insert("name".to_string(), "sigv4".to_string().into());
553                        out.insert("signingName".to_string(), "s3".to_string().into());
554                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
555                        out.insert("disableDoubleEncoding".to_string(), true.into());
556                        out
557                    }
558                    .into()]
559                )
560                .build()
561        );
562    }
563
564    /// implicit path style bucket + dualstack
565    #[test]
566    fn test_24() {
567        let params = crate::config::endpoint::Params::builder()
568            .accelerate(false)
569            .bucket("99_ab".to_string())
570            .region("us-west-2".to_string())
571            .use_dual_stack(true)
572            .use_fips(false)
573            .endpoint("http://abc.com".to_string())
574            .build()
575            .expect("invalid params");
576        let resolver = crate::config::endpoint::DefaultResolver::new();
577        let endpoint = resolver.resolve_endpoint(&params);
578        let error = endpoint
579            .expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [implicit path style bucket + dualstack]");
580        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
581    }
582
583    /// don't allow URL injections in the bucket
584    #[test]
585    fn test_25() {
586        let params = crate::config::endpoint::Params::builder()
587            .bucket("example.com#".to_string())
588            .region("us-west-2".to_string())
589            .use_dual_stack(false)
590            .use_fips(false)
591            .accelerate(false)
592            .build()
593            .expect("invalid params");
594        let resolver = crate::config::endpoint::DefaultResolver::new();
595        let endpoint = resolver.resolve_endpoint(&params);
596        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com/example.com%23");
597        assert_eq!(
598            endpoint,
599            ::aws_smithy_types::endpoint::Endpoint::builder()
600                .url("https://s3.us-west-2.amazonaws.com/example.com%23")
601                .property(
602                    "authSchemes",
603                    vec![{
604                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
605                        out.insert("name".to_string(), "sigv4".to_string().into());
606                        out.insert("signingName".to_string(), "s3".to_string().into());
607                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
608                        out.insert("disableDoubleEncoding".to_string(), true.into());
609                        out
610                    }
611                    .into()]
612                )
613                .build()
614        );
615    }
616
617    /// URI encode bucket names in the path
618    #[test]
619    fn test_26() {
620        let params = crate::config::endpoint::Params::builder()
621            .bucket("bucket name".to_string())
622            .region("us-west-2".to_string())
623            .use_dual_stack(false)
624            .use_fips(false)
625            .accelerate(false)
626            .build()
627            .expect("invalid params");
628        let resolver = crate::config::endpoint::DefaultResolver::new();
629        let endpoint = resolver.resolve_endpoint(&params);
630        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com/bucket%20name");
631        assert_eq!(
632            endpoint,
633            ::aws_smithy_types::endpoint::Endpoint::builder()
634                .url("https://s3.us-west-2.amazonaws.com/bucket%20name")
635                .property(
636                    "authSchemes",
637                    vec![{
638                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
639                        out.insert("name".to_string(), "sigv4".to_string().into());
640                        out.insert("signingName".to_string(), "s3".to_string().into());
641                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
642                        out.insert("disableDoubleEncoding".to_string(), true.into());
643                        out
644                    }
645                    .into()]
646                )
647                .build()
648        );
649    }
650
651    /// scheme is respected
652    #[test]
653    fn test_27() {
654        let params = crate::config::endpoint::Params::builder()
655            .accelerate(false)
656            .bucket("99_ab".to_string())
657            .endpoint("http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
658            .region("af-south-1".to_string())
659            .use_dual_stack(false)
660            .use_fips(false)
661            .build()
662            .expect("invalid params");
663        let resolver = crate::config::endpoint::DefaultResolver::new();
664        let endpoint = resolver.resolve_endpoint(&params);
665        let endpoint = endpoint.expect("Expected valid endpoint: http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/99_ab");
666        assert_eq!(
667            endpoint,
668            ::aws_smithy_types::endpoint::Endpoint::builder()
669                .url("http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/99_ab")
670                .property(
671                    "authSchemes",
672                    vec![{
673                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
674                        out.insert("name".to_string(), "sigv4".to_string().into());
675                        out.insert("signingName".to_string(), "s3".to_string().into());
676                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
677                        out.insert("disableDoubleEncoding".to_string(), true.into());
678                        out
679                    }
680                    .into()]
681                )
682                .build()
683        );
684    }
685
686    /// scheme is respected (virtual addressing)
687    #[test]
688    fn test_28() {
689        let params = crate::config::endpoint::Params::builder()
690            .accelerate(false)
691            .bucket("bucketname".to_string())
692            .endpoint("http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/foo".to_string())
693            .region("af-south-1".to_string())
694            .use_dual_stack(false)
695            .use_fips(false)
696            .build()
697            .expect("invalid params");
698        let resolver = crate::config::endpoint::DefaultResolver::new();
699        let endpoint = resolver.resolve_endpoint(&params);
700        let endpoint = endpoint.expect("Expected valid endpoint: http://bucketname.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/foo");
701        assert_eq!(
702            endpoint,
703            ::aws_smithy_types::endpoint::Endpoint::builder()
704                .url("http://bucketname.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/foo")
705                .property(
706                    "authSchemes",
707                    vec![{
708                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
709                        out.insert("name".to_string(), "sigv4".to_string().into());
710                        out.insert("signingName".to_string(), "s3".to_string().into());
711                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
712                        out.insert("disableDoubleEncoding".to_string(), true.into());
713                        out
714                    }
715                    .into()]
716                )
717                .build()
718        );
719    }
720
721    /// path style + implicit private link
722    #[test]
723    fn test_29() {
724        let params = crate::config::endpoint::Params::builder()
725            .accelerate(false)
726            .bucket("99_ab".to_string())
727            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
728            .region("af-south-1".to_string())
729            .use_dual_stack(false)
730            .use_fips(false)
731            .build()
732            .expect("invalid params");
733        let resolver = crate::config::endpoint::DefaultResolver::new();
734        let endpoint = resolver.resolve_endpoint(&params);
735        let endpoint = endpoint.expect("Expected valid endpoint: https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/99_ab");
736        assert_eq!(
737            endpoint,
738            ::aws_smithy_types::endpoint::Endpoint::builder()
739                .url("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/99_ab")
740                .property(
741                    "authSchemes",
742                    vec![{
743                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
744                        out.insert("name".to_string(), "sigv4".to_string().into());
745                        out.insert("signingName".to_string(), "s3".to_string().into());
746                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
747                        out.insert("disableDoubleEncoding".to_string(), true.into());
748                        out
749                    }
750                    .into()]
751                )
752                .build()
753        );
754    }
755
756    /// invalid Endpoint override
757    #[test]
758    fn test_30() {
759        let params = crate::config::endpoint::Params::builder()
760            .accelerate(false)
761            .bucket("bucketname".to_string())
762            .endpoint("abcde://nota#url".to_string())
763            .region("af-south-1".to_string())
764            .use_dual_stack(false)
765            .use_fips(false)
766            .build()
767            .expect("invalid params");
768        let resolver = crate::config::endpoint::DefaultResolver::new();
769        let endpoint = resolver.resolve_endpoint(&params);
770        let error = endpoint.expect_err("expected error: Custom endpoint `abcde://nota#url` was not a valid URI [invalid Endpoint override]");
771        assert_eq!(format!("{}", error), "Custom endpoint `abcde://nota#url` was not a valid URI")
772    }
773
774    /// using an IPv4 address forces path style
775    #[test]
776    fn test_31() {
777        let params = crate::config::endpoint::Params::builder()
778            .accelerate(false)
779            .bucket("bucketname".to_string())
780            .endpoint("https://123.123.0.1".to_string())
781            .region("af-south-1".to_string())
782            .use_dual_stack(false)
783            .use_fips(false)
784            .build()
785            .expect("invalid params");
786        let resolver = crate::config::endpoint::DefaultResolver::new();
787        let endpoint = resolver.resolve_endpoint(&params);
788        let endpoint = endpoint.expect("Expected valid endpoint: https://123.123.0.1/bucketname");
789        assert_eq!(
790            endpoint,
791            ::aws_smithy_types::endpoint::Endpoint::builder()
792                .url("https://123.123.0.1/bucketname")
793                .property(
794                    "authSchemes",
795                    vec![{
796                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
797                        out.insert("name".to_string(), "sigv4".to_string().into());
798                        out.insert("signingName".to_string(), "s3".to_string().into());
799                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
800                        out.insert("disableDoubleEncoding".to_string(), true.into());
801                        out
802                    }
803                    .into()]
804                )
805                .build()
806        );
807    }
808
809    /// vanilla access point arn with region mismatch and UseArnRegion=false
810    #[test]
811    fn test_32() {
812        let params = crate::config::endpoint::Params::builder()
813            .accelerate(false)
814            .bucket("arn:aws:s3:us-east-1:123456789012:accesspoint:myendpoint".to_string())
815            .force_path_style(false)
816            .use_arn_region(false)
817            .region("us-west-2".to_string())
818            .use_dual_stack(false)
819            .use_fips(false)
820            .build()
821            .expect("invalid params");
822        let resolver = crate::config::endpoint::DefaultResolver::new();
823        let endpoint = resolver.resolve_endpoint(&params);
824        let error = endpoint.expect_err("expected error: Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false` [vanilla access point arn with region mismatch and UseArnRegion=false]");
825        assert_eq!(
826            format!("{}", error),
827            "Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`"
828        )
829    }
830
831    /// vanilla access point arn with region mismatch and UseArnRegion unset
832    #[test]
833    fn test_33() {
834        let params = crate::config::endpoint::Params::builder()
835            .accelerate(false)
836            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
837            .force_path_style(false)
838            .region("us-east-1".to_string())
839            .use_dual_stack(false)
840            .use_fips(false)
841            .build()
842            .expect("invalid params");
843        let resolver = crate::config::endpoint::DefaultResolver::new();
844        let endpoint = resolver.resolve_endpoint(&params);
845        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com");
846        assert_eq!(
847            endpoint,
848            ::aws_smithy_types::endpoint::Endpoint::builder()
849                .url("https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com")
850                .property(
851                    "authSchemes",
852                    vec![{
853                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
854                        out.insert("name".to_string(), "sigv4".to_string().into());
855                        out.insert("signingName".to_string(), "s3".to_string().into());
856                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
857                        out.insert("disableDoubleEncoding".to_string(), true.into());
858                        out
859                    }
860                    .into()]
861                )
862                .build()
863        );
864    }
865
866    /// vanilla access point arn with region mismatch and UseArnRegion=true
867    #[test]
868    fn test_34() {
869        let params = crate::config::endpoint::Params::builder()
870            .accelerate(false)
871            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
872            .force_path_style(false)
873            .use_arn_region(true)
874            .region("us-east-1".to_string())
875            .use_dual_stack(false)
876            .use_fips(false)
877            .build()
878            .expect("invalid params");
879        let resolver = crate::config::endpoint::DefaultResolver::new();
880        let endpoint = resolver.resolve_endpoint(&params);
881        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com");
882        assert_eq!(
883            endpoint,
884            ::aws_smithy_types::endpoint::Endpoint::builder()
885                .url("https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com")
886                .property(
887                    "authSchemes",
888                    vec![{
889                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
890                        out.insert("name".to_string(), "sigv4".to_string().into());
891                        out.insert("signingName".to_string(), "s3".to_string().into());
892                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
893                        out.insert("disableDoubleEncoding".to_string(), true.into());
894                        out
895                    }
896                    .into()]
897                )
898                .build()
899        );
900    }
901
902    /// subdomains are not allowed in virtual buckets
903    #[test]
904    fn test_35() {
905        let params = crate::config::endpoint::Params::builder()
906            .bucket("bucket.name".to_string())
907            .region("us-east-1".to_string())
908            .build()
909            .expect("invalid params");
910        let resolver = crate::config::endpoint::DefaultResolver::new();
911        let endpoint = resolver.resolve_endpoint(&params);
912        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-east-1.amazonaws.com/bucket.name");
913        assert_eq!(
914            endpoint,
915            ::aws_smithy_types::endpoint::Endpoint::builder()
916                .url("https://s3.us-east-1.amazonaws.com/bucket.name")
917                .property(
918                    "authSchemes",
919                    vec![{
920                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
921                        out.insert("name".to_string(), "sigv4".to_string().into());
922                        out.insert("signingName".to_string(), "s3".to_string().into());
923                        out.insert("disableDoubleEncoding".to_string(), true.into());
924                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
925                        out
926                    }
927                    .into()]
928                )
929                .build()
930        );
931    }
932
933    /// bucket names with 3 characters are allowed in virtual buckets
934    #[test]
935    fn test_36() {
936        let params = crate::config::endpoint::Params::builder()
937            .bucket("aaa".to_string())
938            .region("us-east-1".to_string())
939            .build()
940            .expect("invalid params");
941        let resolver = crate::config::endpoint::DefaultResolver::new();
942        let endpoint = resolver.resolve_endpoint(&params);
943        let endpoint = endpoint.expect("Expected valid endpoint: https://aaa.s3.us-east-1.amazonaws.com");
944        assert_eq!(
945            endpoint,
946            ::aws_smithy_types::endpoint::Endpoint::builder()
947                .url("https://aaa.s3.us-east-1.amazonaws.com")
948                .property(
949                    "authSchemes",
950                    vec![{
951                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
952                        out.insert("name".to_string(), "sigv4".to_string().into());
953                        out.insert("signingName".to_string(), "s3".to_string().into());
954                        out.insert("disableDoubleEncoding".to_string(), true.into());
955                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
956                        out
957                    }
958                    .into()]
959                )
960                .build()
961        );
962    }
963
964    /// bucket names with fewer than 3 characters are not allowed in virtual host
965    #[test]
966    fn test_37() {
967        let params = crate::config::endpoint::Params::builder()
968            .bucket("aa".to_string())
969            .region("us-east-1".to_string())
970            .build()
971            .expect("invalid params");
972        let resolver = crate::config::endpoint::DefaultResolver::new();
973        let endpoint = resolver.resolve_endpoint(&params);
974        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-east-1.amazonaws.com/aa");
975        assert_eq!(
976            endpoint,
977            ::aws_smithy_types::endpoint::Endpoint::builder()
978                .url("https://s3.us-east-1.amazonaws.com/aa")
979                .property(
980                    "authSchemes",
981                    vec![{
982                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
983                        out.insert("name".to_string(), "sigv4".to_string().into());
984                        out.insert("signingName".to_string(), "s3".to_string().into());
985                        out.insert("disableDoubleEncoding".to_string(), true.into());
986                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
987                        out
988                    }
989                    .into()]
990                )
991                .build()
992        );
993    }
994
995    /// bucket names with uppercase characters are not allowed in virtual host
996    #[test]
997    fn test_38() {
998        let params = crate::config::endpoint::Params::builder()
999            .bucket("BucketName".to_string())
1000            .region("us-east-1".to_string())
1001            .build()
1002            .expect("invalid params");
1003        let resolver = crate::config::endpoint::DefaultResolver::new();
1004        let endpoint = resolver.resolve_endpoint(&params);
1005        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-east-1.amazonaws.com/BucketName");
1006        assert_eq!(
1007            endpoint,
1008            ::aws_smithy_types::endpoint::Endpoint::builder()
1009                .url("https://s3.us-east-1.amazonaws.com/BucketName")
1010                .property(
1011                    "authSchemes",
1012                    vec![{
1013                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1014                        out.insert("name".to_string(), "sigv4".to_string().into());
1015                        out.insert("signingName".to_string(), "s3".to_string().into());
1016                        out.insert("disableDoubleEncoding".to_string(), true.into());
1017                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1018                        out
1019                    }
1020                    .into()]
1021                )
1022                .build()
1023        );
1024    }
1025
1026    /// subdomains are allowed in virtual buckets on http endpoints
1027    #[test]
1028    fn test_39() {
1029        let params = crate::config::endpoint::Params::builder()
1030            .bucket("bucket.name".to_string())
1031            .region("us-east-1".to_string())
1032            .endpoint("http://example.com".to_string())
1033            .build()
1034            .expect("invalid params");
1035        let resolver = crate::config::endpoint::DefaultResolver::new();
1036        let endpoint = resolver.resolve_endpoint(&params);
1037        let endpoint = endpoint.expect("Expected valid endpoint: http://bucket.name.example.com");
1038        assert_eq!(
1039            endpoint,
1040            ::aws_smithy_types::endpoint::Endpoint::builder()
1041                .url("http://bucket.name.example.com")
1042                .property(
1043                    "authSchemes",
1044                    vec![{
1045                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1046                        out.insert("name".to_string(), "sigv4".to_string().into());
1047                        out.insert("signingName".to_string(), "s3".to_string().into());
1048                        out.insert("disableDoubleEncoding".to_string(), true.into());
1049                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1050                        out
1051                    }
1052                    .into()]
1053                )
1054                .build()
1055        );
1056    }
1057
1058    /// no region set
1059    #[test]
1060    fn test_40() {
1061        let params = crate::config::endpoint::Params::builder()
1062            .bucket("bucket-name".to_string())
1063            .build()
1064            .expect("invalid params");
1065        let resolver = crate::config::endpoint::DefaultResolver::new();
1066        let endpoint = resolver.resolve_endpoint(&params);
1067        let error = endpoint.expect_err("expected error: A region must be set when sending requests to S3. [no region set]");
1068        assert_eq!(format!("{}", error), "A region must be set when sending requests to S3.")
1069    }
1070
1071    /// UseGlobalEndpoints=true, region=us-east-1 uses the global endpoint
1072    #[test]
1073    fn test_41() {
1074        let params = crate::config::endpoint::Params::builder()
1075            .region("us-east-1".to_string())
1076            .use_global_endpoint(true)
1077            .use_fips(false)
1078            .use_dual_stack(false)
1079            .accelerate(false)
1080            .build()
1081            .expect("invalid params");
1082        let resolver = crate::config::endpoint::DefaultResolver::new();
1083        let endpoint = resolver.resolve_endpoint(&params);
1084        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com");
1085        assert_eq!(
1086            endpoint,
1087            ::aws_smithy_types::endpoint::Endpoint::builder()
1088                .url("https://s3.amazonaws.com")
1089                .property(
1090                    "authSchemes",
1091                    vec![{
1092                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1093                        out.insert("name".to_string(), "sigv4".to_string().into());
1094                        out.insert("signingName".to_string(), "s3".to_string().into());
1095                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1096                        out.insert("disableDoubleEncoding".to_string(), true.into());
1097                        out
1098                    }
1099                    .into()]
1100                )
1101                .build()
1102        );
1103    }
1104
1105    /// UseGlobalEndpoints=true, region=us-west-2 uses the regional endpoint
1106    #[test]
1107    fn test_42() {
1108        let params = crate::config::endpoint::Params::builder()
1109            .region("us-west-2".to_string())
1110            .use_global_endpoint(true)
1111            .use_fips(false)
1112            .use_dual_stack(false)
1113            .accelerate(false)
1114            .build()
1115            .expect("invalid params");
1116        let resolver = crate::config::endpoint::DefaultResolver::new();
1117        let endpoint = resolver.resolve_endpoint(&params);
1118        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com");
1119        assert_eq!(
1120            endpoint,
1121            ::aws_smithy_types::endpoint::Endpoint::builder()
1122                .url("https://s3.us-west-2.amazonaws.com")
1123                .property(
1124                    "authSchemes",
1125                    vec![{
1126                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1127                        out.insert("name".to_string(), "sigv4".to_string().into());
1128                        out.insert("signingName".to_string(), "s3".to_string().into());
1129                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
1130                        out.insert("disableDoubleEncoding".to_string(), true.into());
1131                        out
1132                    }
1133                    .into()]
1134                )
1135                .build()
1136        );
1137    }
1138
1139    /// UseGlobalEndpoints=true, region=cn-north-1 uses the regional endpoint
1140    #[test]
1141    fn test_43() {
1142        let params = crate::config::endpoint::Params::builder()
1143            .region("cn-north-1".to_string())
1144            .use_global_endpoint(true)
1145            .use_fips(false)
1146            .use_dual_stack(false)
1147            .accelerate(false)
1148            .build()
1149            .expect("invalid params");
1150        let resolver = crate::config::endpoint::DefaultResolver::new();
1151        let endpoint = resolver.resolve_endpoint(&params);
1152        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.cn-north-1.amazonaws.com.cn");
1153        assert_eq!(
1154            endpoint,
1155            ::aws_smithy_types::endpoint::Endpoint::builder()
1156                .url("https://s3.cn-north-1.amazonaws.com.cn")
1157                .property(
1158                    "authSchemes",
1159                    vec![{
1160                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1161                        out.insert("name".to_string(), "sigv4".to_string().into());
1162                        out.insert("signingName".to_string(), "s3".to_string().into());
1163                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
1164                        out.insert("disableDoubleEncoding".to_string(), true.into());
1165                        out
1166                    }
1167                    .into()]
1168                )
1169                .build()
1170        );
1171    }
1172
1173    /// UseGlobalEndpoints=true, region=us-east-1, fips=true uses the regional endpoint with fips
1174    #[test]
1175    fn test_44() {
1176        let params = crate::config::endpoint::Params::builder()
1177            .region("us-east-1".to_string())
1178            .use_global_endpoint(true)
1179            .use_fips(true)
1180            .use_dual_stack(false)
1181            .accelerate(false)
1182            .build()
1183            .expect("invalid params");
1184        let resolver = crate::config::endpoint::DefaultResolver::new();
1185        let endpoint = resolver.resolve_endpoint(&params);
1186        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com");
1187        assert_eq!(
1188            endpoint,
1189            ::aws_smithy_types::endpoint::Endpoint::builder()
1190                .url("https://s3-fips.us-east-1.amazonaws.com")
1191                .property(
1192                    "authSchemes",
1193                    vec![{
1194                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1195                        out.insert("name".to_string(), "sigv4".to_string().into());
1196                        out.insert("signingName".to_string(), "s3".to_string().into());
1197                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1198                        out.insert("disableDoubleEncoding".to_string(), true.into());
1199                        out
1200                    }
1201                    .into()]
1202                )
1203                .build()
1204        );
1205    }
1206
1207    /// UseGlobalEndpoints=true, region=us-east-1, dualstack=true uses the regional endpoint with dualstack
1208    #[test]
1209    fn test_45() {
1210        let params = crate::config::endpoint::Params::builder()
1211            .region("us-east-1".to_string())
1212            .use_global_endpoint(true)
1213            .use_fips(false)
1214            .use_dual_stack(true)
1215            .accelerate(false)
1216            .build()
1217            .expect("invalid params");
1218        let resolver = crate::config::endpoint::DefaultResolver::new();
1219        let endpoint = resolver.resolve_endpoint(&params);
1220        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-east-1.amazonaws.com");
1221        assert_eq!(
1222            endpoint,
1223            ::aws_smithy_types::endpoint::Endpoint::builder()
1224                .url("https://s3.dualstack.us-east-1.amazonaws.com")
1225                .property(
1226                    "authSchemes",
1227                    vec![{
1228                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1229                        out.insert("name".to_string(), "sigv4".to_string().into());
1230                        out.insert("signingName".to_string(), "s3".to_string().into());
1231                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1232                        out.insert("disableDoubleEncoding".to_string(), true.into());
1233                        out
1234                    }
1235                    .into()]
1236                )
1237                .build()
1238        );
1239    }
1240
1241    /// UseGlobalEndpoints=true, region=us-east-1, dualstack and fips uses the regional endpoint with fips/dualstack
1242    #[test]
1243    fn test_46() {
1244        let params = crate::config::endpoint::Params::builder()
1245            .region("us-east-1".to_string())
1246            .use_global_endpoint(true)
1247            .use_fips(true)
1248            .use_dual_stack(true)
1249            .accelerate(false)
1250            .build()
1251            .expect("invalid params");
1252        let resolver = crate::config::endpoint::DefaultResolver::new();
1253        let endpoint = resolver.resolve_endpoint(&params);
1254        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com");
1255        assert_eq!(
1256            endpoint,
1257            ::aws_smithy_types::endpoint::Endpoint::builder()
1258                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com")
1259                .property(
1260                    "authSchemes",
1261                    vec![{
1262                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1263                        out.insert("name".to_string(), "sigv4".to_string().into());
1264                        out.insert("signingName".to_string(), "s3".to_string().into());
1265                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1266                        out.insert("disableDoubleEncoding".to_string(), true.into());
1267                        out
1268                    }
1269                    .into()]
1270                )
1271                .build()
1272        );
1273    }
1274
1275    /// UseGlobalEndpoints=true, region=us-east-1 with custom endpoint, uses custom
1276    #[test]
1277    fn test_47() {
1278        let params = crate::config::endpoint::Params::builder()
1279            .region("us-east-1".to_string())
1280            .endpoint("https://example.com".to_string())
1281            .use_global_endpoint(true)
1282            .use_fips(false)
1283            .use_dual_stack(false)
1284            .accelerate(false)
1285            .build()
1286            .expect("invalid params");
1287        let resolver = crate::config::endpoint::DefaultResolver::new();
1288        let endpoint = resolver.resolve_endpoint(&params);
1289        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
1290        assert_eq!(
1291            endpoint,
1292            ::aws_smithy_types::endpoint::Endpoint::builder()
1293                .url("https://example.com")
1294                .property(
1295                    "authSchemes",
1296                    vec![{
1297                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1298                        out.insert("name".to_string(), "sigv4".to_string().into());
1299                        out.insert("signingName".to_string(), "s3".to_string().into());
1300                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1301                        out.insert("disableDoubleEncoding".to_string(), true.into());
1302                        out
1303                    }
1304                    .into()]
1305                )
1306                .build()
1307        );
1308    }
1309
1310    /// UseGlobalEndpoints=true, region=us-west-2 with custom endpoint, uses custom
1311    #[test]
1312    fn test_48() {
1313        let params = crate::config::endpoint::Params::builder()
1314            .region("us-west-2".to_string())
1315            .endpoint("https://example.com".to_string())
1316            .use_global_endpoint(true)
1317            .use_fips(false)
1318            .use_dual_stack(false)
1319            .accelerate(false)
1320            .build()
1321            .expect("invalid params");
1322        let resolver = crate::config::endpoint::DefaultResolver::new();
1323        let endpoint = resolver.resolve_endpoint(&params);
1324        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
1325        assert_eq!(
1326            endpoint,
1327            ::aws_smithy_types::endpoint::Endpoint::builder()
1328                .url("https://example.com")
1329                .property(
1330                    "authSchemes",
1331                    vec![{
1332                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1333                        out.insert("name".to_string(), "sigv4".to_string().into());
1334                        out.insert("signingName".to_string(), "s3".to_string().into());
1335                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
1336                        out.insert("disableDoubleEncoding".to_string(), true.into());
1337                        out
1338                    }
1339                    .into()]
1340                )
1341                .build()
1342        );
1343    }
1344
1345    /// UseGlobalEndpoints=true, region=us-east-1 with accelerate on non bucket case uses the global endpoint and ignores accelerate
1346    #[test]
1347    fn test_49() {
1348        let params = crate::config::endpoint::Params::builder()
1349            .region("us-east-1".to_string())
1350            .use_global_endpoint(true)
1351            .use_fips(false)
1352            .use_dual_stack(false)
1353            .accelerate(true)
1354            .build()
1355            .expect("invalid params");
1356        let resolver = crate::config::endpoint::DefaultResolver::new();
1357        let endpoint = resolver.resolve_endpoint(&params);
1358        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com");
1359        assert_eq!(
1360            endpoint,
1361            ::aws_smithy_types::endpoint::Endpoint::builder()
1362                .url("https://s3.amazonaws.com")
1363                .property(
1364                    "authSchemes",
1365                    vec![{
1366                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1367                        out.insert("name".to_string(), "sigv4".to_string().into());
1368                        out.insert("signingName".to_string(), "s3".to_string().into());
1369                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1370                        out.insert("disableDoubleEncoding".to_string(), true.into());
1371                        out
1372                    }
1373                    .into()]
1374                )
1375                .build()
1376        );
1377    }
1378
1379    /// aws-global region uses the global endpoint
1380    #[test]
1381    fn test_50() {
1382        let params = crate::config::endpoint::Params::builder()
1383            .region("aws-global".to_string())
1384            .use_fips(false)
1385            .use_dual_stack(false)
1386            .accelerate(false)
1387            .build()
1388            .expect("invalid params");
1389        let resolver = crate::config::endpoint::DefaultResolver::new();
1390        let endpoint = resolver.resolve_endpoint(&params);
1391        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com");
1392        assert_eq!(
1393            endpoint,
1394            ::aws_smithy_types::endpoint::Endpoint::builder()
1395                .url("https://s3.amazonaws.com")
1396                .property(
1397                    "authSchemes",
1398                    vec![{
1399                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1400                        out.insert("name".to_string(), "sigv4".to_string().into());
1401                        out.insert("signingName".to_string(), "s3".to_string().into());
1402                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1403                        out.insert("disableDoubleEncoding".to_string(), true.into());
1404                        out
1405                    }
1406                    .into()]
1407                )
1408                .build()
1409        );
1410    }
1411
1412    /// aws-global region with fips uses the regional endpoint
1413    #[test]
1414    fn test_51() {
1415        let params = crate::config::endpoint::Params::builder()
1416            .region("aws-global".to_string())
1417            .use_fips(true)
1418            .use_dual_stack(false)
1419            .accelerate(false)
1420            .build()
1421            .expect("invalid params");
1422        let resolver = crate::config::endpoint::DefaultResolver::new();
1423        let endpoint = resolver.resolve_endpoint(&params);
1424        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com");
1425        assert_eq!(
1426            endpoint,
1427            ::aws_smithy_types::endpoint::Endpoint::builder()
1428                .url("https://s3-fips.us-east-1.amazonaws.com")
1429                .property(
1430                    "authSchemes",
1431                    vec![{
1432                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1433                        out.insert("name".to_string(), "sigv4".to_string().into());
1434                        out.insert("signingName".to_string(), "s3".to_string().into());
1435                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1436                        out.insert("disableDoubleEncoding".to_string(), true.into());
1437                        out
1438                    }
1439                    .into()]
1440                )
1441                .build()
1442        );
1443    }
1444
1445    /// aws-global region with dualstack uses the regional endpoint
1446    #[test]
1447    fn test_52() {
1448        let params = crate::config::endpoint::Params::builder()
1449            .region("aws-global".to_string())
1450            .use_fips(false)
1451            .use_dual_stack(true)
1452            .accelerate(false)
1453            .build()
1454            .expect("invalid params");
1455        let resolver = crate::config::endpoint::DefaultResolver::new();
1456        let endpoint = resolver.resolve_endpoint(&params);
1457        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-east-1.amazonaws.com");
1458        assert_eq!(
1459            endpoint,
1460            ::aws_smithy_types::endpoint::Endpoint::builder()
1461                .url("https://s3.dualstack.us-east-1.amazonaws.com")
1462                .property(
1463                    "authSchemes",
1464                    vec![{
1465                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1466                        out.insert("name".to_string(), "sigv4".to_string().into());
1467                        out.insert("signingName".to_string(), "s3".to_string().into());
1468                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1469                        out.insert("disableDoubleEncoding".to_string(), true.into());
1470                        out
1471                    }
1472                    .into()]
1473                )
1474                .build()
1475        );
1476    }
1477
1478    /// aws-global region with fips and dualstack uses the regional endpoint
1479    #[test]
1480    fn test_53() {
1481        let params = crate::config::endpoint::Params::builder()
1482            .region("aws-global".to_string())
1483            .use_fips(true)
1484            .use_dual_stack(true)
1485            .accelerate(false)
1486            .build()
1487            .expect("invalid params");
1488        let resolver = crate::config::endpoint::DefaultResolver::new();
1489        let endpoint = resolver.resolve_endpoint(&params);
1490        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com");
1491        assert_eq!(
1492            endpoint,
1493            ::aws_smithy_types::endpoint::Endpoint::builder()
1494                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com")
1495                .property(
1496                    "authSchemes",
1497                    vec![{
1498                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1499                        out.insert("name".to_string(), "sigv4".to_string().into());
1500                        out.insert("signingName".to_string(), "s3".to_string().into());
1501                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1502                        out.insert("disableDoubleEncoding".to_string(), true.into());
1503                        out
1504                    }
1505                    .into()]
1506                )
1507                .build()
1508        );
1509    }
1510
1511    /// aws-global region with accelerate on non-bucket case, uses global endpoint and ignores accelerate
1512    #[test]
1513    fn test_54() {
1514        let params = crate::config::endpoint::Params::builder()
1515            .region("aws-global".to_string())
1516            .use_fips(false)
1517            .use_dual_stack(false)
1518            .accelerate(true)
1519            .build()
1520            .expect("invalid params");
1521        let resolver = crate::config::endpoint::DefaultResolver::new();
1522        let endpoint = resolver.resolve_endpoint(&params);
1523        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com");
1524        assert_eq!(
1525            endpoint,
1526            ::aws_smithy_types::endpoint::Endpoint::builder()
1527                .url("https://s3.amazonaws.com")
1528                .property(
1529                    "authSchemes",
1530                    vec![{
1531                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1532                        out.insert("name".to_string(), "sigv4".to_string().into());
1533                        out.insert("signingName".to_string(), "s3".to_string().into());
1534                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1535                        out.insert("disableDoubleEncoding".to_string(), true.into());
1536                        out
1537                    }
1538                    .into()]
1539                )
1540                .build()
1541        );
1542    }
1543
1544    /// aws-global region with custom endpoint, uses custom
1545    #[test]
1546    fn test_55() {
1547        let params = crate::config::endpoint::Params::builder()
1548            .region("aws-global".to_string())
1549            .endpoint("https://example.com".to_string())
1550            .use_global_endpoint(false)
1551            .use_fips(false)
1552            .use_dual_stack(false)
1553            .accelerate(false)
1554            .build()
1555            .expect("invalid params");
1556        let resolver = crate::config::endpoint::DefaultResolver::new();
1557        let endpoint = resolver.resolve_endpoint(&params);
1558        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
1559        assert_eq!(
1560            endpoint,
1561            ::aws_smithy_types::endpoint::Endpoint::builder()
1562                .url("https://example.com")
1563                .property(
1564                    "authSchemes",
1565                    vec![{
1566                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1567                        out.insert("name".to_string(), "sigv4".to_string().into());
1568                        out.insert("signingName".to_string(), "s3".to_string().into());
1569                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1570                        out.insert("disableDoubleEncoding".to_string(), true.into());
1571                        out
1572                    }
1573                    .into()]
1574                )
1575                .build()
1576        );
1577    }
1578
1579    /// virtual addressing, aws-global region uses the global endpoint
1580    #[test]
1581    fn test_56() {
1582        let params = crate::config::endpoint::Params::builder()
1583            .region("aws-global".to_string())
1584            .bucket("bucket-name".to_string())
1585            .use_fips(false)
1586            .use_dual_stack(false)
1587            .accelerate(false)
1588            .build()
1589            .expect("invalid params");
1590        let resolver = crate::config::endpoint::DefaultResolver::new();
1591        let endpoint = resolver.resolve_endpoint(&params);
1592        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.amazonaws.com");
1593        assert_eq!(
1594            endpoint,
1595            ::aws_smithy_types::endpoint::Endpoint::builder()
1596                .url("https://bucket-name.s3.amazonaws.com")
1597                .property(
1598                    "authSchemes",
1599                    vec![{
1600                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1601                        out.insert("name".to_string(), "sigv4".to_string().into());
1602                        out.insert("signingName".to_string(), "s3".to_string().into());
1603                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1604                        out.insert("disableDoubleEncoding".to_string(), true.into());
1605                        out
1606                    }
1607                    .into()]
1608                )
1609                .build()
1610        );
1611    }
1612
1613    /// virtual addressing, aws-global region with Prefix, and Key uses the global endpoint. Prefix and Key parameters should not be used in endpoint evaluation.
1614    #[test]
1615    fn test_57() {
1616        let params = crate::config::endpoint::Params::builder()
1617            .region("aws-global".to_string())
1618            .bucket("bucket-name".to_string())
1619            .use_fips(false)
1620            .use_dual_stack(false)
1621            .accelerate(false)
1622            .prefix("prefix".to_string())
1623            .key("key".to_string())
1624            .build()
1625            .expect("invalid params");
1626        let resolver = crate::config::endpoint::DefaultResolver::new();
1627        let endpoint = resolver.resolve_endpoint(&params);
1628        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.amazonaws.com");
1629        assert_eq!(
1630            endpoint,
1631            ::aws_smithy_types::endpoint::Endpoint::builder()
1632                .url("https://bucket-name.s3.amazonaws.com")
1633                .property(
1634                    "authSchemes",
1635                    vec![{
1636                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1637                        out.insert("name".to_string(), "sigv4".to_string().into());
1638                        out.insert("signingName".to_string(), "s3".to_string().into());
1639                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1640                        out.insert("disableDoubleEncoding".to_string(), true.into());
1641                        out
1642                    }
1643                    .into()]
1644                )
1645                .build()
1646        );
1647    }
1648
1649    /// virtual addressing, aws-global region with Copy Source, and Key uses the global endpoint. Copy Source and Key parameters should not be used in endpoint evaluation.
1650    #[test]
1651    fn test_58() {
1652        let params = crate::config::endpoint::Params::builder()
1653            .region("aws-global".to_string())
1654            .bucket("bucket-name".to_string())
1655            .use_fips(false)
1656            .use_dual_stack(false)
1657            .accelerate(false)
1658            .copy_source("/copy/source".to_string())
1659            .key("key".to_string())
1660            .build()
1661            .expect("invalid params");
1662        let resolver = crate::config::endpoint::DefaultResolver::new();
1663        let endpoint = resolver.resolve_endpoint(&params);
1664        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.amazonaws.com");
1665        assert_eq!(
1666            endpoint,
1667            ::aws_smithy_types::endpoint::Endpoint::builder()
1668                .url("https://bucket-name.s3.amazonaws.com")
1669                .property(
1670                    "authSchemes",
1671                    vec![{
1672                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1673                        out.insert("name".to_string(), "sigv4".to_string().into());
1674                        out.insert("signingName".to_string(), "s3".to_string().into());
1675                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1676                        out.insert("disableDoubleEncoding".to_string(), true.into());
1677                        out
1678                    }
1679                    .into()]
1680                )
1681                .build()
1682        );
1683    }
1684
1685    /// virtual addressing, aws-global region with fips uses the regional fips endpoint
1686    #[test]
1687    fn test_59() {
1688        let params = crate::config::endpoint::Params::builder()
1689            .region("aws-global".to_string())
1690            .bucket("bucket-name".to_string())
1691            .use_fips(true)
1692            .use_dual_stack(false)
1693            .accelerate(false)
1694            .build()
1695            .expect("invalid params");
1696        let resolver = crate::config::endpoint::DefaultResolver::new();
1697        let endpoint = resolver.resolve_endpoint(&params);
1698        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.us-east-1.amazonaws.com");
1699        assert_eq!(
1700            endpoint,
1701            ::aws_smithy_types::endpoint::Endpoint::builder()
1702                .url("https://bucket-name.s3-fips.us-east-1.amazonaws.com")
1703                .property(
1704                    "authSchemes",
1705                    vec![{
1706                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1707                        out.insert("name".to_string(), "sigv4".to_string().into());
1708                        out.insert("signingName".to_string(), "s3".to_string().into());
1709                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1710                        out.insert("disableDoubleEncoding".to_string(), true.into());
1711                        out
1712                    }
1713                    .into()]
1714                )
1715                .build()
1716        );
1717    }
1718
1719    /// virtual addressing, aws-global region with dualstack uses the regional dualstack endpoint
1720    #[test]
1721    fn test_60() {
1722        let params = crate::config::endpoint::Params::builder()
1723            .region("aws-global".to_string())
1724            .bucket("bucket-name".to_string())
1725            .use_fips(false)
1726            .use_dual_stack(true)
1727            .accelerate(false)
1728            .build()
1729            .expect("invalid params");
1730        let resolver = crate::config::endpoint::DefaultResolver::new();
1731        let endpoint = resolver.resolve_endpoint(&params);
1732        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.dualstack.us-east-1.amazonaws.com");
1733        assert_eq!(
1734            endpoint,
1735            ::aws_smithy_types::endpoint::Endpoint::builder()
1736                .url("https://bucket-name.s3.dualstack.us-east-1.amazonaws.com")
1737                .property(
1738                    "authSchemes",
1739                    vec![{
1740                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1741                        out.insert("name".to_string(), "sigv4".to_string().into());
1742                        out.insert("signingName".to_string(), "s3".to_string().into());
1743                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1744                        out.insert("disableDoubleEncoding".to_string(), true.into());
1745                        out
1746                    }
1747                    .into()]
1748                )
1749                .build()
1750        );
1751    }
1752
1753    /// virtual addressing, aws-global region with fips/dualstack uses the regional fips/dualstack endpoint
1754    #[test]
1755    fn test_61() {
1756        let params = crate::config::endpoint::Params::builder()
1757            .region("aws-global".to_string())
1758            .bucket("bucket-name".to_string())
1759            .use_fips(true)
1760            .use_dual_stack(true)
1761            .accelerate(false)
1762            .build()
1763            .expect("invalid params");
1764        let resolver = crate::config::endpoint::DefaultResolver::new();
1765        let endpoint = resolver.resolve_endpoint(&params);
1766        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.dualstack.us-east-1.amazonaws.com");
1767        assert_eq!(
1768            endpoint,
1769            ::aws_smithy_types::endpoint::Endpoint::builder()
1770                .url("https://bucket-name.s3-fips.dualstack.us-east-1.amazonaws.com")
1771                .property(
1772                    "authSchemes",
1773                    vec![{
1774                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1775                        out.insert("name".to_string(), "sigv4".to_string().into());
1776                        out.insert("signingName".to_string(), "s3".to_string().into());
1777                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1778                        out.insert("disableDoubleEncoding".to_string(), true.into());
1779                        out
1780                    }
1781                    .into()]
1782                )
1783                .build()
1784        );
1785    }
1786
1787    /// virtual addressing, aws-global region with accelerate uses the global accelerate endpoint
1788    #[test]
1789    fn test_62() {
1790        let params = crate::config::endpoint::Params::builder()
1791            .region("aws-global".to_string())
1792            .bucket("bucket-name".to_string())
1793            .use_fips(false)
1794            .use_dual_stack(false)
1795            .accelerate(true)
1796            .build()
1797            .expect("invalid params");
1798        let resolver = crate::config::endpoint::DefaultResolver::new();
1799        let endpoint = resolver.resolve_endpoint(&params);
1800        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-accelerate.amazonaws.com");
1801        assert_eq!(
1802            endpoint,
1803            ::aws_smithy_types::endpoint::Endpoint::builder()
1804                .url("https://bucket-name.s3-accelerate.amazonaws.com")
1805                .property(
1806                    "authSchemes",
1807                    vec![{
1808                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1809                        out.insert("name".to_string(), "sigv4".to_string().into());
1810                        out.insert("signingName".to_string(), "s3".to_string().into());
1811                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1812                        out.insert("disableDoubleEncoding".to_string(), true.into());
1813                        out
1814                    }
1815                    .into()]
1816                )
1817                .build()
1818        );
1819    }
1820
1821    /// virtual addressing, aws-global region with custom endpoint
1822    #[test]
1823    fn test_63() {
1824        let params = crate::config::endpoint::Params::builder()
1825            .region("aws-global".to_string())
1826            .endpoint("https://example.com".to_string())
1827            .bucket("bucket-name".to_string())
1828            .use_fips(false)
1829            .use_dual_stack(false)
1830            .accelerate(false)
1831            .build()
1832            .expect("invalid params");
1833        let resolver = crate::config::endpoint::DefaultResolver::new();
1834        let endpoint = resolver.resolve_endpoint(&params);
1835        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.example.com");
1836        assert_eq!(
1837            endpoint,
1838            ::aws_smithy_types::endpoint::Endpoint::builder()
1839                .url("https://bucket-name.example.com")
1840                .property(
1841                    "authSchemes",
1842                    vec![{
1843                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1844                        out.insert("name".to_string(), "sigv4".to_string().into());
1845                        out.insert("signingName".to_string(), "s3".to_string().into());
1846                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1847                        out.insert("disableDoubleEncoding".to_string(), true.into());
1848                        out
1849                    }
1850                    .into()]
1851                )
1852                .build()
1853        );
1854    }
1855
1856    /// virtual addressing, UseGlobalEndpoint and us-east-1 region uses the global endpoint
1857    #[test]
1858    fn test_64() {
1859        let params = crate::config::endpoint::Params::builder()
1860            .region("us-east-1".to_string())
1861            .use_global_endpoint(true)
1862            .bucket("bucket-name".to_string())
1863            .use_fips(false)
1864            .use_dual_stack(false)
1865            .accelerate(false)
1866            .build()
1867            .expect("invalid params");
1868        let resolver = crate::config::endpoint::DefaultResolver::new();
1869        let endpoint = resolver.resolve_endpoint(&params);
1870        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.amazonaws.com");
1871        assert_eq!(
1872            endpoint,
1873            ::aws_smithy_types::endpoint::Endpoint::builder()
1874                .url("https://bucket-name.s3.amazonaws.com")
1875                .property(
1876                    "authSchemes",
1877                    vec![{
1878                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1879                        out.insert("name".to_string(), "sigv4".to_string().into());
1880                        out.insert("signingName".to_string(), "s3".to_string().into());
1881                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1882                        out.insert("disableDoubleEncoding".to_string(), true.into());
1883                        out
1884                    }
1885                    .into()]
1886                )
1887                .build()
1888        );
1889    }
1890
1891    /// virtual addressing, UseGlobalEndpoint and us-west-2 region uses the regional endpoint
1892    #[test]
1893    fn test_65() {
1894        let params = crate::config::endpoint::Params::builder()
1895            .region("us-west-2".to_string())
1896            .use_global_endpoint(true)
1897            .bucket("bucket-name".to_string())
1898            .use_fips(false)
1899            .use_dual_stack(false)
1900            .accelerate(false)
1901            .build()
1902            .expect("invalid params");
1903        let resolver = crate::config::endpoint::DefaultResolver::new();
1904        let endpoint = resolver.resolve_endpoint(&params);
1905        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.us-west-2.amazonaws.com");
1906        assert_eq!(
1907            endpoint,
1908            ::aws_smithy_types::endpoint::Endpoint::builder()
1909                .url("https://bucket-name.s3.us-west-2.amazonaws.com")
1910                .property(
1911                    "authSchemes",
1912                    vec![{
1913                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1914                        out.insert("name".to_string(), "sigv4".to_string().into());
1915                        out.insert("signingName".to_string(), "s3".to_string().into());
1916                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
1917                        out.insert("disableDoubleEncoding".to_string(), true.into());
1918                        out
1919                    }
1920                    .into()]
1921                )
1922                .build()
1923        );
1924    }
1925
1926    /// virtual addressing, UseGlobalEndpoint and us-east-1 region and fips uses the regional fips endpoint
1927    #[test]
1928    fn test_66() {
1929        let params = crate::config::endpoint::Params::builder()
1930            .region("us-east-1".to_string())
1931            .use_global_endpoint(true)
1932            .bucket("bucket-name".to_string())
1933            .use_fips(true)
1934            .use_dual_stack(false)
1935            .accelerate(false)
1936            .build()
1937            .expect("invalid params");
1938        let resolver = crate::config::endpoint::DefaultResolver::new();
1939        let endpoint = resolver.resolve_endpoint(&params);
1940        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.us-east-1.amazonaws.com");
1941        assert_eq!(
1942            endpoint,
1943            ::aws_smithy_types::endpoint::Endpoint::builder()
1944                .url("https://bucket-name.s3-fips.us-east-1.amazonaws.com")
1945                .property(
1946                    "authSchemes",
1947                    vec![{
1948                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1949                        out.insert("name".to_string(), "sigv4".to_string().into());
1950                        out.insert("signingName".to_string(), "s3".to_string().into());
1951                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1952                        out.insert("disableDoubleEncoding".to_string(), true.into());
1953                        out
1954                    }
1955                    .into()]
1956                )
1957                .build()
1958        );
1959    }
1960
1961    /// virtual addressing, UseGlobalEndpoint and us-east-1 region and dualstack uses the regional dualstack endpoint
1962    #[test]
1963    fn test_67() {
1964        let params = crate::config::endpoint::Params::builder()
1965            .region("us-east-1".to_string())
1966            .use_global_endpoint(true)
1967            .bucket("bucket-name".to_string())
1968            .use_fips(false)
1969            .use_dual_stack(true)
1970            .accelerate(false)
1971            .build()
1972            .expect("invalid params");
1973        let resolver = crate::config::endpoint::DefaultResolver::new();
1974        let endpoint = resolver.resolve_endpoint(&params);
1975        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.dualstack.us-east-1.amazonaws.com");
1976        assert_eq!(
1977            endpoint,
1978            ::aws_smithy_types::endpoint::Endpoint::builder()
1979                .url("https://bucket-name.s3.dualstack.us-east-1.amazonaws.com")
1980                .property(
1981                    "authSchemes",
1982                    vec![{
1983                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
1984                        out.insert("name".to_string(), "sigv4".to_string().into());
1985                        out.insert("signingName".to_string(), "s3".to_string().into());
1986                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
1987                        out.insert("disableDoubleEncoding".to_string(), true.into());
1988                        out
1989                    }
1990                    .into()]
1991                )
1992                .build()
1993        );
1994    }
1995
1996    /// virtual addressing, UseGlobalEndpoint and us-east-1 region and accelerate uses the global accelerate endpoint
1997    #[test]
1998    fn test_68() {
1999        let params = crate::config::endpoint::Params::builder()
2000            .region("us-east-1".to_string())
2001            .use_global_endpoint(true)
2002            .bucket("bucket-name".to_string())
2003            .use_fips(false)
2004            .use_dual_stack(false)
2005            .accelerate(true)
2006            .build()
2007            .expect("invalid params");
2008        let resolver = crate::config::endpoint::DefaultResolver::new();
2009        let endpoint = resolver.resolve_endpoint(&params);
2010        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-accelerate.amazonaws.com");
2011        assert_eq!(
2012            endpoint,
2013            ::aws_smithy_types::endpoint::Endpoint::builder()
2014                .url("https://bucket-name.s3-accelerate.amazonaws.com")
2015                .property(
2016                    "authSchemes",
2017                    vec![{
2018                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2019                        out.insert("name".to_string(), "sigv4".to_string().into());
2020                        out.insert("signingName".to_string(), "s3".to_string().into());
2021                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2022                        out.insert("disableDoubleEncoding".to_string(), true.into());
2023                        out
2024                    }
2025                    .into()]
2026                )
2027                .build()
2028        );
2029    }
2030
2031    /// virtual addressing, UseGlobalEndpoint and us-east-1 region with custom endpoint
2032    #[test]
2033    fn test_69() {
2034        let params = crate::config::endpoint::Params::builder()
2035            .region("us-east-1".to_string())
2036            .endpoint("https://example.com".to_string())
2037            .use_global_endpoint(true)
2038            .bucket("bucket-name".to_string())
2039            .use_fips(false)
2040            .use_dual_stack(false)
2041            .accelerate(false)
2042            .build()
2043            .expect("invalid params");
2044        let resolver = crate::config::endpoint::DefaultResolver::new();
2045        let endpoint = resolver.resolve_endpoint(&params);
2046        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.example.com");
2047        assert_eq!(
2048            endpoint,
2049            ::aws_smithy_types::endpoint::Endpoint::builder()
2050                .url("https://bucket-name.example.com")
2051                .property(
2052                    "authSchemes",
2053                    vec![{
2054                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2055                        out.insert("name".to_string(), "sigv4".to_string().into());
2056                        out.insert("signingName".to_string(), "s3".to_string().into());
2057                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2058                        out.insert("disableDoubleEncoding".to_string(), true.into());
2059                        out
2060                    }
2061                    .into()]
2062                )
2063                .build()
2064        );
2065    }
2066
2067    /// ForcePathStyle, aws-global region uses the global endpoint
2068    #[test]
2069    fn test_70() {
2070        let params = crate::config::endpoint::Params::builder()
2071            .region("aws-global".to_string())
2072            .bucket("bucket-name".to_string())
2073            .force_path_style(true)
2074            .use_fips(false)
2075            .use_dual_stack(false)
2076            .accelerate(false)
2077            .build()
2078            .expect("invalid params");
2079        let resolver = crate::config::endpoint::DefaultResolver::new();
2080        let endpoint = resolver.resolve_endpoint(&params);
2081        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com/bucket-name");
2082        assert_eq!(
2083            endpoint,
2084            ::aws_smithy_types::endpoint::Endpoint::builder()
2085                .url("https://s3.amazonaws.com/bucket-name")
2086                .property(
2087                    "authSchemes",
2088                    vec![{
2089                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2090                        out.insert("name".to_string(), "sigv4".to_string().into());
2091                        out.insert("signingName".to_string(), "s3".to_string().into());
2092                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2093                        out.insert("disableDoubleEncoding".to_string(), true.into());
2094                        out
2095                    }
2096                    .into()]
2097                )
2098                .build()
2099        );
2100    }
2101
2102    /// ForcePathStyle, aws-global region with fips is invalid
2103    #[test]
2104    fn test_71() {
2105        let params = crate::config::endpoint::Params::builder()
2106            .region("aws-global".to_string())
2107            .bucket("bucket-name".to_string())
2108            .force_path_style(true)
2109            .use_fips(true)
2110            .use_dual_stack(false)
2111            .accelerate(false)
2112            .build()
2113            .expect("invalid params");
2114        let resolver = crate::config::endpoint::DefaultResolver::new();
2115        let endpoint = resolver.resolve_endpoint(&params);
2116        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com/bucket-name");
2117        assert_eq!(
2118            endpoint,
2119            ::aws_smithy_types::endpoint::Endpoint::builder()
2120                .url("https://s3-fips.us-east-1.amazonaws.com/bucket-name")
2121                .property(
2122                    "authSchemes",
2123                    vec![{
2124                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2125                        out.insert("signingName".to_string(), "s3".to_string().into());
2126                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2127                        out.insert("disableDoubleEncoding".to_string(), true.into());
2128                        out.insert("name".to_string(), "sigv4".to_string().into());
2129                        out
2130                    }
2131                    .into()]
2132                )
2133                .build()
2134        );
2135    }
2136
2137    /// ForcePathStyle, aws-global region with dualstack uses regional dualstack endpoint
2138    #[test]
2139    fn test_72() {
2140        let params = crate::config::endpoint::Params::builder()
2141            .region("aws-global".to_string())
2142            .bucket("bucket-name".to_string())
2143            .force_path_style(true)
2144            .use_fips(false)
2145            .use_dual_stack(true)
2146            .accelerate(false)
2147            .build()
2148            .expect("invalid params");
2149        let resolver = crate::config::endpoint::DefaultResolver::new();
2150        let endpoint = resolver.resolve_endpoint(&params);
2151        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-east-1.amazonaws.com/bucket-name");
2152        assert_eq!(
2153            endpoint,
2154            ::aws_smithy_types::endpoint::Endpoint::builder()
2155                .url("https://s3.dualstack.us-east-1.amazonaws.com/bucket-name")
2156                .property(
2157                    "authSchemes",
2158                    vec![{
2159                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2160                        out.insert("name".to_string(), "sigv4".to_string().into());
2161                        out.insert("signingName".to_string(), "s3".to_string().into());
2162                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2163                        out.insert("disableDoubleEncoding".to_string(), true.into());
2164                        out
2165                    }
2166                    .into()]
2167                )
2168                .build()
2169        );
2170    }
2171
2172    /// ForcePathStyle, aws-global region custom endpoint uses the custom endpoint
2173    #[test]
2174    fn test_73() {
2175        let params = crate::config::endpoint::Params::builder()
2176            .region("aws-global".to_string())
2177            .endpoint("https://example.com".to_string())
2178            .bucket("bucket-name".to_string())
2179            .force_path_style(true)
2180            .use_fips(false)
2181            .use_dual_stack(false)
2182            .accelerate(false)
2183            .build()
2184            .expect("invalid params");
2185        let resolver = crate::config::endpoint::DefaultResolver::new();
2186        let endpoint = resolver.resolve_endpoint(&params);
2187        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com/bucket-name");
2188        assert_eq!(
2189            endpoint,
2190            ::aws_smithy_types::endpoint::Endpoint::builder()
2191                .url("https://example.com/bucket-name")
2192                .property(
2193                    "authSchemes",
2194                    vec![{
2195                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2196                        out.insert("name".to_string(), "sigv4".to_string().into());
2197                        out.insert("signingName".to_string(), "s3".to_string().into());
2198                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2199                        out.insert("disableDoubleEncoding".to_string(), true.into());
2200                        out
2201                    }
2202                    .into()]
2203                )
2204                .build()
2205        );
2206    }
2207
2208    /// ForcePathStyle, UseGlobalEndpoint us-east-1 region uses the global endpoint
2209    #[test]
2210    fn test_74() {
2211        let params = crate::config::endpoint::Params::builder()
2212            .region("us-east-1".to_string())
2213            .bucket("bucket-name".to_string())
2214            .use_global_endpoint(true)
2215            .force_path_style(true)
2216            .use_fips(false)
2217            .use_dual_stack(false)
2218            .accelerate(false)
2219            .build()
2220            .expect("invalid params");
2221        let resolver = crate::config::endpoint::DefaultResolver::new();
2222        let endpoint = resolver.resolve_endpoint(&params);
2223        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com/bucket-name");
2224        assert_eq!(
2225            endpoint,
2226            ::aws_smithy_types::endpoint::Endpoint::builder()
2227                .url("https://s3.amazonaws.com/bucket-name")
2228                .property(
2229                    "authSchemes",
2230                    vec![{
2231                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2232                        out.insert("name".to_string(), "sigv4".to_string().into());
2233                        out.insert("signingName".to_string(), "s3".to_string().into());
2234                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2235                        out.insert("disableDoubleEncoding".to_string(), true.into());
2236                        out
2237                    }
2238                    .into()]
2239                )
2240                .build()
2241        );
2242    }
2243
2244    /// ForcePathStyle, UseGlobalEndpoint us-west-2 region uses the regional endpoint
2245    #[test]
2246    fn test_75() {
2247        let params = crate::config::endpoint::Params::builder()
2248            .region("us-west-2".to_string())
2249            .bucket("bucket-name".to_string())
2250            .use_global_endpoint(true)
2251            .force_path_style(true)
2252            .use_fips(false)
2253            .use_dual_stack(false)
2254            .accelerate(false)
2255            .build()
2256            .expect("invalid params");
2257        let resolver = crate::config::endpoint::DefaultResolver::new();
2258        let endpoint = resolver.resolve_endpoint(&params);
2259        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com/bucket-name");
2260        assert_eq!(
2261            endpoint,
2262            ::aws_smithy_types::endpoint::Endpoint::builder()
2263                .url("https://s3.us-west-2.amazonaws.com/bucket-name")
2264                .property(
2265                    "authSchemes",
2266                    vec![{
2267                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2268                        out.insert("name".to_string(), "sigv4".to_string().into());
2269                        out.insert("signingName".to_string(), "s3".to_string().into());
2270                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2271                        out.insert("disableDoubleEncoding".to_string(), true.into());
2272                        out
2273                    }
2274                    .into()]
2275                )
2276                .build()
2277        );
2278    }
2279
2280    /// ForcePathStyle, UseGlobalEndpoint us-east-1 region, dualstack uses the regional dualstack endpoint
2281    #[test]
2282    fn test_76() {
2283        let params = crate::config::endpoint::Params::builder()
2284            .region("us-east-1".to_string())
2285            .bucket("bucket-name".to_string())
2286            .use_global_endpoint(true)
2287            .force_path_style(true)
2288            .use_fips(false)
2289            .use_dual_stack(true)
2290            .accelerate(false)
2291            .build()
2292            .expect("invalid params");
2293        let resolver = crate::config::endpoint::DefaultResolver::new();
2294        let endpoint = resolver.resolve_endpoint(&params);
2295        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-east-1.amazonaws.com/bucket-name");
2296        assert_eq!(
2297            endpoint,
2298            ::aws_smithy_types::endpoint::Endpoint::builder()
2299                .url("https://s3.dualstack.us-east-1.amazonaws.com/bucket-name")
2300                .property(
2301                    "authSchemes",
2302                    vec![{
2303                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2304                        out.insert("name".to_string(), "sigv4".to_string().into());
2305                        out.insert("signingName".to_string(), "s3".to_string().into());
2306                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2307                        out.insert("disableDoubleEncoding".to_string(), true.into());
2308                        out
2309                    }
2310                    .into()]
2311                )
2312                .build()
2313        );
2314    }
2315
2316    /// ForcePathStyle, UseGlobalEndpoint us-east-1 region custom endpoint uses the custom endpoint
2317    #[test]
2318    fn test_77() {
2319        let params = crate::config::endpoint::Params::builder()
2320            .region("us-east-1".to_string())
2321            .bucket("bucket-name".to_string())
2322            .endpoint("https://example.com".to_string())
2323            .use_global_endpoint(true)
2324            .force_path_style(true)
2325            .use_fips(false)
2326            .use_dual_stack(false)
2327            .accelerate(false)
2328            .build()
2329            .expect("invalid params");
2330        let resolver = crate::config::endpoint::DefaultResolver::new();
2331        let endpoint = resolver.resolve_endpoint(&params);
2332        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com/bucket-name");
2333        assert_eq!(
2334            endpoint,
2335            ::aws_smithy_types::endpoint::Endpoint::builder()
2336                .url("https://example.com/bucket-name")
2337                .property(
2338                    "authSchemes",
2339                    vec![{
2340                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2341                        out.insert("name".to_string(), "sigv4".to_string().into());
2342                        out.insert("signingName".to_string(), "s3".to_string().into());
2343                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2344                        out.insert("disableDoubleEncoding".to_string(), true.into());
2345                        out
2346                    }
2347                    .into()]
2348                )
2349                .build()
2350        );
2351    }
2352
2353    /// ARN with aws-global region and  UseArnRegion uses the regional endpoint
2354    #[test]
2355    fn test_78() {
2356        let params = crate::config::endpoint::Params::builder()
2357            .region("aws-global".to_string())
2358            .use_arn_region(true)
2359            .use_fips(false)
2360            .use_dual_stack(false)
2361            .accelerate(false)
2362            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
2363            .build()
2364            .expect("invalid params");
2365        let resolver = crate::config::endpoint::DefaultResolver::new();
2366        let endpoint = resolver.resolve_endpoint(&params);
2367        let endpoint =
2368            endpoint.expect("Expected valid endpoint: https://reports-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com");
2369        assert_eq!(
2370            endpoint,
2371            ::aws_smithy_types::endpoint::Endpoint::builder()
2372                .url("https://reports-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com")
2373                .property(
2374                    "authSchemes",
2375                    vec![
2376                        {
2377                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2378                            out.insert("name".to_string(), "sigv4a".to_string().into());
2379                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
2380                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
2381                            out.insert("disableDoubleEncoding".to_string(), true.into());
2382                            out
2383                        }
2384                        .into(),
2385                        {
2386                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2387                            out.insert("name".to_string(), "sigv4".to_string().into());
2388                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
2389                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2390                            out.insert("disableDoubleEncoding".to_string(), true.into());
2391                            out
2392                        }
2393                        .into()
2394                    ]
2395                )
2396                .build()
2397        );
2398    }
2399
2400    /// cross partition MRAP ARN is an error
2401    #[test]
2402    fn test_79() {
2403        let params = crate::config::endpoint::Params::builder()
2404            .bucket("arn:aws-cn:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap".to_string())
2405            .region("us-west-1".to_string())
2406            .build()
2407            .expect("invalid params");
2408        let resolver = crate::config::endpoint::DefaultResolver::new();
2409        let endpoint = resolver.resolve_endpoint(&params);
2410        let error = endpoint.expect_err("expected error: Client was configured for partition `aws` but bucket referred to partition `aws-cn` [cross partition MRAP ARN is an error]");
2411        assert_eq!(
2412            format!("{}", error),
2413            "Client was configured for partition `aws` but bucket referred to partition `aws-cn`"
2414        )
2415    }
2416
2417    /// Endpoint override, accesspoint with HTTP, port
2418    #[test]
2419    fn test_80() {
2420        let params = crate::config::endpoint::Params::builder()
2421            .endpoint("http://beta.example.com:1234".to_string())
2422            .region("us-west-2".to_string())
2423            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
2424            .build()
2425            .expect("invalid params");
2426        let resolver = crate::config::endpoint::DefaultResolver::new();
2427        let endpoint = resolver.resolve_endpoint(&params);
2428        let endpoint = endpoint.expect("Expected valid endpoint: http://myendpoint-123456789012.beta.example.com:1234");
2429        assert_eq!(
2430            endpoint,
2431            ::aws_smithy_types::endpoint::Endpoint::builder()
2432                .url("http://myendpoint-123456789012.beta.example.com:1234")
2433                .property(
2434                    "authSchemes",
2435                    vec![{
2436                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2437                        out.insert("name".to_string(), "sigv4".to_string().into());
2438                        out.insert("signingName".to_string(), "s3".to_string().into());
2439                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2440                        out.insert("disableDoubleEncoding".to_string(), true.into());
2441                        out
2442                    }
2443                    .into()]
2444                )
2445                .build()
2446        );
2447    }
2448
2449    /// Endpoint override, accesspoint with http, path, query, and port
2450    #[test]
2451    fn test_81() {
2452        let params = crate::config::endpoint::Params::builder()
2453            .region("us-west-2".to_string())
2454            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
2455            .endpoint("http://beta.example.com:1234/path".to_string())
2456            .use_fips(false)
2457            .use_dual_stack(false)
2458            .accelerate(false)
2459            .build()
2460            .expect("invalid params");
2461        let resolver = crate::config::endpoint::DefaultResolver::new();
2462        let endpoint = resolver.resolve_endpoint(&params);
2463        let endpoint = endpoint.expect("Expected valid endpoint: http://myendpoint-123456789012.beta.example.com:1234/path");
2464        assert_eq!(
2465            endpoint,
2466            ::aws_smithy_types::endpoint::Endpoint::builder()
2467                .url("http://myendpoint-123456789012.beta.example.com:1234/path")
2468                .property(
2469                    "authSchemes",
2470                    vec![{
2471                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2472                        out.insert("name".to_string(), "sigv4".to_string().into());
2473                        out.insert("signingName".to_string(), "s3".to_string().into());
2474                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2475                        out.insert("disableDoubleEncoding".to_string(), true.into());
2476                        out
2477                    }
2478                    .into()]
2479                )
2480                .build()
2481        );
2482    }
2483
2484    /// non-bucket endpoint override with FIPS = error
2485    #[test]
2486    fn test_82() {
2487        let params = crate::config::endpoint::Params::builder()
2488            .region("us-west-2".to_string())
2489            .endpoint("http://beta.example.com:1234/path".to_string())
2490            .use_fips(true)
2491            .use_dual_stack(false)
2492            .build()
2493            .expect("invalid params");
2494        let resolver = crate::config::endpoint::DefaultResolver::new();
2495        let endpoint = resolver.resolve_endpoint(&params);
2496        let error =
2497            endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [non-bucket endpoint override with FIPS = error]");
2498        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
2499    }
2500
2501    /// FIPS + dualstack + custom endpoint
2502    #[test]
2503    fn test_83() {
2504        let params = crate::config::endpoint::Params::builder()
2505            .region("us-west-2".to_string())
2506            .endpoint("http://beta.example.com:1234/path".to_string())
2507            .use_fips(true)
2508            .use_dual_stack(true)
2509            .build()
2510            .expect("invalid params");
2511        let resolver = crate::config::endpoint::DefaultResolver::new();
2512        let endpoint = resolver.resolve_endpoint(&params);
2513        let error =
2514            endpoint.expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [FIPS + dualstack + custom endpoint]");
2515        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
2516    }
2517
2518    /// dualstack + custom endpoint
2519    #[test]
2520    fn test_84() {
2521        let params = crate::config::endpoint::Params::builder()
2522            .region("us-west-2".to_string())
2523            .endpoint("http://beta.example.com:1234/path".to_string())
2524            .use_fips(false)
2525            .use_dual_stack(true)
2526            .build()
2527            .expect("invalid params");
2528        let resolver = crate::config::endpoint::DefaultResolver::new();
2529        let endpoint = resolver.resolve_endpoint(&params);
2530        let error = endpoint.expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [dualstack + custom endpoint]");
2531        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
2532    }
2533
2534    /// custom endpoint without FIPS/dualstack
2535    #[test]
2536    fn test_85() {
2537        let params = crate::config::endpoint::Params::builder()
2538            .region("us-west-2".to_string())
2539            .endpoint("http://beta.example.com:1234/path".to_string())
2540            .use_fips(false)
2541            .use_dual_stack(false)
2542            .build()
2543            .expect("invalid params");
2544        let resolver = crate::config::endpoint::DefaultResolver::new();
2545        let endpoint = resolver.resolve_endpoint(&params);
2546        let endpoint = endpoint.expect("Expected valid endpoint: http://beta.example.com:1234/path");
2547        assert_eq!(
2548            endpoint,
2549            ::aws_smithy_types::endpoint::Endpoint::builder()
2550                .url("http://beta.example.com:1234/path")
2551                .property(
2552                    "authSchemes",
2553                    vec![{
2554                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2555                        out.insert("name".to_string(), "sigv4".to_string().into());
2556                        out.insert("signingName".to_string(), "s3".to_string().into());
2557                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2558                        out.insert("disableDoubleEncoding".to_string(), true.into());
2559                        out
2560                    }
2561                    .into()]
2562                )
2563                .build()
2564        );
2565    }
2566
2567    /// s3 object lambda with access points disabled
2568    #[test]
2569    fn test_86() {
2570        let params = crate::config::endpoint::Params::builder()
2571            .region("us-west-2".to_string())
2572            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:myendpoint".to_string())
2573            .disable_access_points(true)
2574            .build()
2575            .expect("invalid params");
2576        let resolver = crate::config::endpoint::DefaultResolver::new();
2577        let endpoint = resolver.resolve_endpoint(&params);
2578        let error =
2579            endpoint.expect_err("expected error: Access points are not supported for this operation [s3 object lambda with access points disabled]");
2580        assert_eq!(format!("{}", error), "Access points are not supported for this operation")
2581    }
2582
2583    /// non bucket + FIPS
2584    #[test]
2585    fn test_87() {
2586        let params = crate::config::endpoint::Params::builder()
2587            .region("us-west-2".to_string())
2588            .use_fips(true)
2589            .use_dual_stack(false)
2590            .build()
2591            .expect("invalid params");
2592        let resolver = crate::config::endpoint::DefaultResolver::new();
2593        let endpoint = resolver.resolve_endpoint(&params);
2594        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-west-2.amazonaws.com");
2595        assert_eq!(
2596            endpoint,
2597            ::aws_smithy_types::endpoint::Endpoint::builder()
2598                .url("https://s3-fips.us-west-2.amazonaws.com")
2599                .property(
2600                    "authSchemes",
2601                    vec![{
2602                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2603                        out.insert("name".to_string(), "sigv4".to_string().into());
2604                        out.insert("signingName".to_string(), "s3".to_string().into());
2605                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2606                        out.insert("disableDoubleEncoding".to_string(), true.into());
2607                        out
2608                    }
2609                    .into()]
2610                )
2611                .build()
2612        );
2613    }
2614
2615    /// standard non bucket endpoint
2616    #[test]
2617    fn test_88() {
2618        let params = crate::config::endpoint::Params::builder()
2619            .region("us-west-2".to_string())
2620            .use_fips(false)
2621            .use_dual_stack(false)
2622            .build()
2623            .expect("invalid params");
2624        let resolver = crate::config::endpoint::DefaultResolver::new();
2625        let endpoint = resolver.resolve_endpoint(&params);
2626        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com");
2627        assert_eq!(
2628            endpoint,
2629            ::aws_smithy_types::endpoint::Endpoint::builder()
2630                .url("https://s3.us-west-2.amazonaws.com")
2631                .property(
2632                    "authSchemes",
2633                    vec![{
2634                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2635                        out.insert("name".to_string(), "sigv4".to_string().into());
2636                        out.insert("signingName".to_string(), "s3".to_string().into());
2637                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2638                        out.insert("disableDoubleEncoding".to_string(), true.into());
2639                        out
2640                    }
2641                    .into()]
2642                )
2643                .build()
2644        );
2645    }
2646
2647    /// non bucket endpoint with FIPS + Dualstack
2648    #[test]
2649    fn test_89() {
2650        let params = crate::config::endpoint::Params::builder()
2651            .region("us-west-2".to_string())
2652            .use_fips(true)
2653            .use_dual_stack(true)
2654            .build()
2655            .expect("invalid params");
2656        let resolver = crate::config::endpoint::DefaultResolver::new();
2657        let endpoint = resolver.resolve_endpoint(&params);
2658        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-west-2.amazonaws.com");
2659        assert_eq!(
2660            endpoint,
2661            ::aws_smithy_types::endpoint::Endpoint::builder()
2662                .url("https://s3-fips.dualstack.us-west-2.amazonaws.com")
2663                .property(
2664                    "authSchemes",
2665                    vec![{
2666                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2667                        out.insert("name".to_string(), "sigv4".to_string().into());
2668                        out.insert("signingName".to_string(), "s3".to_string().into());
2669                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2670                        out.insert("disableDoubleEncoding".to_string(), true.into());
2671                        out
2672                    }
2673                    .into()]
2674                )
2675                .build()
2676        );
2677    }
2678
2679    /// non bucket endpoint with dualstack
2680    #[test]
2681    fn test_90() {
2682        let params = crate::config::endpoint::Params::builder()
2683            .region("us-west-2".to_string())
2684            .use_fips(false)
2685            .use_dual_stack(true)
2686            .build()
2687            .expect("invalid params");
2688        let resolver = crate::config::endpoint::DefaultResolver::new();
2689        let endpoint = resolver.resolve_endpoint(&params);
2690        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-west-2.amazonaws.com");
2691        assert_eq!(
2692            endpoint,
2693            ::aws_smithy_types::endpoint::Endpoint::builder()
2694                .url("https://s3.dualstack.us-west-2.amazonaws.com")
2695                .property(
2696                    "authSchemes",
2697                    vec![{
2698                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2699                        out.insert("name".to_string(), "sigv4".to_string().into());
2700                        out.insert("signingName".to_string(), "s3".to_string().into());
2701                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
2702                        out.insert("disableDoubleEncoding".to_string(), true.into());
2703                        out
2704                    }
2705                    .into()]
2706                )
2707                .build()
2708        );
2709    }
2710
2711    /// use global endpoint + IP address endpoint override
2712    #[test]
2713    fn test_91() {
2714        let params = crate::config::endpoint::Params::builder()
2715            .region("us-east-1".to_string())
2716            .bucket("bucket".to_string())
2717            .use_fips(false)
2718            .use_dual_stack(false)
2719            .endpoint("http://127.0.0.1".to_string())
2720            .use_global_endpoint(true)
2721            .build()
2722            .expect("invalid params");
2723        let resolver = crate::config::endpoint::DefaultResolver::new();
2724        let endpoint = resolver.resolve_endpoint(&params);
2725        let endpoint = endpoint.expect("Expected valid endpoint: http://127.0.0.1/bucket");
2726        assert_eq!(
2727            endpoint,
2728            ::aws_smithy_types::endpoint::Endpoint::builder()
2729                .url("http://127.0.0.1/bucket")
2730                .property(
2731                    "authSchemes",
2732                    vec![{
2733                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2734                        out.insert("name".to_string(), "sigv4".to_string().into());
2735                        out.insert("signingName".to_string(), "s3".to_string().into());
2736                        out.insert("disableDoubleEncoding".to_string(), true.into());
2737                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2738                        out
2739                    }
2740                    .into()]
2741                )
2742                .build()
2743        );
2744    }
2745
2746    /// non-dns endpoint + global endpoint
2747    #[test]
2748    fn test_92() {
2749        let params = crate::config::endpoint::Params::builder()
2750            .region("us-east-1".to_string())
2751            .bucket("bucket!".to_string())
2752            .use_fips(false)
2753            .use_dual_stack(false)
2754            .use_global_endpoint(true)
2755            .build()
2756            .expect("invalid params");
2757        let resolver = crate::config::endpoint::DefaultResolver::new();
2758        let endpoint = resolver.resolve_endpoint(&params);
2759        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com/bucket%21");
2760        assert_eq!(
2761            endpoint,
2762            ::aws_smithy_types::endpoint::Endpoint::builder()
2763                .url("https://s3.amazonaws.com/bucket%21")
2764                .property(
2765                    "authSchemes",
2766                    vec![{
2767                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2768                        out.insert("name".to_string(), "sigv4".to_string().into());
2769                        out.insert("signingName".to_string(), "s3".to_string().into());
2770                        out.insert("disableDoubleEncoding".to_string(), true.into());
2771                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2772                        out
2773                    }
2774                    .into()]
2775                )
2776                .build()
2777        );
2778    }
2779
2780    /// endpoint override + use global endpoint
2781    #[test]
2782    fn test_93() {
2783        let params = crate::config::endpoint::Params::builder()
2784            .region("us-east-1".to_string())
2785            .bucket("bucket!".to_string())
2786            .use_fips(false)
2787            .use_dual_stack(false)
2788            .use_global_endpoint(true)
2789            .endpoint("http://foo.com".to_string())
2790            .build()
2791            .expect("invalid params");
2792        let resolver = crate::config::endpoint::DefaultResolver::new();
2793        let endpoint = resolver.resolve_endpoint(&params);
2794        let endpoint = endpoint.expect("Expected valid endpoint: http://foo.com/bucket%21");
2795        assert_eq!(
2796            endpoint,
2797            ::aws_smithy_types::endpoint::Endpoint::builder()
2798                .url("http://foo.com/bucket%21")
2799                .property(
2800                    "authSchemes",
2801                    vec![{
2802                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2803                        out.insert("name".to_string(), "sigv4".to_string().into());
2804                        out.insert("signingName".to_string(), "s3".to_string().into());
2805                        out.insert("disableDoubleEncoding".to_string(), true.into());
2806                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2807                        out
2808                    }
2809                    .into()]
2810                )
2811                .build()
2812        );
2813    }
2814
2815    /// FIPS + dualstack + non-bucket endpoint
2816    #[test]
2817    fn test_94() {
2818        let params = crate::config::endpoint::Params::builder()
2819            .region("us-east-1".to_string())
2820            .bucket("bucket!".to_string())
2821            .use_fips(true)
2822            .use_dual_stack(true)
2823            .build()
2824            .expect("invalid params");
2825        let resolver = crate::config::endpoint::DefaultResolver::new();
2826        let endpoint = resolver.resolve_endpoint(&params);
2827        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21");
2828        assert_eq!(
2829            endpoint,
2830            ::aws_smithy_types::endpoint::Endpoint::builder()
2831                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21")
2832                .property(
2833                    "authSchemes",
2834                    vec![{
2835                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2836                        out.insert("name".to_string(), "sigv4".to_string().into());
2837                        out.insert("signingName".to_string(), "s3".to_string().into());
2838                        out.insert("disableDoubleEncoding".to_string(), true.into());
2839                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2840                        out
2841                    }
2842                    .into()]
2843                )
2844                .build()
2845        );
2846    }
2847
2848    /// FIPS + dualstack + non-DNS endpoint
2849    #[test]
2850    fn test_95() {
2851        let params = crate::config::endpoint::Params::builder()
2852            .region("us-east-1".to_string())
2853            .bucket("bucket!".to_string())
2854            .force_path_style(true)
2855            .use_fips(true)
2856            .use_dual_stack(true)
2857            .build()
2858            .expect("invalid params");
2859        let resolver = crate::config::endpoint::DefaultResolver::new();
2860        let endpoint = resolver.resolve_endpoint(&params);
2861        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21");
2862        assert_eq!(
2863            endpoint,
2864            ::aws_smithy_types::endpoint::Endpoint::builder()
2865                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21")
2866                .property(
2867                    "authSchemes",
2868                    vec![{
2869                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2870                        out.insert("name".to_string(), "sigv4".to_string().into());
2871                        out.insert("signingName".to_string(), "s3".to_string().into());
2872                        out.insert("disableDoubleEncoding".to_string(), true.into());
2873                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2874                        out
2875                    }
2876                    .into()]
2877                )
2878                .build()
2879        );
2880    }
2881
2882    /// endpoint override + FIPS + dualstack (BUG)
2883    #[test]
2884    fn test_96() {
2885        let params = crate::config::endpoint::Params::builder()
2886            .region("us-east-1".to_string())
2887            .bucket("bucket!".to_string())
2888            .force_path_style(true)
2889            .use_fips(true)
2890            .use_dual_stack(false)
2891            .endpoint("http://foo.com".to_string())
2892            .build()
2893            .expect("invalid params");
2894        let resolver = crate::config::endpoint::DefaultResolver::new();
2895        let endpoint = resolver.resolve_endpoint(&params);
2896        let error =
2897            endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [endpoint override + FIPS + dualstack (BUG)]");
2898        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
2899    }
2900
2901    /// endpoint override + non-dns bucket + FIPS (BUG)
2902    #[test]
2903    fn test_97() {
2904        let params = crate::config::endpoint::Params::builder()
2905            .region("us-east-1".to_string())
2906            .bucket("bucket!".to_string())
2907            .use_fips(true)
2908            .use_dual_stack(false)
2909            .endpoint("http://foo.com".to_string())
2910            .build()
2911            .expect("invalid params");
2912        let resolver = crate::config::endpoint::DefaultResolver::new();
2913        let endpoint = resolver.resolve_endpoint(&params);
2914        let error =
2915            endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [endpoint override + non-dns bucket + FIPS (BUG)]");
2916        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
2917    }
2918
2919    /// FIPS + bucket endpoint + force path style
2920    #[test]
2921    fn test_98() {
2922        let params = crate::config::endpoint::Params::builder()
2923            .region("us-east-1".to_string())
2924            .bucket("bucket!".to_string())
2925            .force_path_style(true)
2926            .use_fips(true)
2927            .use_dual_stack(false)
2928            .use_global_endpoint(true)
2929            .build()
2930            .expect("invalid params");
2931        let resolver = crate::config::endpoint::DefaultResolver::new();
2932        let endpoint = resolver.resolve_endpoint(&params);
2933        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com/bucket%21");
2934        assert_eq!(
2935            endpoint,
2936            ::aws_smithy_types::endpoint::Endpoint::builder()
2937                .url("https://s3-fips.us-east-1.amazonaws.com/bucket%21")
2938                .property(
2939                    "authSchemes",
2940                    vec![{
2941                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2942                        out.insert("name".to_string(), "sigv4".to_string().into());
2943                        out.insert("signingName".to_string(), "s3".to_string().into());
2944                        out.insert("disableDoubleEncoding".to_string(), true.into());
2945                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2946                        out
2947                    }
2948                    .into()]
2949                )
2950                .build()
2951        );
2952    }
2953
2954    /// bucket + FIPS + force path style
2955    #[test]
2956    fn test_99() {
2957        let params = crate::config::endpoint::Params::builder()
2958            .region("us-east-1".to_string())
2959            .bucket("bucket".to_string())
2960            .force_path_style(true)
2961            .use_fips(true)
2962            .use_dual_stack(true)
2963            .use_global_endpoint(true)
2964            .build()
2965            .expect("invalid params");
2966        let resolver = crate::config::endpoint::DefaultResolver::new();
2967        let endpoint = resolver.resolve_endpoint(&params);
2968        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket");
2969        assert_eq!(
2970            endpoint,
2971            ::aws_smithy_types::endpoint::Endpoint::builder()
2972                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket")
2973                .property(
2974                    "authSchemes",
2975                    vec![{
2976                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
2977                        out.insert("name".to_string(), "sigv4".to_string().into());
2978                        out.insert("signingName".to_string(), "s3".to_string().into());
2979                        out.insert("disableDoubleEncoding".to_string(), true.into());
2980                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
2981                        out
2982                    }
2983                    .into()]
2984                )
2985                .build()
2986        );
2987    }
2988
2989    /// FIPS + dualstack + use global endpoint
2990    #[test]
2991    fn test_100() {
2992        let params = crate::config::endpoint::Params::builder()
2993            .region("us-east-1".to_string())
2994            .bucket("bucket".to_string())
2995            .use_fips(true)
2996            .use_dual_stack(true)
2997            .use_global_endpoint(true)
2998            .build()
2999            .expect("invalid params");
3000        let resolver = crate::config::endpoint::DefaultResolver::new();
3001        let endpoint = resolver.resolve_endpoint(&params);
3002        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket.s3-fips.dualstack.us-east-1.amazonaws.com");
3003        assert_eq!(
3004            endpoint,
3005            ::aws_smithy_types::endpoint::Endpoint::builder()
3006                .url("https://bucket.s3-fips.dualstack.us-east-1.amazonaws.com")
3007                .property(
3008                    "authSchemes",
3009                    vec![{
3010                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3011                        out.insert("name".to_string(), "sigv4".to_string().into());
3012                        out.insert("signingName".to_string(), "s3".to_string().into());
3013                        out.insert("disableDoubleEncoding".to_string(), true.into());
3014                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3015                        out
3016                    }
3017                    .into()]
3018                )
3019                .build()
3020        );
3021    }
3022
3023    /// URI encoded bucket + use global endpoint
3024    #[test]
3025    fn test_101() {
3026        let params = crate::config::endpoint::Params::builder()
3027            .region("us-east-1".to_string())
3028            .bucket("bucket!".to_string())
3029            .use_fips(true)
3030            .use_dual_stack(false)
3031            .use_global_endpoint(true)
3032            .endpoint("https://foo.com".to_string())
3033            .build()
3034            .expect("invalid params");
3035        let resolver = crate::config::endpoint::DefaultResolver::new();
3036        let endpoint = resolver.resolve_endpoint(&params);
3037        let error = endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [URI encoded bucket + use global endpoint]");
3038        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
3039    }
3040
3041    /// FIPS + path based endpoint
3042    #[test]
3043    fn test_102() {
3044        let params = crate::config::endpoint::Params::builder()
3045            .region("us-east-1".to_string())
3046            .bucket("bucket!".to_string())
3047            .use_fips(true)
3048            .use_dual_stack(false)
3049            .accelerate(false)
3050            .use_global_endpoint(true)
3051            .build()
3052            .expect("invalid params");
3053        let resolver = crate::config::endpoint::DefaultResolver::new();
3054        let endpoint = resolver.resolve_endpoint(&params);
3055        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com/bucket%21");
3056        assert_eq!(
3057            endpoint,
3058            ::aws_smithy_types::endpoint::Endpoint::builder()
3059                .url("https://s3-fips.us-east-1.amazonaws.com/bucket%21")
3060                .property(
3061                    "authSchemes",
3062                    vec![{
3063                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3064                        out.insert("name".to_string(), "sigv4".to_string().into());
3065                        out.insert("signingName".to_string(), "s3".to_string().into());
3066                        out.insert("disableDoubleEncoding".to_string(), true.into());
3067                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3068                        out
3069                    }
3070                    .into()]
3071                )
3072                .build()
3073        );
3074    }
3075
3076    /// accelerate + dualstack + global endpoint
3077    #[test]
3078    fn test_103() {
3079        let params = crate::config::endpoint::Params::builder()
3080            .region("us-east-1".to_string())
3081            .bucket("bucket".to_string())
3082            .use_fips(false)
3083            .use_dual_stack(true)
3084            .accelerate(true)
3085            .use_global_endpoint(true)
3086            .build()
3087            .expect("invalid params");
3088        let resolver = crate::config::endpoint::DefaultResolver::new();
3089        let endpoint = resolver.resolve_endpoint(&params);
3090        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket.s3-accelerate.dualstack.amazonaws.com");
3091        assert_eq!(
3092            endpoint,
3093            ::aws_smithy_types::endpoint::Endpoint::builder()
3094                .url("https://bucket.s3-accelerate.dualstack.amazonaws.com")
3095                .property(
3096                    "authSchemes",
3097                    vec![{
3098                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3099                        out.insert("name".to_string(), "sigv4".to_string().into());
3100                        out.insert("signingName".to_string(), "s3".to_string().into());
3101                        out.insert("disableDoubleEncoding".to_string(), true.into());
3102                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3103                        out
3104                    }
3105                    .into()]
3106                )
3107                .build()
3108        );
3109    }
3110
3111    /// dualstack + global endpoint + non URI safe bucket
3112    #[test]
3113    fn test_104() {
3114        let params = crate::config::endpoint::Params::builder()
3115            .region("us-east-1".to_string())
3116            .bucket("bucket!".to_string())
3117            .accelerate(false)
3118            .use_dual_stack(true)
3119            .use_fips(false)
3120            .use_global_endpoint(true)
3121            .build()
3122            .expect("invalid params");
3123        let resolver = crate::config::endpoint::DefaultResolver::new();
3124        let endpoint = resolver.resolve_endpoint(&params);
3125        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-east-1.amazonaws.com/bucket%21");
3126        assert_eq!(
3127            endpoint,
3128            ::aws_smithy_types::endpoint::Endpoint::builder()
3129                .url("https://s3.dualstack.us-east-1.amazonaws.com/bucket%21")
3130                .property(
3131                    "authSchemes",
3132                    vec![{
3133                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3134                        out.insert("name".to_string(), "sigv4".to_string().into());
3135                        out.insert("signingName".to_string(), "s3".to_string().into());
3136                        out.insert("disableDoubleEncoding".to_string(), true.into());
3137                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3138                        out
3139                    }
3140                    .into()]
3141                )
3142                .build()
3143        );
3144    }
3145
3146    /// FIPS + uri encoded bucket
3147    #[test]
3148    fn test_105() {
3149        let params = crate::config::endpoint::Params::builder()
3150            .region("us-east-1".to_string())
3151            .bucket("bucket!".to_string())
3152            .force_path_style(true)
3153            .accelerate(false)
3154            .use_dual_stack(false)
3155            .use_fips(true)
3156            .use_global_endpoint(true)
3157            .build()
3158            .expect("invalid params");
3159        let resolver = crate::config::endpoint::DefaultResolver::new();
3160        let endpoint = resolver.resolve_endpoint(&params);
3161        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com/bucket%21");
3162        assert_eq!(
3163            endpoint,
3164            ::aws_smithy_types::endpoint::Endpoint::builder()
3165                .url("https://s3-fips.us-east-1.amazonaws.com/bucket%21")
3166                .property(
3167                    "authSchemes",
3168                    vec![{
3169                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3170                        out.insert("name".to_string(), "sigv4".to_string().into());
3171                        out.insert("signingName".to_string(), "s3".to_string().into());
3172                        out.insert("disableDoubleEncoding".to_string(), true.into());
3173                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3174                        out
3175                    }
3176                    .into()]
3177                )
3178                .build()
3179        );
3180    }
3181
3182    /// endpoint override + non-uri safe endpoint + force path style
3183    #[test]
3184    fn test_106() {
3185        let params = crate::config::endpoint::Params::builder()
3186            .region("us-east-1".to_string())
3187            .bucket("bucket!".to_string())
3188            .force_path_style(true)
3189            .accelerate(false)
3190            .use_dual_stack(false)
3191            .use_fips(true)
3192            .endpoint("http://foo.com".to_string())
3193            .use_global_endpoint(true)
3194            .build()
3195            .expect("invalid params");
3196        let resolver = crate::config::endpoint::DefaultResolver::new();
3197        let endpoint = resolver.resolve_endpoint(&params);
3198        let error = endpoint.expect_err(
3199            "expected error: A custom endpoint cannot be combined with FIPS [endpoint override + non-uri safe endpoint + force path style]",
3200        );
3201        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
3202    }
3203
3204    /// FIPS + Dualstack + global endpoint + non-dns bucket
3205    #[test]
3206    fn test_107() {
3207        let params = crate::config::endpoint::Params::builder()
3208            .region("us-east-1".to_string())
3209            .bucket("bucket!".to_string())
3210            .accelerate(false)
3211            .use_dual_stack(true)
3212            .use_fips(true)
3213            .use_global_endpoint(true)
3214            .build()
3215            .expect("invalid params");
3216        let resolver = crate::config::endpoint::DefaultResolver::new();
3217        let endpoint = resolver.resolve_endpoint(&params);
3218        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21");
3219        assert_eq!(
3220            endpoint,
3221            ::aws_smithy_types::endpoint::Endpoint::builder()
3222                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21")
3223                .property(
3224                    "authSchemes",
3225                    vec![{
3226                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3227                        out.insert("name".to_string(), "sigv4".to_string().into());
3228                        out.insert("signingName".to_string(), "s3".to_string().into());
3229                        out.insert("disableDoubleEncoding".to_string(), true.into());
3230                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3231                        out
3232                    }
3233                    .into()]
3234                )
3235                .build()
3236        );
3237    }
3238
3239    /// endpoint override + FIPS + dualstack
3240    #[test]
3241    fn test_108() {
3242        let params = crate::config::endpoint::Params::builder()
3243            .region("us-east-1".to_string())
3244            .use_dual_stack(true)
3245            .use_fips(true)
3246            .use_global_endpoint(true)
3247            .endpoint("http://foo.com".to_string())
3248            .build()
3249            .expect("invalid params");
3250        let resolver = crate::config::endpoint::DefaultResolver::new();
3251        let endpoint = resolver.resolve_endpoint(&params);
3252        let error = endpoint
3253            .expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [endpoint override + FIPS + dualstack]");
3254        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
3255    }
3256
3257    /// non-bucket endpoint override + dualstack + global endpoint
3258    #[test]
3259    fn test_109() {
3260        let params = crate::config::endpoint::Params::builder()
3261            .region("us-east-1".to_string())
3262            .use_fips(false)
3263            .use_dual_stack(true)
3264            .use_global_endpoint(true)
3265            .endpoint("http://foo.com".to_string())
3266            .build()
3267            .expect("invalid params");
3268        let resolver = crate::config::endpoint::DefaultResolver::new();
3269        let endpoint = resolver.resolve_endpoint(&params);
3270        let error = endpoint.expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [non-bucket endpoint override + dualstack + global endpoint]");
3271        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
3272    }
3273
3274    /// Endpoint override + UseGlobalEndpoint + us-east-1
3275    #[test]
3276    fn test_110() {
3277        let params = crate::config::endpoint::Params::builder()
3278            .region("us-east-1".to_string())
3279            .use_fips(true)
3280            .use_dual_stack(false)
3281            .use_global_endpoint(true)
3282            .endpoint("http://foo.com".to_string())
3283            .build()
3284            .expect("invalid params");
3285        let resolver = crate::config::endpoint::DefaultResolver::new();
3286        let endpoint = resolver.resolve_endpoint(&params);
3287        let error =
3288            endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [Endpoint override + UseGlobalEndpoint + us-east-1]");
3289        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
3290    }
3291
3292    /// non-FIPS partition with FIPS set + custom endpoint
3293    #[test]
3294    fn test_111() {
3295        let params = crate::config::endpoint::Params::builder()
3296            .region("cn-north-1".to_string())
3297            .use_fips(true)
3298            .use_dual_stack(false)
3299            .use_global_endpoint(true)
3300            .build()
3301            .expect("invalid params");
3302        let resolver = crate::config::endpoint::DefaultResolver::new();
3303        let endpoint = resolver.resolve_endpoint(&params);
3304        let error = endpoint.expect_err("expected error: Partition does not support FIPS [non-FIPS partition with FIPS set + custom endpoint]");
3305        assert_eq!(format!("{}", error), "Partition does not support FIPS")
3306    }
3307
3308    /// aws-global signs as us-east-1
3309    #[test]
3310    fn test_112() {
3311        let params = crate::config::endpoint::Params::builder()
3312            .region("aws-global".to_string())
3313            .bucket("bucket!".to_string())
3314            .use_fips(true)
3315            .accelerate(false)
3316            .use_dual_stack(true)
3317            .build()
3318            .expect("invalid params");
3319        let resolver = crate::config::endpoint::DefaultResolver::new();
3320        let endpoint = resolver.resolve_endpoint(&params);
3321        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21");
3322        assert_eq!(
3323            endpoint,
3324            ::aws_smithy_types::endpoint::Endpoint::builder()
3325                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21")
3326                .property(
3327                    "authSchemes",
3328                    vec![{
3329                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3330                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3331                        out.insert("name".to_string(), "sigv4".to_string().into());
3332                        out.insert("signingName".to_string(), "s3".to_string().into());
3333                        out.insert("disableDoubleEncoding".to_string(), true.into());
3334                        out
3335                    }
3336                    .into()]
3337                )
3338                .build()
3339        );
3340    }
3341
3342    /// aws-global signs as us-east-1
3343    #[test]
3344    fn test_113() {
3345        let params = crate::config::endpoint::Params::builder()
3346            .region("aws-global".to_string())
3347            .bucket("bucket".to_string())
3348            .use_dual_stack(false)
3349            .use_fips(false)
3350            .accelerate(false)
3351            .endpoint("https://foo.com".to_string())
3352            .build()
3353            .expect("invalid params");
3354        let resolver = crate::config::endpoint::DefaultResolver::new();
3355        let endpoint = resolver.resolve_endpoint(&params);
3356        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket.foo.com");
3357        assert_eq!(
3358            endpoint,
3359            ::aws_smithy_types::endpoint::Endpoint::builder()
3360                .url("https://bucket.foo.com")
3361                .property(
3362                    "authSchemes",
3363                    vec![{
3364                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3365                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3366                        out.insert("name".to_string(), "sigv4".to_string().into());
3367                        out.insert("signingName".to_string(), "s3".to_string().into());
3368                        out.insert("disableDoubleEncoding".to_string(), true.into());
3369                        out
3370                    }
3371                    .into()]
3372                )
3373                .build()
3374        );
3375    }
3376
3377    /// aws-global + dualstack + path-only bucket
3378    #[test]
3379    fn test_114() {
3380        let params = crate::config::endpoint::Params::builder()
3381            .region("aws-global".to_string())
3382            .bucket("bucket!".to_string())
3383            .use_dual_stack(true)
3384            .use_fips(false)
3385            .accelerate(false)
3386            .build()
3387            .expect("invalid params");
3388        let resolver = crate::config::endpoint::DefaultResolver::new();
3389        let endpoint = resolver.resolve_endpoint(&params);
3390        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-east-1.amazonaws.com/bucket%21");
3391        assert_eq!(
3392            endpoint,
3393            ::aws_smithy_types::endpoint::Endpoint::builder()
3394                .url("https://s3.dualstack.us-east-1.amazonaws.com/bucket%21")
3395                .property(
3396                    "authSchemes",
3397                    vec![{
3398                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3399                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3400                        out.insert("name".to_string(), "sigv4".to_string().into());
3401                        out.insert("signingName".to_string(), "s3".to_string().into());
3402                        out.insert("disableDoubleEncoding".to_string(), true.into());
3403                        out
3404                    }
3405                    .into()]
3406                )
3407                .build()
3408        );
3409    }
3410
3411    /// aws-global + path-only bucket
3412    #[test]
3413    fn test_115() {
3414        let params = crate::config::endpoint::Params::builder()
3415            .region("aws-global".to_string())
3416            .bucket("bucket!".to_string())
3417            .build()
3418            .expect("invalid params");
3419        let resolver = crate::config::endpoint::DefaultResolver::new();
3420        let endpoint = resolver.resolve_endpoint(&params);
3421        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.amazonaws.com/bucket%21");
3422        assert_eq!(
3423            endpoint,
3424            ::aws_smithy_types::endpoint::Endpoint::builder()
3425                .url("https://s3.amazonaws.com/bucket%21")
3426                .property(
3427                    "authSchemes",
3428                    vec![{
3429                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3430                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3431                        out.insert("name".to_string(), "sigv4".to_string().into());
3432                        out.insert("signingName".to_string(), "s3".to_string().into());
3433                        out.insert("disableDoubleEncoding".to_string(), true.into());
3434                        out
3435                    }
3436                    .into()]
3437                )
3438                .build()
3439        );
3440    }
3441
3442    /// aws-global + fips + custom endpoint
3443    #[test]
3444    fn test_116() {
3445        let params = crate::config::endpoint::Params::builder()
3446            .region("aws-global".to_string())
3447            .bucket("bucket!".to_string())
3448            .use_dual_stack(false)
3449            .use_fips(true)
3450            .accelerate(false)
3451            .endpoint("http://foo.com".to_string())
3452            .build()
3453            .expect("invalid params");
3454        let resolver = crate::config::endpoint::DefaultResolver::new();
3455        let endpoint = resolver.resolve_endpoint(&params);
3456        let error = endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [aws-global + fips + custom endpoint]");
3457        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
3458    }
3459
3460    /// aws-global, endpoint override & path only-bucket
3461    #[test]
3462    fn test_117() {
3463        let params = crate::config::endpoint::Params::builder()
3464            .region("aws-global".to_string())
3465            .bucket("bucket!".to_string())
3466            .use_dual_stack(false)
3467            .use_fips(false)
3468            .accelerate(false)
3469            .endpoint("http://foo.com".to_string())
3470            .build()
3471            .expect("invalid params");
3472        let resolver = crate::config::endpoint::DefaultResolver::new();
3473        let endpoint = resolver.resolve_endpoint(&params);
3474        let endpoint = endpoint.expect("Expected valid endpoint: http://foo.com/bucket%21");
3475        assert_eq!(
3476            endpoint,
3477            ::aws_smithy_types::endpoint::Endpoint::builder()
3478                .url("http://foo.com/bucket%21")
3479                .property(
3480                    "authSchemes",
3481                    vec![{
3482                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3483                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3484                        out.insert("name".to_string(), "sigv4".to_string().into());
3485                        out.insert("signingName".to_string(), "s3".to_string().into());
3486                        out.insert("disableDoubleEncoding".to_string(), true.into());
3487                        out
3488                    }
3489                    .into()]
3490                )
3491                .build()
3492        );
3493    }
3494
3495    /// aws-global + dualstack + custom endpoint
3496    #[test]
3497    fn test_118() {
3498        let params = crate::config::endpoint::Params::builder()
3499            .region("aws-global".to_string())
3500            .use_dual_stack(true)
3501            .use_fips(false)
3502            .accelerate(false)
3503            .endpoint("http://foo.com".to_string())
3504            .build()
3505            .expect("invalid params");
3506        let resolver = crate::config::endpoint::DefaultResolver::new();
3507        let endpoint = resolver.resolve_endpoint(&params);
3508        let error = endpoint
3509            .expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [aws-global + dualstack + custom endpoint]");
3510        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
3511    }
3512
3513    /// accelerate, dualstack + aws-global
3514    #[test]
3515    fn test_119() {
3516        let params = crate::config::endpoint::Params::builder()
3517            .region("aws-global".to_string())
3518            .bucket("bucket".to_string())
3519            .use_dual_stack(true)
3520            .use_fips(false)
3521            .accelerate(true)
3522            .build()
3523            .expect("invalid params");
3524        let resolver = crate::config::endpoint::DefaultResolver::new();
3525        let endpoint = resolver.resolve_endpoint(&params);
3526        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket.s3-accelerate.dualstack.us-east-1.amazonaws.com");
3527        assert_eq!(
3528            endpoint,
3529            ::aws_smithy_types::endpoint::Endpoint::builder()
3530                .url("https://bucket.s3-accelerate.dualstack.us-east-1.amazonaws.com")
3531                .property(
3532                    "authSchemes",
3533                    vec![{
3534                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3535                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3536                        out.insert("name".to_string(), "sigv4".to_string().into());
3537                        out.insert("signingName".to_string(), "s3".to_string().into());
3538                        out.insert("disableDoubleEncoding".to_string(), true.into());
3539                        out
3540                    }
3541                    .into()]
3542                )
3543                .build()
3544        );
3545    }
3546
3547    /// FIPS + aws-global + path only bucket. This is not supported by S3 but we allow garbage in garbage out
3548    #[test]
3549    fn test_120() {
3550        let params = crate::config::endpoint::Params::builder()
3551            .region("aws-global".to_string())
3552            .bucket("bucket!".to_string())
3553            .force_path_style(true)
3554            .use_dual_stack(true)
3555            .use_fips(true)
3556            .accelerate(false)
3557            .build()
3558            .expect("invalid params");
3559        let resolver = crate::config::endpoint::DefaultResolver::new();
3560        let endpoint = resolver.resolve_endpoint(&params);
3561        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21");
3562        assert_eq!(
3563            endpoint,
3564            ::aws_smithy_types::endpoint::Endpoint::builder()
3565                .url("https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21")
3566                .property(
3567                    "authSchemes",
3568                    vec![{
3569                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3570                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3571                        out.insert("name".to_string(), "sigv4".to_string().into());
3572                        out.insert("signingName".to_string(), "s3".to_string().into());
3573                        out.insert("disableDoubleEncoding".to_string(), true.into());
3574                        out
3575                    }
3576                    .into()]
3577                )
3578                .build()
3579        );
3580    }
3581
3582    /// aws-global + FIPS + endpoint override.
3583    #[test]
3584    fn test_121() {
3585        let params = crate::config::endpoint::Params::builder()
3586            .region("aws-global".to_string())
3587            .use_fips(true)
3588            .endpoint("http://foo.com".to_string())
3589            .build()
3590            .expect("invalid params");
3591        let resolver = crate::config::endpoint::DefaultResolver::new();
3592        let endpoint = resolver.resolve_endpoint(&params);
3593        let error = endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [aws-global + FIPS + endpoint override.]");
3594        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
3595    }
3596
3597    /// force path style, FIPS, aws-global & endpoint override
3598    #[test]
3599    fn test_122() {
3600        let params = crate::config::endpoint::Params::builder()
3601            .region("aws-global".to_string())
3602            .bucket("bucket!".to_string())
3603            .force_path_style(true)
3604            .use_fips(true)
3605            .endpoint("http://foo.com".to_string())
3606            .build()
3607            .expect("invalid params");
3608        let resolver = crate::config::endpoint::DefaultResolver::new();
3609        let endpoint = resolver.resolve_endpoint(&params);
3610        let error = endpoint
3611            .expect_err("expected error: A custom endpoint cannot be combined with FIPS [force path style, FIPS, aws-global & endpoint override]");
3612        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
3613    }
3614
3615    /// ip address causes path style to be forced
3616    #[test]
3617    fn test_123() {
3618        let params = crate::config::endpoint::Params::builder()
3619            .region("aws-global".to_string())
3620            .bucket("bucket".to_string())
3621            .endpoint("http://192.168.1.1".to_string())
3622            .build()
3623            .expect("invalid params");
3624        let resolver = crate::config::endpoint::DefaultResolver::new();
3625        let endpoint = resolver.resolve_endpoint(&params);
3626        let endpoint = endpoint.expect("Expected valid endpoint: http://192.168.1.1/bucket");
3627        assert_eq!(
3628            endpoint,
3629            ::aws_smithy_types::endpoint::Endpoint::builder()
3630                .url("http://192.168.1.1/bucket")
3631                .property(
3632                    "authSchemes",
3633                    vec![{
3634                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3635                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3636                        out.insert("name".to_string(), "sigv4".to_string().into());
3637                        out.insert("signingName".to_string(), "s3".to_string().into());
3638                        out.insert("disableDoubleEncoding".to_string(), true.into());
3639                        out
3640                    }
3641                    .into()]
3642                )
3643                .build()
3644        );
3645    }
3646
3647    /// endpoint override with aws-global region
3648    #[test]
3649    fn test_124() {
3650        let params = crate::config::endpoint::Params::builder()
3651            .region("aws-global".to_string())
3652            .use_fips(true)
3653            .use_dual_stack(true)
3654            .endpoint("http://foo.com".to_string())
3655            .build()
3656            .expect("invalid params");
3657        let resolver = crate::config::endpoint::DefaultResolver::new();
3658        let endpoint = resolver.resolve_endpoint(&params);
3659        let error = endpoint
3660            .expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [endpoint override with aws-global region]");
3661        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
3662    }
3663
3664    /// FIPS + path-only (TODO: consider making this an error)
3665    #[test]
3666    fn test_125() {
3667        let params = crate::config::endpoint::Params::builder()
3668            .region("aws-global".to_string())
3669            .bucket("bucket!".to_string())
3670            .use_fips(true)
3671            .build()
3672            .expect("invalid params");
3673        let resolver = crate::config::endpoint::DefaultResolver::new();
3674        let endpoint = resolver.resolve_endpoint(&params);
3675        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-east-1.amazonaws.com/bucket%21");
3676        assert_eq!(
3677            endpoint,
3678            ::aws_smithy_types::endpoint::Endpoint::builder()
3679                .url("https://s3-fips.us-east-1.amazonaws.com/bucket%21")
3680                .property(
3681                    "authSchemes",
3682                    vec![{
3683                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3684                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
3685                        out.insert("name".to_string(), "sigv4".to_string().into());
3686                        out.insert("signingName".to_string(), "s3".to_string().into());
3687                        out.insert("disableDoubleEncoding".to_string(), true.into());
3688                        out
3689                    }
3690                    .into()]
3691                )
3692                .build()
3693        );
3694    }
3695
3696    /// empty arn type
3697    #[test]
3698    fn test_126() {
3699        let params = crate::config::endpoint::Params::builder()
3700            .region("us-east-2".to_string())
3701            .bucket("arn:aws:not-s3:us-west-2:123456789012::myendpoint".to_string())
3702            .build()
3703            .expect("invalid params");
3704        let resolver = crate::config::endpoint::DefaultResolver::new();
3705        let endpoint = resolver.resolve_endpoint(&params);
3706        let error = endpoint.expect_err("expected error: Invalid ARN: No ARN type specified [empty arn type]");
3707        assert_eq!(format!("{}", error), "Invalid ARN: No ARN type specified")
3708    }
3709
3710    /// path style can't be used with accelerate
3711    #[test]
3712    fn test_127() {
3713        let params = crate::config::endpoint::Params::builder()
3714            .region("us-east-2".to_string())
3715            .bucket("bucket!".to_string())
3716            .accelerate(true)
3717            .build()
3718            .expect("invalid params");
3719        let resolver = crate::config::endpoint::DefaultResolver::new();
3720        let endpoint = resolver.resolve_endpoint(&params);
3721        let error =
3722            endpoint.expect_err("expected error: Path-style addressing cannot be used with S3 Accelerate [path style can't be used with accelerate]");
3723        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with S3 Accelerate")
3724    }
3725
3726    /// invalid region
3727    #[test]
3728    fn test_128() {
3729        let params = crate::config::endpoint::Params::builder()
3730            .region("us-east-2!".to_string())
3731            .bucket("bucket.subdomain".to_string())
3732            .endpoint("http://foo.com".to_string())
3733            .build()
3734            .expect("invalid params");
3735        let resolver = crate::config::endpoint::DefaultResolver::new();
3736        let endpoint = resolver.resolve_endpoint(&params);
3737        let error = endpoint.expect_err("expected error: Invalid region: region was not a valid DNS name. [invalid region]");
3738        assert_eq!(format!("{}", error), "Invalid region: region was not a valid DNS name.")
3739    }
3740
3741    /// invalid region
3742    #[test]
3743    fn test_129() {
3744        let params = crate::config::endpoint::Params::builder()
3745            .region("us-east-2!".to_string())
3746            .bucket("bucket".to_string())
3747            .endpoint("http://foo.com".to_string())
3748            .build()
3749            .expect("invalid params");
3750        let resolver = crate::config::endpoint::DefaultResolver::new();
3751        let endpoint = resolver.resolve_endpoint(&params);
3752        let error = endpoint.expect_err("expected error: Invalid region: region was not a valid DNS name. [invalid region]");
3753        assert_eq!(format!("{}", error), "Invalid region: region was not a valid DNS name.")
3754    }
3755
3756    /// empty arn type
3757    #[test]
3758    fn test_130() {
3759        let params = crate::config::endpoint::Params::builder()
3760            .region("us-east-2".to_string())
3761            .bucket("arn:aws:s3::123456789012:accesspoint:my_endpoint".to_string())
3762            .build()
3763            .expect("invalid params");
3764        let resolver = crate::config::endpoint::DefaultResolver::new();
3765        let endpoint = resolver.resolve_endpoint(&params);
3766        let error = endpoint.expect_err("expected error: Invalid Access Point Name [empty arn type]");
3767        assert_eq!(format!("{}", error), "Invalid Access Point Name")
3768    }
3769
3770    /// empty arn type
3771    #[test]
3772    fn test_131() {
3773        let params = crate::config::endpoint::Params::builder()
3774            .region("us-east-2".to_string())
3775            .bucket("arn:aws:s3:cn-north-1:123456789012:accesspoint:my-endpoint".to_string())
3776            .use_arn_region(true)
3777            .build()
3778            .expect("invalid params");
3779        let resolver = crate::config::endpoint::DefaultResolver::new();
3780        let endpoint = resolver.resolve_endpoint(&params);
3781        let error = endpoint.expect_err("expected error: Client was configured for partition `aws` but ARN (`arn:aws:s3:cn-north-1:123456789012:accesspoint:my-endpoint`) has `aws-cn` [empty arn type]");
3782        assert_eq!(
3783            format!("{}", error),
3784            "Client was configured for partition `aws` but ARN (`arn:aws:s3:cn-north-1:123456789012:accesspoint:my-endpoint`) has `aws-cn`"
3785        )
3786    }
3787
3788    /// invalid arn region
3789    #[test]
3790    fn test_132() {
3791        let params = crate::config::endpoint::Params::builder()
3792            .region("us-east-2".to_string())
3793            .bucket("arn:aws:s3-object-lambda:us-east_2:123456789012:accesspoint:my-endpoint".to_string())
3794            .use_arn_region(true)
3795            .build()
3796            .expect("invalid params");
3797        let resolver = crate::config::endpoint::DefaultResolver::new();
3798        let endpoint = resolver.resolve_endpoint(&params);
3799        let error = endpoint.expect_err("expected error: Invalid region in ARN: `us-east_2` (invalid DNS name) [invalid arn region]");
3800        assert_eq!(format!("{}", error), "Invalid region in ARN: `us-east_2` (invalid DNS name)")
3801    }
3802
3803    /// invalid ARN outpost
3804    #[test]
3805    fn test_133() {
3806        let params = crate::config::endpoint::Params::builder()
3807            .region("us-east-2".to_string())
3808            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost/op_01234567890123456/accesspoint/reports".to_string())
3809            .use_arn_region(true)
3810            .build()
3811            .expect("invalid params");
3812        let resolver = crate::config::endpoint::DefaultResolver::new();
3813        let endpoint = resolver.resolve_endpoint(&params);
3814        let error = endpoint.expect_err(
3815            "expected error: Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `op_01234567890123456` [invalid ARN outpost]",
3816        );
3817        assert_eq!(
3818            format!("{}", error),
3819            "Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `op_01234567890123456`"
3820        )
3821    }
3822
3823    /// invalid ARN
3824    #[test]
3825    fn test_134() {
3826        let params = crate::config::endpoint::Params::builder()
3827            .region("us-east-2".to_string())
3828            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/reports".to_string())
3829            .build()
3830            .expect("invalid params");
3831        let resolver = crate::config::endpoint::DefaultResolver::new();
3832        let endpoint = resolver.resolve_endpoint(&params);
3833        let error = endpoint.expect_err("expected error: Invalid ARN: expected an access point name [invalid ARN]");
3834        assert_eq!(format!("{}", error), "Invalid ARN: expected an access point name")
3835    }
3836
3837    /// invalid ARN
3838    #[test]
3839    fn test_135() {
3840        let params = crate::config::endpoint::Params::builder()
3841            .region("us-east-2".to_string())
3842            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456".to_string())
3843            .build()
3844            .expect("invalid params");
3845        let resolver = crate::config::endpoint::DefaultResolver::new();
3846        let endpoint = resolver.resolve_endpoint(&params);
3847        let error = endpoint.expect_err("expected error: Invalid ARN: Expected a 4-component resource [invalid ARN]");
3848        assert_eq!(format!("{}", error), "Invalid ARN: Expected a 4-component resource")
3849    }
3850
3851    /// invalid outpost type
3852    #[test]
3853    fn test_136() {
3854        let params = crate::config::endpoint::Params::builder()
3855            .region("us-east-2".to_string())
3856            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/not-accesspoint/reports".to_string())
3857            .build()
3858            .expect("invalid params");
3859        let resolver = crate::config::endpoint::DefaultResolver::new();
3860        let endpoint = resolver.resolve_endpoint(&params);
3861        let error = endpoint.expect_err("expected error: Expected an outpost type `accesspoint`, found not-accesspoint [invalid outpost type]");
3862        assert_eq!(format!("{}", error), "Expected an outpost type `accesspoint`, found not-accesspoint")
3863    }
3864
3865    /// invalid outpost type
3866    #[test]
3867    fn test_137() {
3868        let params = crate::config::endpoint::Params::builder()
3869            .region("us-east-2".to_string())
3870            .bucket("arn:aws:s3-outposts:us-east_1:123456789012:outpost/op-01234567890123456/not-accesspoint/reports".to_string())
3871            .build()
3872            .expect("invalid params");
3873        let resolver = crate::config::endpoint::DefaultResolver::new();
3874        let endpoint = resolver.resolve_endpoint(&params);
3875        let error = endpoint.expect_err("expected error: Invalid region in ARN: `us-east_1` (invalid DNS name) [invalid outpost type]");
3876        assert_eq!(format!("{}", error), "Invalid region in ARN: `us-east_1` (invalid DNS name)")
3877    }
3878
3879    /// invalid outpost type
3880    #[test]
3881    fn test_138() {
3882        let params = crate::config::endpoint::Params::builder()
3883            .region("us-east-2".to_string())
3884            .bucket("arn:aws:s3-outposts:us-east-1:12345_789012:outpost/op-01234567890123456/not-accesspoint/reports".to_string())
3885            .build()
3886            .expect("invalid params");
3887        let resolver = crate::config::endpoint::DefaultResolver::new();
3888        let endpoint = resolver.resolve_endpoint(&params);
3889        let error = endpoint.expect_err(
3890            "expected error: Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `12345_789012` [invalid outpost type]",
3891        );
3892        assert_eq!(
3893            format!("{}", error),
3894            "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `12345_789012`"
3895        )
3896    }
3897
3898    /// invalid outpost type
3899    #[test]
3900    fn test_139() {
3901        let params = crate::config::endpoint::Params::builder()
3902            .region("us-east-2".to_string())
3903            .bucket("arn:aws:s3-outposts:us-east-1:12345789012:outpost".to_string())
3904            .build()
3905            .expect("invalid params");
3906        let resolver = crate::config::endpoint::DefaultResolver::new();
3907        let endpoint = resolver.resolve_endpoint(&params);
3908        let error = endpoint.expect_err("expected error: Invalid ARN: The Outpost Id was not set [invalid outpost type]");
3909        assert_eq!(format!("{}", error), "Invalid ARN: The Outpost Id was not set")
3910    }
3911
3912    /// use global endpoint virtual addressing
3913    #[test]
3914    fn test_140() {
3915        let params = crate::config::endpoint::Params::builder()
3916            .region("us-east-2".to_string())
3917            .bucket("bucket".to_string())
3918            .endpoint("http://example.com".to_string())
3919            .use_global_endpoint(true)
3920            .build()
3921            .expect("invalid params");
3922        let resolver = crate::config::endpoint::DefaultResolver::new();
3923        let endpoint = resolver.resolve_endpoint(&params);
3924        let endpoint = endpoint.expect("Expected valid endpoint: http://bucket.example.com");
3925        assert_eq!(
3926            endpoint,
3927            ::aws_smithy_types::endpoint::Endpoint::builder()
3928                .url("http://bucket.example.com")
3929                .property(
3930                    "authSchemes",
3931                    vec![{
3932                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3933                        out.insert("signingRegion".to_string(), "us-east-2".to_string().into());
3934                        out.insert("name".to_string(), "sigv4".to_string().into());
3935                        out.insert("signingName".to_string(), "s3".to_string().into());
3936                        out.insert("disableDoubleEncoding".to_string(), true.into());
3937                        out
3938                    }
3939                    .into()]
3940                )
3941                .build()
3942        );
3943    }
3944
3945    /// global endpoint + ip address
3946    #[test]
3947    fn test_141() {
3948        let params = crate::config::endpoint::Params::builder()
3949            .region("us-east-2".to_string())
3950            .bucket("bucket".to_string())
3951            .endpoint("http://192.168.0.1".to_string())
3952            .use_global_endpoint(true)
3953            .build()
3954            .expect("invalid params");
3955        let resolver = crate::config::endpoint::DefaultResolver::new();
3956        let endpoint = resolver.resolve_endpoint(&params);
3957        let endpoint = endpoint.expect("Expected valid endpoint: http://192.168.0.1/bucket");
3958        assert_eq!(
3959            endpoint,
3960            ::aws_smithy_types::endpoint::Endpoint::builder()
3961                .url("http://192.168.0.1/bucket")
3962                .property(
3963                    "authSchemes",
3964                    vec![{
3965                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3966                        out.insert("signingRegion".to_string(), "us-east-2".to_string().into());
3967                        out.insert("name".to_string(), "sigv4".to_string().into());
3968                        out.insert("signingName".to_string(), "s3".to_string().into());
3969                        out.insert("disableDoubleEncoding".to_string(), true.into());
3970                        out
3971                    }
3972                    .into()]
3973                )
3974                .build()
3975        );
3976    }
3977
3978    /// invalid outpost type
3979    #[test]
3980    fn test_142() {
3981        let params = crate::config::endpoint::Params::builder()
3982            .region("us-east-2".to_string())
3983            .bucket("bucket!".to_string())
3984            .use_global_endpoint(true)
3985            .build()
3986            .expect("invalid params");
3987        let resolver = crate::config::endpoint::DefaultResolver::new();
3988        let endpoint = resolver.resolve_endpoint(&params);
3989        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-east-2.amazonaws.com/bucket%21");
3990        assert_eq!(
3991            endpoint,
3992            ::aws_smithy_types::endpoint::Endpoint::builder()
3993                .url("https://s3.us-east-2.amazonaws.com/bucket%21")
3994                .property(
3995                    "authSchemes",
3996                    vec![{
3997                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
3998                        out.insert("signingRegion".to_string(), "us-east-2".to_string().into());
3999                        out.insert("name".to_string(), "sigv4".to_string().into());
4000                        out.insert("signingName".to_string(), "s3".to_string().into());
4001                        out.insert("disableDoubleEncoding".to_string(), true.into());
4002                        out
4003                    }
4004                    .into()]
4005                )
4006                .build()
4007        );
4008    }
4009
4010    /// invalid outpost type
4011    #[test]
4012    fn test_143() {
4013        let params = crate::config::endpoint::Params::builder()
4014            .region("us-east-2".to_string())
4015            .bucket("bucket".to_string())
4016            .accelerate(true)
4017            .use_global_endpoint(true)
4018            .build()
4019            .expect("invalid params");
4020        let resolver = crate::config::endpoint::DefaultResolver::new();
4021        let endpoint = resolver.resolve_endpoint(&params);
4022        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket.s3-accelerate.amazonaws.com");
4023        assert_eq!(
4024            endpoint,
4025            ::aws_smithy_types::endpoint::Endpoint::builder()
4026                .url("https://bucket.s3-accelerate.amazonaws.com")
4027                .property(
4028                    "authSchemes",
4029                    vec![{
4030                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4031                        out.insert("signingRegion".to_string(), "us-east-2".to_string().into());
4032                        out.insert("name".to_string(), "sigv4".to_string().into());
4033                        out.insert("signingName".to_string(), "s3".to_string().into());
4034                        out.insert("disableDoubleEncoding".to_string(), true.into());
4035                        out
4036                    }
4037                    .into()]
4038                )
4039                .build()
4040        );
4041    }
4042
4043    /// use global endpoint + custom endpoint
4044    #[test]
4045    fn test_144() {
4046        let params = crate::config::endpoint::Params::builder()
4047            .region("us-east-2".to_string())
4048            .bucket("bucket!".to_string())
4049            .use_global_endpoint(true)
4050            .endpoint("http://foo.com".to_string())
4051            .build()
4052            .expect("invalid params");
4053        let resolver = crate::config::endpoint::DefaultResolver::new();
4054        let endpoint = resolver.resolve_endpoint(&params);
4055        let endpoint = endpoint.expect("Expected valid endpoint: http://foo.com/bucket%21");
4056        assert_eq!(
4057            endpoint,
4058            ::aws_smithy_types::endpoint::Endpoint::builder()
4059                .url("http://foo.com/bucket%21")
4060                .property(
4061                    "authSchemes",
4062                    vec![{
4063                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4064                        out.insert("signingRegion".to_string(), "us-east-2".to_string().into());
4065                        out.insert("name".to_string(), "sigv4".to_string().into());
4066                        out.insert("signingName".to_string(), "s3".to_string().into());
4067                        out.insert("disableDoubleEncoding".to_string(), true.into());
4068                        out
4069                    }
4070                    .into()]
4071                )
4072                .build()
4073        );
4074    }
4075
4076    /// use global endpoint, not us-east-1, force path style
4077    #[test]
4078    fn test_145() {
4079        let params = crate::config::endpoint::Params::builder()
4080            .region("us-east-2".to_string())
4081            .bucket("bucket!".to_string())
4082            .use_global_endpoint(true)
4083            .force_path_style(true)
4084            .endpoint("http://foo.com".to_string())
4085            .build()
4086            .expect("invalid params");
4087        let resolver = crate::config::endpoint::DefaultResolver::new();
4088        let endpoint = resolver.resolve_endpoint(&params);
4089        let endpoint = endpoint.expect("Expected valid endpoint: http://foo.com/bucket%21");
4090        assert_eq!(
4091            endpoint,
4092            ::aws_smithy_types::endpoint::Endpoint::builder()
4093                .url("http://foo.com/bucket%21")
4094                .property(
4095                    "authSchemes",
4096                    vec![{
4097                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4098                        out.insert("signingRegion".to_string(), "us-east-2".to_string().into());
4099                        out.insert("name".to_string(), "sigv4".to_string().into());
4100                        out.insert("signingName".to_string(), "s3".to_string().into());
4101                        out.insert("disableDoubleEncoding".to_string(), true.into());
4102                        out
4103                    }
4104                    .into()]
4105                )
4106                .build()
4107        );
4108    }
4109
4110    /// vanilla virtual addressing@us-west-2
4111    #[test]
4112    fn test_146() {
4113        let params = crate::config::endpoint::Params::builder()
4114            .accelerate(false)
4115            .bucket("bucket-name".to_string())
4116            .force_path_style(false)
4117            .region("us-west-2".to_string())
4118            .use_dual_stack(false)
4119            .use_fips(false)
4120            .build()
4121            .expect("invalid params");
4122        let resolver = crate::config::endpoint::DefaultResolver::new();
4123        let endpoint = resolver.resolve_endpoint(&params);
4124        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.us-west-2.amazonaws.com");
4125        assert_eq!(
4126            endpoint,
4127            ::aws_smithy_types::endpoint::Endpoint::builder()
4128                .url("https://bucket-name.s3.us-west-2.amazonaws.com")
4129                .property(
4130                    "authSchemes",
4131                    vec![{
4132                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4133                        out.insert("name".to_string(), "sigv4".to_string().into());
4134                        out.insert("signingName".to_string(), "s3".to_string().into());
4135                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4136                        out.insert("disableDoubleEncoding".to_string(), true.into());
4137                        out
4138                    }
4139                    .into()]
4140                )
4141                .build()
4142        );
4143    }
4144
4145    /// virtual addressing + dualstack@us-west-2
4146    #[test]
4147    fn test_147() {
4148        let params = crate::config::endpoint::Params::builder()
4149            .accelerate(false)
4150            .bucket("bucket-name".to_string())
4151            .force_path_style(false)
4152            .region("us-west-2".to_string())
4153            .use_dual_stack(true)
4154            .use_fips(false)
4155            .build()
4156            .expect("invalid params");
4157        let resolver = crate::config::endpoint::DefaultResolver::new();
4158        let endpoint = resolver.resolve_endpoint(&params);
4159        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.dualstack.us-west-2.amazonaws.com");
4160        assert_eq!(
4161            endpoint,
4162            ::aws_smithy_types::endpoint::Endpoint::builder()
4163                .url("https://bucket-name.s3.dualstack.us-west-2.amazonaws.com")
4164                .property(
4165                    "authSchemes",
4166                    vec![{
4167                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4168                        out.insert("name".to_string(), "sigv4".to_string().into());
4169                        out.insert("signingName".to_string(), "s3".to_string().into());
4170                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4171                        out.insert("disableDoubleEncoding".to_string(), true.into());
4172                        out
4173                    }
4174                    .into()]
4175                )
4176                .build()
4177        );
4178    }
4179
4180    /// accelerate + dualstack@us-west-2
4181    #[test]
4182    fn test_148() {
4183        let params = crate::config::endpoint::Params::builder()
4184            .accelerate(true)
4185            .bucket("bucket-name".to_string())
4186            .force_path_style(false)
4187            .region("us-west-2".to_string())
4188            .use_dual_stack(true)
4189            .use_fips(false)
4190            .build()
4191            .expect("invalid params");
4192        let resolver = crate::config::endpoint::DefaultResolver::new();
4193        let endpoint = resolver.resolve_endpoint(&params);
4194        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-accelerate.dualstack.amazonaws.com");
4195        assert_eq!(
4196            endpoint,
4197            ::aws_smithy_types::endpoint::Endpoint::builder()
4198                .url("https://bucket-name.s3-accelerate.dualstack.amazonaws.com")
4199                .property(
4200                    "authSchemes",
4201                    vec![{
4202                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4203                        out.insert("name".to_string(), "sigv4".to_string().into());
4204                        out.insert("signingName".to_string(), "s3".to_string().into());
4205                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4206                        out.insert("disableDoubleEncoding".to_string(), true.into());
4207                        out
4208                    }
4209                    .into()]
4210                )
4211                .build()
4212        );
4213    }
4214
4215    /// accelerate (dualstack=false)@us-west-2
4216    #[test]
4217    fn test_149() {
4218        let params = crate::config::endpoint::Params::builder()
4219            .accelerate(true)
4220            .bucket("bucket-name".to_string())
4221            .force_path_style(false)
4222            .region("us-west-2".to_string())
4223            .use_dual_stack(false)
4224            .use_fips(false)
4225            .build()
4226            .expect("invalid params");
4227        let resolver = crate::config::endpoint::DefaultResolver::new();
4228        let endpoint = resolver.resolve_endpoint(&params);
4229        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-accelerate.amazonaws.com");
4230        assert_eq!(
4231            endpoint,
4232            ::aws_smithy_types::endpoint::Endpoint::builder()
4233                .url("https://bucket-name.s3-accelerate.amazonaws.com")
4234                .property(
4235                    "authSchemes",
4236                    vec![{
4237                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4238                        out.insert("name".to_string(), "sigv4".to_string().into());
4239                        out.insert("signingName".to_string(), "s3".to_string().into());
4240                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4241                        out.insert("disableDoubleEncoding".to_string(), true.into());
4242                        out
4243                    }
4244                    .into()]
4245                )
4246                .build()
4247        );
4248    }
4249
4250    /// virtual addressing + fips@us-west-2
4251    #[test]
4252    fn test_150() {
4253        let params = crate::config::endpoint::Params::builder()
4254            .accelerate(false)
4255            .bucket("bucket-name".to_string())
4256            .force_path_style(false)
4257            .region("us-west-2".to_string())
4258            .use_dual_stack(false)
4259            .use_fips(true)
4260            .build()
4261            .expect("invalid params");
4262        let resolver = crate::config::endpoint::DefaultResolver::new();
4263        let endpoint = resolver.resolve_endpoint(&params);
4264        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.us-west-2.amazonaws.com");
4265        assert_eq!(
4266            endpoint,
4267            ::aws_smithy_types::endpoint::Endpoint::builder()
4268                .url("https://bucket-name.s3-fips.us-west-2.amazonaws.com")
4269                .property(
4270                    "authSchemes",
4271                    vec![{
4272                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4273                        out.insert("name".to_string(), "sigv4".to_string().into());
4274                        out.insert("signingName".to_string(), "s3".to_string().into());
4275                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4276                        out.insert("disableDoubleEncoding".to_string(), true.into());
4277                        out
4278                    }
4279                    .into()]
4280                )
4281                .build()
4282        );
4283    }
4284
4285    /// virtual addressing + dualstack + fips@us-west-2
4286    #[test]
4287    fn test_151() {
4288        let params = crate::config::endpoint::Params::builder()
4289            .accelerate(false)
4290            .bucket("bucket-name".to_string())
4291            .force_path_style(false)
4292            .region("us-west-2".to_string())
4293            .use_dual_stack(true)
4294            .use_fips(true)
4295            .build()
4296            .expect("invalid params");
4297        let resolver = crate::config::endpoint::DefaultResolver::new();
4298        let endpoint = resolver.resolve_endpoint(&params);
4299        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.dualstack.us-west-2.amazonaws.com");
4300        assert_eq!(
4301            endpoint,
4302            ::aws_smithy_types::endpoint::Endpoint::builder()
4303                .url("https://bucket-name.s3-fips.dualstack.us-west-2.amazonaws.com")
4304                .property(
4305                    "authSchemes",
4306                    vec![{
4307                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4308                        out.insert("name".to_string(), "sigv4".to_string().into());
4309                        out.insert("signingName".to_string(), "s3".to_string().into());
4310                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4311                        out.insert("disableDoubleEncoding".to_string(), true.into());
4312                        out
4313                    }
4314                    .into()]
4315                )
4316                .build()
4317        );
4318    }
4319
4320    /// accelerate + fips = error@us-west-2
4321    #[test]
4322    fn test_152() {
4323        let params = crate::config::endpoint::Params::builder()
4324            .accelerate(true)
4325            .bucket("bucket-name".to_string())
4326            .force_path_style(false)
4327            .region("us-west-2".to_string())
4328            .use_dual_stack(false)
4329            .use_fips(true)
4330            .build()
4331            .expect("invalid params");
4332        let resolver = crate::config::endpoint::DefaultResolver::new();
4333        let endpoint = resolver.resolve_endpoint(&params);
4334        let error = endpoint.expect_err("expected error: Accelerate cannot be used with FIPS [accelerate + fips = error@us-west-2]");
4335        assert_eq!(format!("{}", error), "Accelerate cannot be used with FIPS")
4336    }
4337
4338    /// vanilla virtual addressing@cn-north-1
4339    #[test]
4340    fn test_153() {
4341        let params = crate::config::endpoint::Params::builder()
4342            .accelerate(false)
4343            .bucket("bucket-name".to_string())
4344            .force_path_style(false)
4345            .region("cn-north-1".to_string())
4346            .use_dual_stack(false)
4347            .use_fips(false)
4348            .build()
4349            .expect("invalid params");
4350        let resolver = crate::config::endpoint::DefaultResolver::new();
4351        let endpoint = resolver.resolve_endpoint(&params);
4352        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.cn-north-1.amazonaws.com.cn");
4353        assert_eq!(
4354            endpoint,
4355            ::aws_smithy_types::endpoint::Endpoint::builder()
4356                .url("https://bucket-name.s3.cn-north-1.amazonaws.com.cn")
4357                .property(
4358                    "authSchemes",
4359                    vec![{
4360                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4361                        out.insert("name".to_string(), "sigv4".to_string().into());
4362                        out.insert("signingName".to_string(), "s3".to_string().into());
4363                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
4364                        out.insert("disableDoubleEncoding".to_string(), true.into());
4365                        out
4366                    }
4367                    .into()]
4368                )
4369                .build()
4370        );
4371    }
4372
4373    /// virtual addressing + dualstack@cn-north-1
4374    #[test]
4375    fn test_154() {
4376        let params = crate::config::endpoint::Params::builder()
4377            .accelerate(false)
4378            .bucket("bucket-name".to_string())
4379            .force_path_style(false)
4380            .region("cn-north-1".to_string())
4381            .use_dual_stack(true)
4382            .use_fips(false)
4383            .build()
4384            .expect("invalid params");
4385        let resolver = crate::config::endpoint::DefaultResolver::new();
4386        let endpoint = resolver.resolve_endpoint(&params);
4387        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.dualstack.cn-north-1.amazonaws.com.cn");
4388        assert_eq!(
4389            endpoint,
4390            ::aws_smithy_types::endpoint::Endpoint::builder()
4391                .url("https://bucket-name.s3.dualstack.cn-north-1.amazonaws.com.cn")
4392                .property(
4393                    "authSchemes",
4394                    vec![{
4395                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4396                        out.insert("name".to_string(), "sigv4".to_string().into());
4397                        out.insert("signingName".to_string(), "s3".to_string().into());
4398                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
4399                        out.insert("disableDoubleEncoding".to_string(), true.into());
4400                        out
4401                    }
4402                    .into()]
4403                )
4404                .build()
4405        );
4406    }
4407
4408    /// accelerate (dualstack=false)@cn-north-1
4409    #[test]
4410    fn test_155() {
4411        let params = crate::config::endpoint::Params::builder()
4412            .accelerate(true)
4413            .bucket("bucket-name".to_string())
4414            .force_path_style(false)
4415            .region("cn-north-1".to_string())
4416            .use_dual_stack(false)
4417            .use_fips(false)
4418            .build()
4419            .expect("invalid params");
4420        let resolver = crate::config::endpoint::DefaultResolver::new();
4421        let endpoint = resolver.resolve_endpoint(&params);
4422        let error = endpoint.expect_err("expected error: S3 Accelerate cannot be used in this region [accelerate (dualstack=false)@cn-north-1]");
4423        assert_eq!(format!("{}", error), "S3 Accelerate cannot be used in this region")
4424    }
4425
4426    /// virtual addressing + fips@cn-north-1
4427    #[test]
4428    fn test_156() {
4429        let params = crate::config::endpoint::Params::builder()
4430            .accelerate(false)
4431            .bucket("bucket-name".to_string())
4432            .force_path_style(false)
4433            .region("cn-north-1".to_string())
4434            .use_dual_stack(false)
4435            .use_fips(true)
4436            .build()
4437            .expect("invalid params");
4438        let resolver = crate::config::endpoint::DefaultResolver::new();
4439        let endpoint = resolver.resolve_endpoint(&params);
4440        let error = endpoint.expect_err("expected error: Partition does not support FIPS [virtual addressing + fips@cn-north-1]");
4441        assert_eq!(format!("{}", error), "Partition does not support FIPS")
4442    }
4443
4444    /// vanilla virtual addressing@af-south-1
4445    #[test]
4446    fn test_157() {
4447        let params = crate::config::endpoint::Params::builder()
4448            .accelerate(false)
4449            .bucket("bucket-name".to_string())
4450            .force_path_style(false)
4451            .region("af-south-1".to_string())
4452            .use_dual_stack(false)
4453            .use_fips(false)
4454            .build()
4455            .expect("invalid params");
4456        let resolver = crate::config::endpoint::DefaultResolver::new();
4457        let endpoint = resolver.resolve_endpoint(&params);
4458        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.af-south-1.amazonaws.com");
4459        assert_eq!(
4460            endpoint,
4461            ::aws_smithy_types::endpoint::Endpoint::builder()
4462                .url("https://bucket-name.s3.af-south-1.amazonaws.com")
4463                .property(
4464                    "authSchemes",
4465                    vec![{
4466                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4467                        out.insert("name".to_string(), "sigv4".to_string().into());
4468                        out.insert("signingName".to_string(), "s3".to_string().into());
4469                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
4470                        out.insert("disableDoubleEncoding".to_string(), true.into());
4471                        out
4472                    }
4473                    .into()]
4474                )
4475                .build()
4476        );
4477    }
4478
4479    /// virtual addressing + dualstack@af-south-1
4480    #[test]
4481    fn test_158() {
4482        let params = crate::config::endpoint::Params::builder()
4483            .accelerate(false)
4484            .bucket("bucket-name".to_string())
4485            .force_path_style(false)
4486            .region("af-south-1".to_string())
4487            .use_dual_stack(true)
4488            .use_fips(false)
4489            .build()
4490            .expect("invalid params");
4491        let resolver = crate::config::endpoint::DefaultResolver::new();
4492        let endpoint = resolver.resolve_endpoint(&params);
4493        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3.dualstack.af-south-1.amazonaws.com");
4494        assert_eq!(
4495            endpoint,
4496            ::aws_smithy_types::endpoint::Endpoint::builder()
4497                .url("https://bucket-name.s3.dualstack.af-south-1.amazonaws.com")
4498                .property(
4499                    "authSchemes",
4500                    vec![{
4501                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4502                        out.insert("name".to_string(), "sigv4".to_string().into());
4503                        out.insert("signingName".to_string(), "s3".to_string().into());
4504                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
4505                        out.insert("disableDoubleEncoding".to_string(), true.into());
4506                        out
4507                    }
4508                    .into()]
4509                )
4510                .build()
4511        );
4512    }
4513
4514    /// accelerate + dualstack@af-south-1
4515    #[test]
4516    fn test_159() {
4517        let params = crate::config::endpoint::Params::builder()
4518            .accelerate(true)
4519            .bucket("bucket-name".to_string())
4520            .force_path_style(false)
4521            .region("af-south-1".to_string())
4522            .use_dual_stack(true)
4523            .use_fips(false)
4524            .build()
4525            .expect("invalid params");
4526        let resolver = crate::config::endpoint::DefaultResolver::new();
4527        let endpoint = resolver.resolve_endpoint(&params);
4528        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-accelerate.dualstack.amazonaws.com");
4529        assert_eq!(
4530            endpoint,
4531            ::aws_smithy_types::endpoint::Endpoint::builder()
4532                .url("https://bucket-name.s3-accelerate.dualstack.amazonaws.com")
4533                .property(
4534                    "authSchemes",
4535                    vec![{
4536                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4537                        out.insert("name".to_string(), "sigv4".to_string().into());
4538                        out.insert("signingName".to_string(), "s3".to_string().into());
4539                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
4540                        out.insert("disableDoubleEncoding".to_string(), true.into());
4541                        out
4542                    }
4543                    .into()]
4544                )
4545                .build()
4546        );
4547    }
4548
4549    /// accelerate (dualstack=false)@af-south-1
4550    #[test]
4551    fn test_160() {
4552        let params = crate::config::endpoint::Params::builder()
4553            .accelerate(true)
4554            .bucket("bucket-name".to_string())
4555            .force_path_style(false)
4556            .region("af-south-1".to_string())
4557            .use_dual_stack(false)
4558            .use_fips(false)
4559            .build()
4560            .expect("invalid params");
4561        let resolver = crate::config::endpoint::DefaultResolver::new();
4562        let endpoint = resolver.resolve_endpoint(&params);
4563        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-accelerate.amazonaws.com");
4564        assert_eq!(
4565            endpoint,
4566            ::aws_smithy_types::endpoint::Endpoint::builder()
4567                .url("https://bucket-name.s3-accelerate.amazonaws.com")
4568                .property(
4569                    "authSchemes",
4570                    vec![{
4571                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4572                        out.insert("name".to_string(), "sigv4".to_string().into());
4573                        out.insert("signingName".to_string(), "s3".to_string().into());
4574                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
4575                        out.insert("disableDoubleEncoding".to_string(), true.into());
4576                        out
4577                    }
4578                    .into()]
4579                )
4580                .build()
4581        );
4582    }
4583
4584    /// virtual addressing + fips@af-south-1
4585    #[test]
4586    fn test_161() {
4587        let params = crate::config::endpoint::Params::builder()
4588            .accelerate(false)
4589            .bucket("bucket-name".to_string())
4590            .force_path_style(false)
4591            .region("af-south-1".to_string())
4592            .use_dual_stack(false)
4593            .use_fips(true)
4594            .build()
4595            .expect("invalid params");
4596        let resolver = crate::config::endpoint::DefaultResolver::new();
4597        let endpoint = resolver.resolve_endpoint(&params);
4598        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.af-south-1.amazonaws.com");
4599        assert_eq!(
4600            endpoint,
4601            ::aws_smithy_types::endpoint::Endpoint::builder()
4602                .url("https://bucket-name.s3-fips.af-south-1.amazonaws.com")
4603                .property(
4604                    "authSchemes",
4605                    vec![{
4606                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4607                        out.insert("name".to_string(), "sigv4".to_string().into());
4608                        out.insert("signingName".to_string(), "s3".to_string().into());
4609                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
4610                        out.insert("disableDoubleEncoding".to_string(), true.into());
4611                        out
4612                    }
4613                    .into()]
4614                )
4615                .build()
4616        );
4617    }
4618
4619    /// virtual addressing + dualstack + fips@af-south-1
4620    #[test]
4621    fn test_162() {
4622        let params = crate::config::endpoint::Params::builder()
4623            .accelerate(false)
4624            .bucket("bucket-name".to_string())
4625            .force_path_style(false)
4626            .region("af-south-1".to_string())
4627            .use_dual_stack(true)
4628            .use_fips(true)
4629            .build()
4630            .expect("invalid params");
4631        let resolver = crate::config::endpoint::DefaultResolver::new();
4632        let endpoint = resolver.resolve_endpoint(&params);
4633        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.s3-fips.dualstack.af-south-1.amazonaws.com");
4634        assert_eq!(
4635            endpoint,
4636            ::aws_smithy_types::endpoint::Endpoint::builder()
4637                .url("https://bucket-name.s3-fips.dualstack.af-south-1.amazonaws.com")
4638                .property(
4639                    "authSchemes",
4640                    vec![{
4641                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4642                        out.insert("name".to_string(), "sigv4".to_string().into());
4643                        out.insert("signingName".to_string(), "s3".to_string().into());
4644                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
4645                        out.insert("disableDoubleEncoding".to_string(), true.into());
4646                        out
4647                    }
4648                    .into()]
4649                )
4650                .build()
4651        );
4652    }
4653
4654    /// accelerate + fips = error@af-south-1
4655    #[test]
4656    fn test_163() {
4657        let params = crate::config::endpoint::Params::builder()
4658            .accelerate(true)
4659            .bucket("bucket-name".to_string())
4660            .force_path_style(false)
4661            .region("af-south-1".to_string())
4662            .use_dual_stack(false)
4663            .use_fips(true)
4664            .build()
4665            .expect("invalid params");
4666        let resolver = crate::config::endpoint::DefaultResolver::new();
4667        let endpoint = resolver.resolve_endpoint(&params);
4668        let error = endpoint.expect_err("expected error: Accelerate cannot be used with FIPS [accelerate + fips = error@af-south-1]");
4669        assert_eq!(format!("{}", error), "Accelerate cannot be used with FIPS")
4670    }
4671
4672    /// vanilla path style@us-west-2
4673    #[test]
4674    fn test_164() {
4675        let params = crate::config::endpoint::Params::builder()
4676            .accelerate(false)
4677            .bucket("bucket-name".to_string())
4678            .force_path_style(true)
4679            .region("us-west-2".to_string())
4680            .use_dual_stack(false)
4681            .use_fips(false)
4682            .build()
4683            .expect("invalid params");
4684        let resolver = crate::config::endpoint::DefaultResolver::new();
4685        let endpoint = resolver.resolve_endpoint(&params);
4686        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com/bucket-name");
4687        assert_eq!(
4688            endpoint,
4689            ::aws_smithy_types::endpoint::Endpoint::builder()
4690                .url("https://s3.us-west-2.amazonaws.com/bucket-name")
4691                .property(
4692                    "authSchemes",
4693                    vec![{
4694                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4695                        out.insert("name".to_string(), "sigv4".to_string().into());
4696                        out.insert("signingName".to_string(), "s3".to_string().into());
4697                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4698                        out.insert("disableDoubleEncoding".to_string(), true.into());
4699                        out
4700                    }
4701                    .into()]
4702                )
4703                .build()
4704        );
4705    }
4706
4707    /// fips@us-gov-west-2, bucket is not S3-dns-compatible (subdomains)
4708    #[test]
4709    fn test_165() {
4710        let params = crate::config::endpoint::Params::builder()
4711            .accelerate(false)
4712            .bucket("bucket.with.dots".to_string())
4713            .region("us-gov-west-1".to_string())
4714            .use_dual_stack(false)
4715            .use_fips(true)
4716            .build()
4717            .expect("invalid params");
4718        let resolver = crate::config::endpoint::DefaultResolver::new();
4719        let endpoint = resolver.resolve_endpoint(&params);
4720        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.us-gov-west-1.amazonaws.com/bucket.with.dots");
4721        assert_eq!(
4722            endpoint,
4723            ::aws_smithy_types::endpoint::Endpoint::builder()
4724                .url("https://s3-fips.us-gov-west-1.amazonaws.com/bucket.with.dots")
4725                .property(
4726                    "authSchemes",
4727                    vec![{
4728                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4729                        out.insert("signingName".to_string(), "s3".to_string().into());
4730                        out.insert("signingRegion".to_string(), "us-gov-west-1".to_string().into());
4731                        out.insert("disableDoubleEncoding".to_string(), true.into());
4732                        out.insert("name".to_string(), "sigv4".to_string().into());
4733                        out
4734                    }
4735                    .into()]
4736                )
4737                .build()
4738        );
4739    }
4740
4741    /// path style + accelerate = error@us-west-2
4742    #[test]
4743    fn test_166() {
4744        let params = crate::config::endpoint::Params::builder()
4745            .accelerate(true)
4746            .bucket("bucket-name".to_string())
4747            .force_path_style(true)
4748            .region("us-west-2".to_string())
4749            .use_dual_stack(false)
4750            .use_fips(false)
4751            .build()
4752            .expect("invalid params");
4753        let resolver = crate::config::endpoint::DefaultResolver::new();
4754        let endpoint = resolver.resolve_endpoint(&params);
4755        let error = endpoint
4756            .expect_err("expected error: Path-style addressing cannot be used with S3 Accelerate [path style + accelerate = error@us-west-2]");
4757        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with S3 Accelerate")
4758    }
4759
4760    /// path style + dualstack@us-west-2
4761    #[test]
4762    fn test_167() {
4763        let params = crate::config::endpoint::Params::builder()
4764            .accelerate(false)
4765            .bucket("bucket-name".to_string())
4766            .force_path_style(true)
4767            .region("us-west-2".to_string())
4768            .use_dual_stack(true)
4769            .use_fips(false)
4770            .build()
4771            .expect("invalid params");
4772        let resolver = crate::config::endpoint::DefaultResolver::new();
4773        let endpoint = resolver.resolve_endpoint(&params);
4774        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.us-west-2.amazonaws.com/bucket-name");
4775        assert_eq!(
4776            endpoint,
4777            ::aws_smithy_types::endpoint::Endpoint::builder()
4778                .url("https://s3.dualstack.us-west-2.amazonaws.com/bucket-name")
4779                .property(
4780                    "authSchemes",
4781                    vec![{
4782                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4783                        out.insert("name".to_string(), "sigv4".to_string().into());
4784                        out.insert("signingName".to_string(), "s3".to_string().into());
4785                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4786                        out.insert("disableDoubleEncoding".to_string(), true.into());
4787                        out
4788                    }
4789                    .into()]
4790                )
4791                .build()
4792        );
4793    }
4794
4795    /// path style + arn is error@us-west-2
4796    #[test]
4797    fn test_168() {
4798        let params = crate::config::endpoint::Params::builder()
4799            .accelerate(false)
4800            .bucket("arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket".to_string())
4801            .force_path_style(true)
4802            .region("us-west-2".to_string())
4803            .use_dual_stack(false)
4804            .use_fips(false)
4805            .build()
4806            .expect("invalid params");
4807        let resolver = crate::config::endpoint::DefaultResolver::new();
4808        let endpoint = resolver.resolve_endpoint(&params);
4809        let error =
4810            endpoint.expect_err("expected error: Path-style addressing cannot be used with ARN buckets [path style + arn is error@us-west-2]");
4811        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with ARN buckets")
4812    }
4813
4814    /// path style + invalid DNS name@us-west-2
4815    #[test]
4816    fn test_169() {
4817        let params = crate::config::endpoint::Params::builder()
4818            .accelerate(false)
4819            .bucket("99a_b".to_string())
4820            .force_path_style(true)
4821            .region("us-west-2".to_string())
4822            .use_dual_stack(false)
4823            .use_fips(false)
4824            .build()
4825            .expect("invalid params");
4826        let resolver = crate::config::endpoint::DefaultResolver::new();
4827        let endpoint = resolver.resolve_endpoint(&params);
4828        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com/99a_b");
4829        assert_eq!(
4830            endpoint,
4831            ::aws_smithy_types::endpoint::Endpoint::builder()
4832                .url("https://s3.us-west-2.amazonaws.com/99a_b")
4833                .property(
4834                    "authSchemes",
4835                    vec![{
4836                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4837                        out.insert("name".to_string(), "sigv4".to_string().into());
4838                        out.insert("signingName".to_string(), "s3".to_string().into());
4839                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4840                        out.insert("disableDoubleEncoding".to_string(), true.into());
4841                        out
4842                    }
4843                    .into()]
4844                )
4845                .build()
4846        );
4847    }
4848
4849    /// no path style + invalid DNS name@us-west-2
4850    #[test]
4851    fn test_170() {
4852        let params = crate::config::endpoint::Params::builder()
4853            .accelerate(false)
4854            .bucket("99a_b".to_string())
4855            .region("us-west-2".to_string())
4856            .use_dual_stack(false)
4857            .use_fips(false)
4858            .build()
4859            .expect("invalid params");
4860        let resolver = crate::config::endpoint::DefaultResolver::new();
4861        let endpoint = resolver.resolve_endpoint(&params);
4862        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.us-west-2.amazonaws.com/99a_b");
4863        assert_eq!(
4864            endpoint,
4865            ::aws_smithy_types::endpoint::Endpoint::builder()
4866                .url("https://s3.us-west-2.amazonaws.com/99a_b")
4867                .property(
4868                    "authSchemes",
4869                    vec![{
4870                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4871                        out.insert("name".to_string(), "sigv4".to_string().into());
4872                        out.insert("signingName".to_string(), "s3".to_string().into());
4873                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
4874                        out.insert("disableDoubleEncoding".to_string(), true.into());
4875                        out
4876                    }
4877                    .into()]
4878                )
4879                .build()
4880        );
4881    }
4882
4883    /// vanilla path style@cn-north-1
4884    #[test]
4885    fn test_171() {
4886        let params = crate::config::endpoint::Params::builder()
4887            .accelerate(false)
4888            .bucket("bucket-name".to_string())
4889            .force_path_style(true)
4890            .region("cn-north-1".to_string())
4891            .use_dual_stack(false)
4892            .use_fips(false)
4893            .build()
4894            .expect("invalid params");
4895        let resolver = crate::config::endpoint::DefaultResolver::new();
4896        let endpoint = resolver.resolve_endpoint(&params);
4897        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.cn-north-1.amazonaws.com.cn/bucket-name");
4898        assert_eq!(
4899            endpoint,
4900            ::aws_smithy_types::endpoint::Endpoint::builder()
4901                .url("https://s3.cn-north-1.amazonaws.com.cn/bucket-name")
4902                .property(
4903                    "authSchemes",
4904                    vec![{
4905                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4906                        out.insert("name".to_string(), "sigv4".to_string().into());
4907                        out.insert("signingName".to_string(), "s3".to_string().into());
4908                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
4909                        out.insert("disableDoubleEncoding".to_string(), true.into());
4910                        out
4911                    }
4912                    .into()]
4913                )
4914                .build()
4915        );
4916    }
4917
4918    /// path style + fips@cn-north-1
4919    #[test]
4920    fn test_172() {
4921        let params = crate::config::endpoint::Params::builder()
4922            .accelerate(false)
4923            .bucket("bucket-name".to_string())
4924            .force_path_style(true)
4925            .region("cn-north-1".to_string())
4926            .use_dual_stack(false)
4927            .use_fips(true)
4928            .build()
4929            .expect("invalid params");
4930        let resolver = crate::config::endpoint::DefaultResolver::new();
4931        let endpoint = resolver.resolve_endpoint(&params);
4932        let error = endpoint.expect_err("expected error: Partition does not support FIPS [path style + fips@cn-north-1]");
4933        assert_eq!(format!("{}", error), "Partition does not support FIPS")
4934    }
4935
4936    /// path style + accelerate = error@cn-north-1
4937    #[test]
4938    fn test_173() {
4939        let params = crate::config::endpoint::Params::builder()
4940            .accelerate(true)
4941            .bucket("bucket-name".to_string())
4942            .force_path_style(true)
4943            .region("cn-north-1".to_string())
4944            .use_dual_stack(false)
4945            .use_fips(false)
4946            .build()
4947            .expect("invalid params");
4948        let resolver = crate::config::endpoint::DefaultResolver::new();
4949        let endpoint = resolver.resolve_endpoint(&params);
4950        let error = endpoint
4951            .expect_err("expected error: Path-style addressing cannot be used with S3 Accelerate [path style + accelerate = error@cn-north-1]");
4952        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with S3 Accelerate")
4953    }
4954
4955    /// path style + dualstack@cn-north-1
4956    #[test]
4957    fn test_174() {
4958        let params = crate::config::endpoint::Params::builder()
4959            .accelerate(false)
4960            .bucket("bucket-name".to_string())
4961            .force_path_style(true)
4962            .region("cn-north-1".to_string())
4963            .use_dual_stack(true)
4964            .use_fips(false)
4965            .build()
4966            .expect("invalid params");
4967        let resolver = crate::config::endpoint::DefaultResolver::new();
4968        let endpoint = resolver.resolve_endpoint(&params);
4969        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.cn-north-1.amazonaws.com.cn/bucket-name");
4970        assert_eq!(
4971            endpoint,
4972            ::aws_smithy_types::endpoint::Endpoint::builder()
4973                .url("https://s3.dualstack.cn-north-1.amazonaws.com.cn/bucket-name")
4974                .property(
4975                    "authSchemes",
4976                    vec![{
4977                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
4978                        out.insert("name".to_string(), "sigv4".to_string().into());
4979                        out.insert("signingName".to_string(), "s3".to_string().into());
4980                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
4981                        out.insert("disableDoubleEncoding".to_string(), true.into());
4982                        out
4983                    }
4984                    .into()]
4985                )
4986                .build()
4987        );
4988    }
4989
4990    /// path style + arn is error@cn-north-1
4991    #[test]
4992    fn test_175() {
4993        let params = crate::config::endpoint::Params::builder()
4994            .accelerate(false)
4995            .bucket("arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket".to_string())
4996            .force_path_style(true)
4997            .region("cn-north-1".to_string())
4998            .use_dual_stack(false)
4999            .use_fips(false)
5000            .build()
5001            .expect("invalid params");
5002        let resolver = crate::config::endpoint::DefaultResolver::new();
5003        let endpoint = resolver.resolve_endpoint(&params);
5004        let error =
5005            endpoint.expect_err("expected error: Path-style addressing cannot be used with ARN buckets [path style + arn is error@cn-north-1]");
5006        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with ARN buckets")
5007    }
5008
5009    /// path style + invalid DNS name@cn-north-1
5010    #[test]
5011    fn test_176() {
5012        let params = crate::config::endpoint::Params::builder()
5013            .accelerate(false)
5014            .bucket("99a_b".to_string())
5015            .force_path_style(true)
5016            .region("cn-north-1".to_string())
5017            .use_dual_stack(false)
5018            .use_fips(false)
5019            .build()
5020            .expect("invalid params");
5021        let resolver = crate::config::endpoint::DefaultResolver::new();
5022        let endpoint = resolver.resolve_endpoint(&params);
5023        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.cn-north-1.amazonaws.com.cn/99a_b");
5024        assert_eq!(
5025            endpoint,
5026            ::aws_smithy_types::endpoint::Endpoint::builder()
5027                .url("https://s3.cn-north-1.amazonaws.com.cn/99a_b")
5028                .property(
5029                    "authSchemes",
5030                    vec![{
5031                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5032                        out.insert("name".to_string(), "sigv4".to_string().into());
5033                        out.insert("signingName".to_string(), "s3".to_string().into());
5034                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
5035                        out.insert("disableDoubleEncoding".to_string(), true.into());
5036                        out
5037                    }
5038                    .into()]
5039                )
5040                .build()
5041        );
5042    }
5043
5044    /// no path style + invalid DNS name@cn-north-1
5045    #[test]
5046    fn test_177() {
5047        let params = crate::config::endpoint::Params::builder()
5048            .accelerate(false)
5049            .bucket("99a_b".to_string())
5050            .region("cn-north-1".to_string())
5051            .use_dual_stack(false)
5052            .use_fips(false)
5053            .build()
5054            .expect("invalid params");
5055        let resolver = crate::config::endpoint::DefaultResolver::new();
5056        let endpoint = resolver.resolve_endpoint(&params);
5057        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.cn-north-1.amazonaws.com.cn/99a_b");
5058        assert_eq!(
5059            endpoint,
5060            ::aws_smithy_types::endpoint::Endpoint::builder()
5061                .url("https://s3.cn-north-1.amazonaws.com.cn/99a_b")
5062                .property(
5063                    "authSchemes",
5064                    vec![{
5065                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5066                        out.insert("name".to_string(), "sigv4".to_string().into());
5067                        out.insert("signingName".to_string(), "s3".to_string().into());
5068                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
5069                        out.insert("disableDoubleEncoding".to_string(), true.into());
5070                        out
5071                    }
5072                    .into()]
5073                )
5074                .build()
5075        );
5076    }
5077
5078    /// vanilla path style@af-south-1
5079    #[test]
5080    fn test_178() {
5081        let params = crate::config::endpoint::Params::builder()
5082            .accelerate(false)
5083            .bucket("bucket-name".to_string())
5084            .force_path_style(true)
5085            .region("af-south-1".to_string())
5086            .use_dual_stack(false)
5087            .use_fips(false)
5088            .build()
5089            .expect("invalid params");
5090        let resolver = crate::config::endpoint::DefaultResolver::new();
5091        let endpoint = resolver.resolve_endpoint(&params);
5092        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.af-south-1.amazonaws.com/bucket-name");
5093        assert_eq!(
5094            endpoint,
5095            ::aws_smithy_types::endpoint::Endpoint::builder()
5096                .url("https://s3.af-south-1.amazonaws.com/bucket-name")
5097                .property(
5098                    "authSchemes",
5099                    vec![{
5100                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5101                        out.insert("name".to_string(), "sigv4".to_string().into());
5102                        out.insert("signingName".to_string(), "s3".to_string().into());
5103                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5104                        out.insert("disableDoubleEncoding".to_string(), true.into());
5105                        out
5106                    }
5107                    .into()]
5108                )
5109                .build()
5110        );
5111    }
5112
5113    /// path style + fips@af-south-1
5114    #[test]
5115    fn test_179() {
5116        let params = crate::config::endpoint::Params::builder()
5117            .accelerate(false)
5118            .bucket("bucket-name".to_string())
5119            .force_path_style(true)
5120            .region("af-south-1".to_string())
5121            .use_dual_stack(false)
5122            .use_fips(true)
5123            .build()
5124            .expect("invalid params");
5125        let resolver = crate::config::endpoint::DefaultResolver::new();
5126        let endpoint = resolver.resolve_endpoint(&params);
5127        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-fips.af-south-1.amazonaws.com/bucket-name");
5128        assert_eq!(
5129            endpoint,
5130            ::aws_smithy_types::endpoint::Endpoint::builder()
5131                .url("https://s3-fips.af-south-1.amazonaws.com/bucket-name")
5132                .property(
5133                    "authSchemes",
5134                    vec![{
5135                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5136                        out.insert("signingName".to_string(), "s3".to_string().into());
5137                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5138                        out.insert("disableDoubleEncoding".to_string(), true.into());
5139                        out.insert("name".to_string(), "sigv4".to_string().into());
5140                        out
5141                    }
5142                    .into()]
5143                )
5144                .build()
5145        );
5146    }
5147
5148    /// path style + accelerate = error@af-south-1
5149    #[test]
5150    fn test_180() {
5151        let params = crate::config::endpoint::Params::builder()
5152            .accelerate(true)
5153            .bucket("bucket-name".to_string())
5154            .force_path_style(true)
5155            .region("af-south-1".to_string())
5156            .use_dual_stack(false)
5157            .use_fips(false)
5158            .build()
5159            .expect("invalid params");
5160        let resolver = crate::config::endpoint::DefaultResolver::new();
5161        let endpoint = resolver.resolve_endpoint(&params);
5162        let error = endpoint
5163            .expect_err("expected error: Path-style addressing cannot be used with S3 Accelerate [path style + accelerate = error@af-south-1]");
5164        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with S3 Accelerate")
5165    }
5166
5167    /// path style + dualstack@af-south-1
5168    #[test]
5169    fn test_181() {
5170        let params = crate::config::endpoint::Params::builder()
5171            .accelerate(false)
5172            .bucket("bucket-name".to_string())
5173            .force_path_style(true)
5174            .region("af-south-1".to_string())
5175            .use_dual_stack(true)
5176            .use_fips(false)
5177            .build()
5178            .expect("invalid params");
5179        let resolver = crate::config::endpoint::DefaultResolver::new();
5180        let endpoint = resolver.resolve_endpoint(&params);
5181        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.dualstack.af-south-1.amazonaws.com/bucket-name");
5182        assert_eq!(
5183            endpoint,
5184            ::aws_smithy_types::endpoint::Endpoint::builder()
5185                .url("https://s3.dualstack.af-south-1.amazonaws.com/bucket-name")
5186                .property(
5187                    "authSchemes",
5188                    vec![{
5189                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5190                        out.insert("name".to_string(), "sigv4".to_string().into());
5191                        out.insert("signingName".to_string(), "s3".to_string().into());
5192                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5193                        out.insert("disableDoubleEncoding".to_string(), true.into());
5194                        out
5195                    }
5196                    .into()]
5197                )
5198                .build()
5199        );
5200    }
5201
5202    /// path style + arn is error@af-south-1
5203    #[test]
5204    fn test_182() {
5205        let params = crate::config::endpoint::Params::builder()
5206            .accelerate(false)
5207            .bucket("arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket".to_string())
5208            .force_path_style(true)
5209            .region("af-south-1".to_string())
5210            .use_dual_stack(false)
5211            .use_fips(false)
5212            .build()
5213            .expect("invalid params");
5214        let resolver = crate::config::endpoint::DefaultResolver::new();
5215        let endpoint = resolver.resolve_endpoint(&params);
5216        let error =
5217            endpoint.expect_err("expected error: Path-style addressing cannot be used with ARN buckets [path style + arn is error@af-south-1]");
5218        assert_eq!(format!("{}", error), "Path-style addressing cannot be used with ARN buckets")
5219    }
5220
5221    /// path style + invalid DNS name@af-south-1
5222    #[test]
5223    fn test_183() {
5224        let params = crate::config::endpoint::Params::builder()
5225            .accelerate(false)
5226            .bucket("99a_b".to_string())
5227            .force_path_style(true)
5228            .region("af-south-1".to_string())
5229            .use_dual_stack(false)
5230            .use_fips(false)
5231            .build()
5232            .expect("invalid params");
5233        let resolver = crate::config::endpoint::DefaultResolver::new();
5234        let endpoint = resolver.resolve_endpoint(&params);
5235        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.af-south-1.amazonaws.com/99a_b");
5236        assert_eq!(
5237            endpoint,
5238            ::aws_smithy_types::endpoint::Endpoint::builder()
5239                .url("https://s3.af-south-1.amazonaws.com/99a_b")
5240                .property(
5241                    "authSchemes",
5242                    vec![{
5243                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5244                        out.insert("name".to_string(), "sigv4".to_string().into());
5245                        out.insert("signingName".to_string(), "s3".to_string().into());
5246                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5247                        out.insert("disableDoubleEncoding".to_string(), true.into());
5248                        out
5249                    }
5250                    .into()]
5251                )
5252                .build()
5253        );
5254    }
5255
5256    /// no path style + invalid DNS name@af-south-1
5257    #[test]
5258    fn test_184() {
5259        let params = crate::config::endpoint::Params::builder()
5260            .accelerate(false)
5261            .bucket("99a_b".to_string())
5262            .region("af-south-1".to_string())
5263            .use_dual_stack(false)
5264            .use_fips(false)
5265            .build()
5266            .expect("invalid params");
5267        let resolver = crate::config::endpoint::DefaultResolver::new();
5268        let endpoint = resolver.resolve_endpoint(&params);
5269        let endpoint = endpoint.expect("Expected valid endpoint: https://s3.af-south-1.amazonaws.com/99a_b");
5270        assert_eq!(
5271            endpoint,
5272            ::aws_smithy_types::endpoint::Endpoint::builder()
5273                .url("https://s3.af-south-1.amazonaws.com/99a_b")
5274                .property(
5275                    "authSchemes",
5276                    vec![{
5277                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5278                        out.insert("name".to_string(), "sigv4".to_string().into());
5279                        out.insert("signingName".to_string(), "s3".to_string().into());
5280                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5281                        out.insert("disableDoubleEncoding".to_string(), true.into());
5282                        out
5283                    }
5284                    .into()]
5285                )
5286                .build()
5287        );
5288    }
5289
5290    /// virtual addressing + private link@us-west-2
5291    #[test]
5292    fn test_185() {
5293        let params = crate::config::endpoint::Params::builder()
5294            .accelerate(false)
5295            .bucket("bucket-name".to_string())
5296            .force_path_style(false)
5297            .endpoint("http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5298            .region("us-west-2".to_string())
5299            .use_dual_stack(false)
5300            .use_fips(false)
5301            .build()
5302            .expect("invalid params");
5303        let resolver = crate::config::endpoint::DefaultResolver::new();
5304        let endpoint = resolver.resolve_endpoint(&params);
5305        let endpoint = endpoint.expect("Expected valid endpoint: http://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com");
5306        assert_eq!(
5307            endpoint,
5308            ::aws_smithy_types::endpoint::Endpoint::builder()
5309                .url("http://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com")
5310                .property(
5311                    "authSchemes",
5312                    vec![{
5313                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5314                        out.insert("name".to_string(), "sigv4".to_string().into());
5315                        out.insert("signingName".to_string(), "s3".to_string().into());
5316                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
5317                        out.insert("disableDoubleEncoding".to_string(), true.into());
5318                        out
5319                    }
5320                    .into()]
5321                )
5322                .build()
5323        );
5324    }
5325
5326    /// path style + private link@us-west-2
5327    #[test]
5328    fn test_186() {
5329        let params = crate::config::endpoint::Params::builder()
5330            .accelerate(false)
5331            .bucket("bucket-name".to_string())
5332            .force_path_style(true)
5333            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5334            .region("us-west-2".to_string())
5335            .use_dual_stack(false)
5336            .use_fips(false)
5337            .build()
5338            .expect("invalid params");
5339        let resolver = crate::config::endpoint::DefaultResolver::new();
5340        let endpoint = resolver.resolve_endpoint(&params);
5341        let endpoint = endpoint.expect("Expected valid endpoint: https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name");
5342        assert_eq!(
5343            endpoint,
5344            ::aws_smithy_types::endpoint::Endpoint::builder()
5345                .url("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name")
5346                .property(
5347                    "authSchemes",
5348                    vec![{
5349                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5350                        out.insert("name".to_string(), "sigv4".to_string().into());
5351                        out.insert("signingName".to_string(), "s3".to_string().into());
5352                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
5353                        out.insert("disableDoubleEncoding".to_string(), true.into());
5354                        out
5355                    }
5356                    .into()]
5357                )
5358                .build()
5359        );
5360    }
5361
5362    /// SDK::Host + FIPS@us-west-2
5363    #[test]
5364    fn test_187() {
5365        let params = crate::config::endpoint::Params::builder()
5366            .accelerate(false)
5367            .bucket("bucket-name".to_string())
5368            .force_path_style(false)
5369            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5370            .region("us-west-2".to_string())
5371            .use_dual_stack(false)
5372            .use_fips(true)
5373            .build()
5374            .expect("invalid params");
5375        let resolver = crate::config::endpoint::DefaultResolver::new();
5376        let endpoint = resolver.resolve_endpoint(&params);
5377        let error = endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [SDK::Host + FIPS@us-west-2]");
5378        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
5379    }
5380
5381    /// SDK::Host + DualStack@us-west-2
5382    #[test]
5383    fn test_188() {
5384        let params = crate::config::endpoint::Params::builder()
5385            .accelerate(false)
5386            .bucket("bucket-name".to_string())
5387            .force_path_style(false)
5388            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5389            .region("us-west-2".to_string())
5390            .use_dual_stack(true)
5391            .use_fips(false)
5392            .build()
5393            .expect("invalid params");
5394        let resolver = crate::config::endpoint::DefaultResolver::new();
5395        let endpoint = resolver.resolve_endpoint(&params);
5396        let error =
5397            endpoint.expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [SDK::Host + DualStack@us-west-2]");
5398        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
5399    }
5400
5401    /// SDK::HOST + accelerate@us-west-2
5402    #[test]
5403    fn test_189() {
5404        let params = crate::config::endpoint::Params::builder()
5405            .accelerate(true)
5406            .bucket("bucket-name".to_string())
5407            .force_path_style(false)
5408            .endpoint("http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5409            .region("us-west-2".to_string())
5410            .use_dual_stack(false)
5411            .use_fips(false)
5412            .build()
5413            .expect("invalid params");
5414        let resolver = crate::config::endpoint::DefaultResolver::new();
5415        let endpoint = resolver.resolve_endpoint(&params);
5416        let error = endpoint.expect_err("expected error: A custom endpoint cannot be combined with S3 Accelerate [SDK::HOST + accelerate@us-west-2]");
5417        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with S3 Accelerate")
5418    }
5419
5420    /// SDK::Host + access point ARN@us-west-2
5421    #[test]
5422    fn test_190() {
5423        let params = crate::config::endpoint::Params::builder()
5424            .accelerate(false)
5425            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
5426            .force_path_style(false)
5427            .endpoint("https://beta.example.com".to_string())
5428            .region("us-west-2".to_string())
5429            .use_dual_stack(false)
5430            .use_fips(false)
5431            .build()
5432            .expect("invalid params");
5433        let resolver = crate::config::endpoint::DefaultResolver::new();
5434        let endpoint = resolver.resolve_endpoint(&params);
5435        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.beta.example.com");
5436        assert_eq!(
5437            endpoint,
5438            ::aws_smithy_types::endpoint::Endpoint::builder()
5439                .url("https://myendpoint-123456789012.beta.example.com")
5440                .property(
5441                    "authSchemes",
5442                    vec![{
5443                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5444                        out.insert("name".to_string(), "sigv4".to_string().into());
5445                        out.insert("signingName".to_string(), "s3".to_string().into());
5446                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
5447                        out.insert("disableDoubleEncoding".to_string(), true.into());
5448                        out
5449                    }
5450                    .into()]
5451                )
5452                .build()
5453        );
5454    }
5455
5456    /// virtual addressing + private link@cn-north-1
5457    #[test]
5458    fn test_191() {
5459        let params = crate::config::endpoint::Params::builder()
5460            .accelerate(false)
5461            .bucket("bucket-name".to_string())
5462            .force_path_style(false)
5463            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5464            .region("cn-north-1".to_string())
5465            .use_dual_stack(false)
5466            .use_fips(false)
5467            .build()
5468            .expect("invalid params");
5469        let resolver = crate::config::endpoint::DefaultResolver::new();
5470        let endpoint = resolver.resolve_endpoint(&params);
5471        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com");
5472        assert_eq!(
5473            endpoint,
5474            ::aws_smithy_types::endpoint::Endpoint::builder()
5475                .url("https://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com")
5476                .property(
5477                    "authSchemes",
5478                    vec![{
5479                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5480                        out.insert("name".to_string(), "sigv4".to_string().into());
5481                        out.insert("signingName".to_string(), "s3".to_string().into());
5482                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
5483                        out.insert("disableDoubleEncoding".to_string(), true.into());
5484                        out
5485                    }
5486                    .into()]
5487                )
5488                .build()
5489        );
5490    }
5491
5492    /// path style + private link@cn-north-1
5493    #[test]
5494    fn test_192() {
5495        let params = crate::config::endpoint::Params::builder()
5496            .accelerate(false)
5497            .bucket("bucket-name".to_string())
5498            .force_path_style(true)
5499            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5500            .region("cn-north-1".to_string())
5501            .use_dual_stack(false)
5502            .use_fips(false)
5503            .build()
5504            .expect("invalid params");
5505        let resolver = crate::config::endpoint::DefaultResolver::new();
5506        let endpoint = resolver.resolve_endpoint(&params);
5507        let endpoint = endpoint.expect("Expected valid endpoint: https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name");
5508        assert_eq!(
5509            endpoint,
5510            ::aws_smithy_types::endpoint::Endpoint::builder()
5511                .url("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name")
5512                .property(
5513                    "authSchemes",
5514                    vec![{
5515                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5516                        out.insert("name".to_string(), "sigv4".to_string().into());
5517                        out.insert("signingName".to_string(), "s3".to_string().into());
5518                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
5519                        out.insert("disableDoubleEncoding".to_string(), true.into());
5520                        out
5521                    }
5522                    .into()]
5523                )
5524                .build()
5525        );
5526    }
5527
5528    /// FIPS@cn-north-1
5529    #[test]
5530    fn test_193() {
5531        let params = crate::config::endpoint::Params::builder()
5532            .accelerate(false)
5533            .bucket("bucket-name".to_string())
5534            .force_path_style(false)
5535            .region("cn-north-1".to_string())
5536            .use_dual_stack(false)
5537            .use_fips(true)
5538            .build()
5539            .expect("invalid params");
5540        let resolver = crate::config::endpoint::DefaultResolver::new();
5541        let endpoint = resolver.resolve_endpoint(&params);
5542        let error = endpoint.expect_err("expected error: Partition does not support FIPS [FIPS@cn-north-1]");
5543        assert_eq!(format!("{}", error), "Partition does not support FIPS")
5544    }
5545
5546    /// SDK::Host + DualStack@cn-north-1
5547    #[test]
5548    fn test_194() {
5549        let params = crate::config::endpoint::Params::builder()
5550            .accelerate(false)
5551            .bucket("bucket-name".to_string())
5552            .force_path_style(false)
5553            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5554            .region("cn-north-1".to_string())
5555            .use_dual_stack(true)
5556            .use_fips(false)
5557            .build()
5558            .expect("invalid params");
5559        let resolver = crate::config::endpoint::DefaultResolver::new();
5560        let endpoint = resolver.resolve_endpoint(&params);
5561        let error =
5562            endpoint.expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [SDK::Host + DualStack@cn-north-1]");
5563        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
5564    }
5565
5566    /// SDK::HOST + accelerate@cn-north-1
5567    #[test]
5568    fn test_195() {
5569        let params = crate::config::endpoint::Params::builder()
5570            .accelerate(true)
5571            .bucket("bucket-name".to_string())
5572            .force_path_style(false)
5573            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5574            .region("cn-north-1".to_string())
5575            .use_dual_stack(false)
5576            .use_fips(false)
5577            .build()
5578            .expect("invalid params");
5579        let resolver = crate::config::endpoint::DefaultResolver::new();
5580        let endpoint = resolver.resolve_endpoint(&params);
5581        let error =
5582            endpoint.expect_err("expected error: A custom endpoint cannot be combined with S3 Accelerate [SDK::HOST + accelerate@cn-north-1]");
5583        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with S3 Accelerate")
5584    }
5585
5586    /// SDK::Host + access point ARN@cn-north-1
5587    #[test]
5588    fn test_196() {
5589        let params = crate::config::endpoint::Params::builder()
5590            .accelerate(false)
5591            .bucket("arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
5592            .force_path_style(false)
5593            .endpoint("https://beta.example.com".to_string())
5594            .region("cn-north-1".to_string())
5595            .use_dual_stack(false)
5596            .use_fips(false)
5597            .build()
5598            .expect("invalid params");
5599        let resolver = crate::config::endpoint::DefaultResolver::new();
5600        let endpoint = resolver.resolve_endpoint(&params);
5601        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.beta.example.com");
5602        assert_eq!(
5603            endpoint,
5604            ::aws_smithy_types::endpoint::Endpoint::builder()
5605                .url("https://myendpoint-123456789012.beta.example.com")
5606                .property(
5607                    "authSchemes",
5608                    vec![{
5609                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5610                        out.insert("name".to_string(), "sigv4".to_string().into());
5611                        out.insert("signingName".to_string(), "s3".to_string().into());
5612                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
5613                        out.insert("disableDoubleEncoding".to_string(), true.into());
5614                        out
5615                    }
5616                    .into()]
5617                )
5618                .build()
5619        );
5620    }
5621
5622    /// virtual addressing + private link@af-south-1
5623    #[test]
5624    fn test_197() {
5625        let params = crate::config::endpoint::Params::builder()
5626            .accelerate(false)
5627            .bucket("bucket-name".to_string())
5628            .force_path_style(false)
5629            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5630            .region("af-south-1".to_string())
5631            .use_dual_stack(false)
5632            .use_fips(false)
5633            .build()
5634            .expect("invalid params");
5635        let resolver = crate::config::endpoint::DefaultResolver::new();
5636        let endpoint = resolver.resolve_endpoint(&params);
5637        let endpoint = endpoint.expect("Expected valid endpoint: https://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com");
5638        assert_eq!(
5639            endpoint,
5640            ::aws_smithy_types::endpoint::Endpoint::builder()
5641                .url("https://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com")
5642                .property(
5643                    "authSchemes",
5644                    vec![{
5645                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5646                        out.insert("name".to_string(), "sigv4".to_string().into());
5647                        out.insert("signingName".to_string(), "s3".to_string().into());
5648                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5649                        out.insert("disableDoubleEncoding".to_string(), true.into());
5650                        out
5651                    }
5652                    .into()]
5653                )
5654                .build()
5655        );
5656    }
5657
5658    /// path style + private link@af-south-1
5659    #[test]
5660    fn test_198() {
5661        let params = crate::config::endpoint::Params::builder()
5662            .accelerate(false)
5663            .bucket("bucket-name".to_string())
5664            .force_path_style(true)
5665            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5666            .region("af-south-1".to_string())
5667            .use_dual_stack(false)
5668            .use_fips(false)
5669            .build()
5670            .expect("invalid params");
5671        let resolver = crate::config::endpoint::DefaultResolver::new();
5672        let endpoint = resolver.resolve_endpoint(&params);
5673        let endpoint = endpoint.expect("Expected valid endpoint: https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name");
5674        assert_eq!(
5675            endpoint,
5676            ::aws_smithy_types::endpoint::Endpoint::builder()
5677                .url("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name")
5678                .property(
5679                    "authSchemes",
5680                    vec![{
5681                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5682                        out.insert("name".to_string(), "sigv4".to_string().into());
5683                        out.insert("signingName".to_string(), "s3".to_string().into());
5684                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5685                        out.insert("disableDoubleEncoding".to_string(), true.into());
5686                        out
5687                    }
5688                    .into()]
5689                )
5690                .build()
5691        );
5692    }
5693
5694    /// SDK::Host + FIPS@af-south-1
5695    #[test]
5696    fn test_199() {
5697        let params = crate::config::endpoint::Params::builder()
5698            .accelerate(false)
5699            .bucket("bucket-name".to_string())
5700            .force_path_style(false)
5701            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5702            .region("af-south-1".to_string())
5703            .use_dual_stack(false)
5704            .use_fips(true)
5705            .build()
5706            .expect("invalid params");
5707        let resolver = crate::config::endpoint::DefaultResolver::new();
5708        let endpoint = resolver.resolve_endpoint(&params);
5709        let error = endpoint.expect_err("expected error: A custom endpoint cannot be combined with FIPS [SDK::Host + FIPS@af-south-1]");
5710        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with FIPS")
5711    }
5712
5713    /// SDK::Host + DualStack@af-south-1
5714    #[test]
5715    fn test_200() {
5716        let params = crate::config::endpoint::Params::builder()
5717            .accelerate(false)
5718            .bucket("bucket-name".to_string())
5719            .force_path_style(false)
5720            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5721            .region("af-south-1".to_string())
5722            .use_dual_stack(true)
5723            .use_fips(false)
5724            .build()
5725            .expect("invalid params");
5726        let resolver = crate::config::endpoint::DefaultResolver::new();
5727        let endpoint = resolver.resolve_endpoint(&params);
5728        let error =
5729            endpoint.expect_err("expected error: Cannot set dual-stack in combination with a custom endpoint. [SDK::Host + DualStack@af-south-1]");
5730        assert_eq!(format!("{}", error), "Cannot set dual-stack in combination with a custom endpoint.")
5731    }
5732
5733    /// SDK::HOST + accelerate@af-south-1
5734    #[test]
5735    fn test_201() {
5736        let params = crate::config::endpoint::Params::builder()
5737            .accelerate(true)
5738            .bucket("bucket-name".to_string())
5739            .force_path_style(false)
5740            .endpoint("https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com".to_string())
5741            .region("af-south-1".to_string())
5742            .use_dual_stack(false)
5743            .use_fips(false)
5744            .build()
5745            .expect("invalid params");
5746        let resolver = crate::config::endpoint::DefaultResolver::new();
5747        let endpoint = resolver.resolve_endpoint(&params);
5748        let error =
5749            endpoint.expect_err("expected error: A custom endpoint cannot be combined with S3 Accelerate [SDK::HOST + accelerate@af-south-1]");
5750        assert_eq!(format!("{}", error), "A custom endpoint cannot be combined with S3 Accelerate")
5751    }
5752
5753    /// SDK::Host + access point ARN@af-south-1
5754    #[test]
5755    fn test_202() {
5756        let params = crate::config::endpoint::Params::builder()
5757            .accelerate(false)
5758            .bucket("arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint".to_string())
5759            .force_path_style(false)
5760            .endpoint("https://beta.example.com".to_string())
5761            .region("af-south-1".to_string())
5762            .use_dual_stack(false)
5763            .use_fips(false)
5764            .build()
5765            .expect("invalid params");
5766        let resolver = crate::config::endpoint::DefaultResolver::new();
5767        let endpoint = resolver.resolve_endpoint(&params);
5768        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.beta.example.com");
5769        assert_eq!(
5770            endpoint,
5771            ::aws_smithy_types::endpoint::Endpoint::builder()
5772                .url("https://myendpoint-123456789012.beta.example.com")
5773                .property(
5774                    "authSchemes",
5775                    vec![{
5776                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5777                        out.insert("name".to_string(), "sigv4".to_string().into());
5778                        out.insert("signingName".to_string(), "s3".to_string().into());
5779                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
5780                        out.insert("disableDoubleEncoding".to_string(), true.into());
5781                        out
5782                    }
5783                    .into()]
5784                )
5785                .build()
5786        );
5787    }
5788
5789    /// vanilla access point arn@us-west-2
5790    #[test]
5791    fn test_203() {
5792        let params = crate::config::endpoint::Params::builder()
5793            .accelerate(false)
5794            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
5795            .force_path_style(false)
5796            .region("us-west-2".to_string())
5797            .use_dual_stack(false)
5798            .use_fips(false)
5799            .build()
5800            .expect("invalid params");
5801        let resolver = crate::config::endpoint::DefaultResolver::new();
5802        let endpoint = resolver.resolve_endpoint(&params);
5803        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com");
5804        assert_eq!(
5805            endpoint,
5806            ::aws_smithy_types::endpoint::Endpoint::builder()
5807                .url("https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com")
5808                .property(
5809                    "authSchemes",
5810                    vec![{
5811                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5812                        out.insert("name".to_string(), "sigv4".to_string().into());
5813                        out.insert("signingName".to_string(), "s3".to_string().into());
5814                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
5815                        out.insert("disableDoubleEncoding".to_string(), true.into());
5816                        out
5817                    }
5818                    .into()]
5819                )
5820                .build()
5821        );
5822    }
5823
5824    /// access point arn + FIPS@us-west-2
5825    #[test]
5826    fn test_204() {
5827        let params = crate::config::endpoint::Params::builder()
5828            .accelerate(false)
5829            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
5830            .force_path_style(false)
5831            .region("us-west-2".to_string())
5832            .use_dual_stack(false)
5833            .use_fips(true)
5834            .build()
5835            .expect("invalid params");
5836        let resolver = crate::config::endpoint::DefaultResolver::new();
5837        let endpoint = resolver.resolve_endpoint(&params);
5838        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint-fips.us-west-2.amazonaws.com");
5839        assert_eq!(
5840            endpoint,
5841            ::aws_smithy_types::endpoint::Endpoint::builder()
5842                .url("https://myendpoint-123456789012.s3-accesspoint-fips.us-west-2.amazonaws.com")
5843                .property(
5844                    "authSchemes",
5845                    vec![{
5846                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5847                        out.insert("name".to_string(), "sigv4".to_string().into());
5848                        out.insert("signingName".to_string(), "s3".to_string().into());
5849                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
5850                        out.insert("disableDoubleEncoding".to_string(), true.into());
5851                        out
5852                    }
5853                    .into()]
5854                )
5855                .build()
5856        );
5857    }
5858
5859    /// access point arn + accelerate = error@us-west-2
5860    #[test]
5861    fn test_205() {
5862        let params = crate::config::endpoint::Params::builder()
5863            .accelerate(true)
5864            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
5865            .force_path_style(false)
5866            .region("us-west-2".to_string())
5867            .use_dual_stack(false)
5868            .use_fips(false)
5869            .build()
5870            .expect("invalid params");
5871        let resolver = crate::config::endpoint::DefaultResolver::new();
5872        let endpoint = resolver.resolve_endpoint(&params);
5873        let error =
5874            endpoint.expect_err("expected error: Access Points do not support S3 Accelerate [access point arn + accelerate = error@us-west-2]");
5875        assert_eq!(format!("{}", error), "Access Points do not support S3 Accelerate")
5876    }
5877
5878    /// access point arn + FIPS + DualStack@us-west-2
5879    #[test]
5880    fn test_206() {
5881        let params = crate::config::endpoint::Params::builder()
5882            .accelerate(false)
5883            .bucket("arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint".to_string())
5884            .force_path_style(false)
5885            .region("us-west-2".to_string())
5886            .use_dual_stack(true)
5887            .use_fips(true)
5888            .build()
5889            .expect("invalid params");
5890        let resolver = crate::config::endpoint::DefaultResolver::new();
5891        let endpoint = resolver.resolve_endpoint(&params);
5892        let endpoint =
5893            endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com");
5894        assert_eq!(
5895            endpoint,
5896            ::aws_smithy_types::endpoint::Endpoint::builder()
5897                .url("https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com")
5898                .property(
5899                    "authSchemes",
5900                    vec![{
5901                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5902                        out.insert("name".to_string(), "sigv4".to_string().into());
5903                        out.insert("signingName".to_string(), "s3".to_string().into());
5904                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
5905                        out.insert("disableDoubleEncoding".to_string(), true.into());
5906                        out
5907                    }
5908                    .into()]
5909                )
5910                .build()
5911        );
5912    }
5913
5914    /// vanilla access point arn@cn-north-1
5915    #[test]
5916    fn test_207() {
5917        let params = crate::config::endpoint::Params::builder()
5918            .accelerate(false)
5919            .bucket("arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
5920            .force_path_style(false)
5921            .region("cn-north-1".to_string())
5922            .use_dual_stack(false)
5923            .use_fips(false)
5924            .build()
5925            .expect("invalid params");
5926        let resolver = crate::config::endpoint::DefaultResolver::new();
5927        let endpoint = resolver.resolve_endpoint(&params);
5928        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.cn-north-1.amazonaws.com.cn");
5929        assert_eq!(
5930            endpoint,
5931            ::aws_smithy_types::endpoint::Endpoint::builder()
5932                .url("https://myendpoint-123456789012.s3-accesspoint.cn-north-1.amazonaws.com.cn")
5933                .property(
5934                    "authSchemes",
5935                    vec![{
5936                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
5937                        out.insert("name".to_string(), "sigv4".to_string().into());
5938                        out.insert("signingName".to_string(), "s3".to_string().into());
5939                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
5940                        out.insert("disableDoubleEncoding".to_string(), true.into());
5941                        out
5942                    }
5943                    .into()]
5944                )
5945                .build()
5946        );
5947    }
5948
5949    /// access point arn + FIPS@cn-north-1
5950    #[test]
5951    fn test_208() {
5952        let params = crate::config::endpoint::Params::builder()
5953            .accelerate(false)
5954            .bucket("arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
5955            .force_path_style(false)
5956            .region("cn-north-1".to_string())
5957            .use_dual_stack(false)
5958            .use_fips(true)
5959            .build()
5960            .expect("invalid params");
5961        let resolver = crate::config::endpoint::DefaultResolver::new();
5962        let endpoint = resolver.resolve_endpoint(&params);
5963        let error = endpoint.expect_err("expected error: Partition does not support FIPS [access point arn + FIPS@cn-north-1]");
5964        assert_eq!(format!("{}", error), "Partition does not support FIPS")
5965    }
5966
5967    /// access point arn + accelerate = error@cn-north-1
5968    #[test]
5969    fn test_209() {
5970        let params = crate::config::endpoint::Params::builder()
5971            .accelerate(true)
5972            .bucket("arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
5973            .force_path_style(false)
5974            .region("cn-north-1".to_string())
5975            .use_dual_stack(false)
5976            .use_fips(false)
5977            .build()
5978            .expect("invalid params");
5979        let resolver = crate::config::endpoint::DefaultResolver::new();
5980        let endpoint = resolver.resolve_endpoint(&params);
5981        let error =
5982            endpoint.expect_err("expected error: Access Points do not support S3 Accelerate [access point arn + accelerate = error@cn-north-1]");
5983        assert_eq!(format!("{}", error), "Access Points do not support S3 Accelerate")
5984    }
5985
5986    /// access point arn + FIPS + DualStack@cn-north-1
5987    #[test]
5988    fn test_210() {
5989        let params = crate::config::endpoint::Params::builder()
5990            .accelerate(false)
5991            .bucket("arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint".to_string())
5992            .force_path_style(false)
5993            .region("cn-north-1".to_string())
5994            .use_dual_stack(true)
5995            .use_fips(true)
5996            .build()
5997            .expect("invalid params");
5998        let resolver = crate::config::endpoint::DefaultResolver::new();
5999        let endpoint = resolver.resolve_endpoint(&params);
6000        let error = endpoint.expect_err("expected error: Partition does not support FIPS [access point arn + FIPS + DualStack@cn-north-1]");
6001        assert_eq!(format!("{}", error), "Partition does not support FIPS")
6002    }
6003
6004    /// vanilla access point arn@af-south-1
6005    #[test]
6006    fn test_211() {
6007        let params = crate::config::endpoint::Params::builder()
6008            .accelerate(false)
6009            .bucket("arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint".to_string())
6010            .force_path_style(false)
6011            .region("af-south-1".to_string())
6012            .use_dual_stack(false)
6013            .use_fips(false)
6014            .build()
6015            .expect("invalid params");
6016        let resolver = crate::config::endpoint::DefaultResolver::new();
6017        let endpoint = resolver.resolve_endpoint(&params);
6018        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint.af-south-1.amazonaws.com");
6019        assert_eq!(
6020            endpoint,
6021            ::aws_smithy_types::endpoint::Endpoint::builder()
6022                .url("https://myendpoint-123456789012.s3-accesspoint.af-south-1.amazonaws.com")
6023                .property(
6024                    "authSchemes",
6025                    vec![{
6026                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6027                        out.insert("name".to_string(), "sigv4".to_string().into());
6028                        out.insert("signingName".to_string(), "s3".to_string().into());
6029                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
6030                        out.insert("disableDoubleEncoding".to_string(), true.into());
6031                        out
6032                    }
6033                    .into()]
6034                )
6035                .build()
6036        );
6037    }
6038
6039    /// access point arn + FIPS@af-south-1
6040    #[test]
6041    fn test_212() {
6042        let params = crate::config::endpoint::Params::builder()
6043            .accelerate(false)
6044            .bucket("arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint".to_string())
6045            .force_path_style(false)
6046            .region("af-south-1".to_string())
6047            .use_dual_stack(false)
6048            .use_fips(true)
6049            .build()
6050            .expect("invalid params");
6051        let resolver = crate::config::endpoint::DefaultResolver::new();
6052        let endpoint = resolver.resolve_endpoint(&params);
6053        let endpoint = endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint-fips.af-south-1.amazonaws.com");
6054        assert_eq!(
6055            endpoint,
6056            ::aws_smithy_types::endpoint::Endpoint::builder()
6057                .url("https://myendpoint-123456789012.s3-accesspoint-fips.af-south-1.amazonaws.com")
6058                .property(
6059                    "authSchemes",
6060                    vec![{
6061                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6062                        out.insert("name".to_string(), "sigv4".to_string().into());
6063                        out.insert("signingName".to_string(), "s3".to_string().into());
6064                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
6065                        out.insert("disableDoubleEncoding".to_string(), true.into());
6066                        out
6067                    }
6068                    .into()]
6069                )
6070                .build()
6071        );
6072    }
6073
6074    /// access point arn + accelerate = error@af-south-1
6075    #[test]
6076    fn test_213() {
6077        let params = crate::config::endpoint::Params::builder()
6078            .accelerate(true)
6079            .bucket("arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint".to_string())
6080            .force_path_style(false)
6081            .region("af-south-1".to_string())
6082            .use_dual_stack(false)
6083            .use_fips(false)
6084            .build()
6085            .expect("invalid params");
6086        let resolver = crate::config::endpoint::DefaultResolver::new();
6087        let endpoint = resolver.resolve_endpoint(&params);
6088        let error =
6089            endpoint.expect_err("expected error: Access Points do not support S3 Accelerate [access point arn + accelerate = error@af-south-1]");
6090        assert_eq!(format!("{}", error), "Access Points do not support S3 Accelerate")
6091    }
6092
6093    /// access point arn + FIPS + DualStack@af-south-1
6094    #[test]
6095    fn test_214() {
6096        let params = crate::config::endpoint::Params::builder()
6097            .accelerate(false)
6098            .bucket("arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint".to_string())
6099            .force_path_style(false)
6100            .region("af-south-1".to_string())
6101            .use_dual_stack(true)
6102            .use_fips(true)
6103            .build()
6104            .expect("invalid params");
6105        let resolver = crate::config::endpoint::DefaultResolver::new();
6106        let endpoint = resolver.resolve_endpoint(&params);
6107        let endpoint =
6108            endpoint.expect("Expected valid endpoint: https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.af-south-1.amazonaws.com");
6109        assert_eq!(
6110            endpoint,
6111            ::aws_smithy_types::endpoint::Endpoint::builder()
6112                .url("https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.af-south-1.amazonaws.com")
6113                .property(
6114                    "authSchemes",
6115                    vec![{
6116                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6117                        out.insert("name".to_string(), "sigv4".to_string().into());
6118                        out.insert("signingName".to_string(), "s3".to_string().into());
6119                        out.insert("signingRegion".to_string(), "af-south-1".to_string().into());
6120                        out.insert("disableDoubleEncoding".to_string(), true.into());
6121                        out
6122                    }
6123                    .into()]
6124                )
6125                .build()
6126        );
6127    }
6128
6129    /// S3 outposts vanilla test
6130    #[test]
6131    fn test_215() {
6132        let params = crate::config::endpoint::Params::builder()
6133            .region("us-west-2".to_string())
6134            .use_fips(false)
6135            .use_dual_stack(false)
6136            .accelerate(false)
6137            .bucket("arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
6138            .build()
6139            .expect("invalid params");
6140        let resolver = crate::config::endpoint::DefaultResolver::new();
6141        let endpoint = resolver.resolve_endpoint(&params);
6142        let endpoint =
6143            endpoint.expect("Expected valid endpoint: https://reports-123456789012.op-01234567890123456.s3-outposts.us-west-2.amazonaws.com");
6144        assert_eq!(
6145            endpoint,
6146            ::aws_smithy_types::endpoint::Endpoint::builder()
6147                .url("https://reports-123456789012.op-01234567890123456.s3-outposts.us-west-2.amazonaws.com")
6148                .property(
6149                    "authSchemes",
6150                    vec![
6151                        {
6152                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6153                            out.insert("name".to_string(), "sigv4a".to_string().into());
6154                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6155                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
6156                            out.insert("disableDoubleEncoding".to_string(), true.into());
6157                            out
6158                        }
6159                        .into(),
6160                        {
6161                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6162                            out.insert("name".to_string(), "sigv4".to_string().into());
6163                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6164                            out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
6165                            out.insert("disableDoubleEncoding".to_string(), true.into());
6166                            out
6167                        }
6168                        .into()
6169                    ]
6170                )
6171                .build()
6172        );
6173    }
6174
6175    /// S3 outposts custom endpoint
6176    #[test]
6177    fn test_216() {
6178        let params = crate::config::endpoint::Params::builder()
6179            .region("us-west-2".to_string())
6180            .use_fips(false)
6181            .use_dual_stack(false)
6182            .accelerate(false)
6183            .bucket("arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
6184            .endpoint("https://example.amazonaws.com".to_string())
6185            .build()
6186            .expect("invalid params");
6187        let resolver = crate::config::endpoint::DefaultResolver::new();
6188        let endpoint = resolver.resolve_endpoint(&params);
6189        let endpoint = endpoint.expect("Expected valid endpoint: https://reports-123456789012.op-01234567890123456.example.amazonaws.com");
6190        assert_eq!(
6191            endpoint,
6192            ::aws_smithy_types::endpoint::Endpoint::builder()
6193                .url("https://reports-123456789012.op-01234567890123456.example.amazonaws.com")
6194                .property(
6195                    "authSchemes",
6196                    vec![
6197                        {
6198                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6199                            out.insert("name".to_string(), "sigv4a".to_string().into());
6200                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6201                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
6202                            out.insert("disableDoubleEncoding".to_string(), true.into());
6203                            out
6204                        }
6205                        .into(),
6206                        {
6207                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6208                            out.insert("name".to_string(), "sigv4".to_string().into());
6209                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6210                            out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
6211                            out.insert("disableDoubleEncoding".to_string(), true.into());
6212                            out
6213                        }
6214                        .into()
6215                    ]
6216                )
6217                .build()
6218        );
6219    }
6220
6221    /// outposts arn with region mismatch and UseArnRegion=false
6222    #[test]
6223    fn test_217() {
6224        let params = crate::config::endpoint::Params::builder()
6225            .accelerate(false)
6226            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint".to_string())
6227            .force_path_style(false)
6228            .use_arn_region(false)
6229            .region("us-west-2".to_string())
6230            .use_dual_stack(false)
6231            .use_fips(false)
6232            .build()
6233            .expect("invalid params");
6234        let resolver = crate::config::endpoint::DefaultResolver::new();
6235        let endpoint = resolver.resolve_endpoint(&params);
6236        let error = endpoint.expect_err("expected error: Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false` [outposts arn with region mismatch and UseArnRegion=false]");
6237        assert_eq!(
6238            format!("{}", error),
6239            "Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`"
6240        )
6241    }
6242
6243    /// outposts arn with region mismatch, custom region and UseArnRegion=false
6244    #[test]
6245    fn test_218() {
6246        let params = crate::config::endpoint::Params::builder()
6247            .accelerate(false)
6248            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint".to_string())
6249            .endpoint("https://example.com".to_string())
6250            .force_path_style(false)
6251            .use_arn_region(false)
6252            .region("us-west-2".to_string())
6253            .use_dual_stack(false)
6254            .use_fips(false)
6255            .build()
6256            .expect("invalid params");
6257        let resolver = crate::config::endpoint::DefaultResolver::new();
6258        let endpoint = resolver.resolve_endpoint(&params);
6259        let error = endpoint.expect_err("expected error: Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false` [outposts arn with region mismatch, custom region and UseArnRegion=false]");
6260        assert_eq!(
6261            format!("{}", error),
6262            "Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`"
6263        )
6264    }
6265
6266    /// outposts arn with region mismatch and UseArnRegion=true
6267    #[test]
6268    fn test_219() {
6269        let params = crate::config::endpoint::Params::builder()
6270            .accelerate(false)
6271            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint".to_string())
6272            .force_path_style(false)
6273            .use_arn_region(true)
6274            .region("us-west-2".to_string())
6275            .use_dual_stack(false)
6276            .use_fips(false)
6277            .build()
6278            .expect("invalid params");
6279        let resolver = crate::config::endpoint::DefaultResolver::new();
6280        let endpoint = resolver.resolve_endpoint(&params);
6281        let endpoint =
6282            endpoint.expect("Expected valid endpoint: https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com");
6283        assert_eq!(
6284            endpoint,
6285            ::aws_smithy_types::endpoint::Endpoint::builder()
6286                .url("https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com")
6287                .property(
6288                    "authSchemes",
6289                    vec![
6290                        {
6291                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6292                            out.insert("name".to_string(), "sigv4a".to_string().into());
6293                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6294                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
6295                            out.insert("disableDoubleEncoding".to_string(), true.into());
6296                            out
6297                        }
6298                        .into(),
6299                        {
6300                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6301                            out.insert("name".to_string(), "sigv4".to_string().into());
6302                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6303                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6304                            out.insert("disableDoubleEncoding".to_string(), true.into());
6305                            out
6306                        }
6307                        .into()
6308                    ]
6309                )
6310                .build()
6311        );
6312    }
6313
6314    /// outposts arn with region mismatch and UseArnRegion unset
6315    #[test]
6316    fn test_220() {
6317        let params = crate::config::endpoint::Params::builder()
6318            .accelerate(false)
6319            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint".to_string())
6320            .force_path_style(false)
6321            .region("us-west-2".to_string())
6322            .use_dual_stack(false)
6323            .use_fips(false)
6324            .build()
6325            .expect("invalid params");
6326        let resolver = crate::config::endpoint::DefaultResolver::new();
6327        let endpoint = resolver.resolve_endpoint(&params);
6328        let endpoint =
6329            endpoint.expect("Expected valid endpoint: https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com");
6330        assert_eq!(
6331            endpoint,
6332            ::aws_smithy_types::endpoint::Endpoint::builder()
6333                .url("https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com")
6334                .property(
6335                    "authSchemes",
6336                    vec![
6337                        {
6338                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6339                            out.insert("name".to_string(), "sigv4a".to_string().into());
6340                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6341                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
6342                            out.insert("disableDoubleEncoding".to_string(), true.into());
6343                            out
6344                        }
6345                        .into(),
6346                        {
6347                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6348                            out.insert("name".to_string(), "sigv4".to_string().into());
6349                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6350                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6351                            out.insert("disableDoubleEncoding".to_string(), true.into());
6352                            out
6353                        }
6354                        .into()
6355                    ]
6356                )
6357                .build()
6358        );
6359    }
6360
6361    /// outposts arn with partition mismatch and UseArnRegion=true
6362    #[test]
6363    fn test_221() {
6364        let params = crate::config::endpoint::Params::builder()
6365            .accelerate(false)
6366            .bucket("arn:aws:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint".to_string())
6367            .force_path_style(false)
6368            .use_arn_region(true)
6369            .region("us-west-2".to_string())
6370            .use_dual_stack(false)
6371            .use_fips(false)
6372            .build()
6373            .expect("invalid params");
6374        let resolver = crate::config::endpoint::DefaultResolver::new();
6375        let endpoint = resolver.resolve_endpoint(&params);
6376        let error = endpoint.expect_err("expected error: Client was configured for partition `aws` but ARN (`arn:aws:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint`) has `aws-cn` [outposts arn with partition mismatch and UseArnRegion=true]");
6377        assert_eq!(format!("{}", error), "Client was configured for partition `aws` but ARN (`arn:aws:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint`) has `aws-cn`")
6378    }
6379
6380    /// ARN with UseGlobalEndpoint and use-east-1 region uses the regional endpoint
6381    #[test]
6382    fn test_222() {
6383        let params = crate::config::endpoint::Params::builder()
6384            .region("us-east-1".to_string())
6385            .use_global_endpoint(true)
6386            .use_fips(false)
6387            .use_dual_stack(false)
6388            .accelerate(false)
6389            .bucket("arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
6390            .build()
6391            .expect("invalid params");
6392        let resolver = crate::config::endpoint::DefaultResolver::new();
6393        let endpoint = resolver.resolve_endpoint(&params);
6394        let endpoint =
6395            endpoint.expect("Expected valid endpoint: https://reports-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com");
6396        assert_eq!(
6397            endpoint,
6398            ::aws_smithy_types::endpoint::Endpoint::builder()
6399                .url("https://reports-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com")
6400                .property(
6401                    "authSchemes",
6402                    vec![
6403                        {
6404                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6405                            out.insert("name".to_string(), "sigv4a".to_string().into());
6406                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6407                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
6408                            out.insert("disableDoubleEncoding".to_string(), true.into());
6409                            out
6410                        }
6411                        .into(),
6412                        {
6413                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6414                            out.insert("name".to_string(), "sigv4".to_string().into());
6415                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
6416                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6417                            out.insert("disableDoubleEncoding".to_string(), true.into());
6418                            out
6419                        }
6420                        .into()
6421                    ]
6422                )
6423                .build()
6424        );
6425    }
6426
6427    /// S3 outposts does not support dualstack
6428    #[test]
6429    fn test_223() {
6430        let params = crate::config::endpoint::Params::builder()
6431            .region("us-east-1".to_string())
6432            .use_fips(false)
6433            .use_dual_stack(true)
6434            .accelerate(false)
6435            .bucket("arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
6436            .build()
6437            .expect("invalid params");
6438        let resolver = crate::config::endpoint::DefaultResolver::new();
6439        let endpoint = resolver.resolve_endpoint(&params);
6440        let error = endpoint.expect_err("expected error: S3 Outposts does not support Dual-stack [S3 outposts does not support dualstack]");
6441        assert_eq!(format!("{}", error), "S3 Outposts does not support Dual-stack")
6442    }
6443
6444    /// S3 outposts does not support fips
6445    #[test]
6446    fn test_224() {
6447        let params = crate::config::endpoint::Params::builder()
6448            .region("us-east-1".to_string())
6449            .use_fips(true)
6450            .use_dual_stack(false)
6451            .accelerate(false)
6452            .bucket("arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
6453            .build()
6454            .expect("invalid params");
6455        let resolver = crate::config::endpoint::DefaultResolver::new();
6456        let endpoint = resolver.resolve_endpoint(&params);
6457        let error = endpoint.expect_err("expected error: S3 Outposts does not support FIPS [S3 outposts does not support fips]");
6458        assert_eq!(format!("{}", error), "S3 Outposts does not support FIPS")
6459    }
6460
6461    /// S3 outposts does not support accelerate
6462    #[test]
6463    fn test_225() {
6464        let params = crate::config::endpoint::Params::builder()
6465            .region("us-east-1".to_string())
6466            .use_fips(false)
6467            .use_dual_stack(false)
6468            .accelerate(true)
6469            .bucket("arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports".to_string())
6470            .build()
6471            .expect("invalid params");
6472        let resolver = crate::config::endpoint::DefaultResolver::new();
6473        let endpoint = resolver.resolve_endpoint(&params);
6474        let error = endpoint.expect_err("expected error: S3 Outposts does not support S3 Accelerate [S3 outposts does not support accelerate]");
6475        assert_eq!(format!("{}", error), "S3 Outposts does not support S3 Accelerate")
6476    }
6477
6478    /// validates against subresource
6479    #[test]
6480    fn test_226() {
6481        let params = crate::config::endpoint::Params::builder()
6482            .region("us-west-2".to_string())
6483            .use_fips(false)
6484            .use_dual_stack(false)
6485            .accelerate(false)
6486            .bucket("arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:mybucket:object:foo".to_string())
6487            .build()
6488            .expect("invalid params");
6489        let resolver = crate::config::endpoint::DefaultResolver::new();
6490        let endpoint = resolver.resolve_endpoint(&params);
6491        let error =
6492            endpoint.expect_err("expected error: Invalid Arn: Outpost Access Point ARN contains sub resources [validates against subresource]");
6493        assert_eq!(format!("{}", error), "Invalid Arn: Outpost Access Point ARN contains sub resources")
6494    }
6495
6496    /// object lambda @us-east-1
6497    #[test]
6498    fn test_227() {
6499        let params = crate::config::endpoint::Params::builder()
6500            .region("us-east-1".to_string())
6501            .use_fips(false)
6502            .use_dual_stack(false)
6503            .accelerate(false)
6504            .use_arn_region(false)
6505            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
6506            .build()
6507            .expect("invalid params");
6508        let resolver = crate::config::endpoint::DefaultResolver::new();
6509        let endpoint = resolver.resolve_endpoint(&params);
6510        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com");
6511        assert_eq!(
6512            endpoint,
6513            ::aws_smithy_types::endpoint::Endpoint::builder()
6514                .url("https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com")
6515                .property(
6516                    "authSchemes",
6517                    vec![{
6518                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6519                        out.insert("name".to_string(), "sigv4".to_string().into());
6520                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6521                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6522                        out.insert("disableDoubleEncoding".to_string(), true.into());
6523                        out
6524                    }
6525                    .into()]
6526                )
6527                .build()
6528        );
6529    }
6530
6531    /// object lambda @us-west-2
6532    #[test]
6533    fn test_228() {
6534        let params = crate::config::endpoint::Params::builder()
6535            .region("us-west-2".to_string())
6536            .use_fips(false)
6537            .use_dual_stack(false)
6538            .accelerate(false)
6539            .use_arn_region(false)
6540            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner".to_string())
6541            .build()
6542            .expect("invalid params");
6543        let resolver = crate::config::endpoint::DefaultResolver::new();
6544        let endpoint = resolver.resolve_endpoint(&params);
6545        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-west-2.amazonaws.com");
6546        assert_eq!(
6547            endpoint,
6548            ::aws_smithy_types::endpoint::Endpoint::builder()
6549                .url("https://mybanner-123456789012.s3-object-lambda.us-west-2.amazonaws.com")
6550                .property(
6551                    "authSchemes",
6552                    vec![{
6553                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6554                        out.insert("name".to_string(), "sigv4".to_string().into());
6555                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6556                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
6557                        out.insert("disableDoubleEncoding".to_string(), true.into());
6558                        out
6559                    }
6560                    .into()]
6561                )
6562                .build()
6563        );
6564    }
6565
6566    /// object lambda, colon resource deliminator @us-west-2
6567    #[test]
6568    fn test_229() {
6569        let params = crate::config::endpoint::Params::builder()
6570            .region("us-west-2".to_string())
6571            .use_fips(false)
6572            .use_dual_stack(false)
6573            .accelerate(false)
6574            .use_arn_region(false)
6575            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:mybanner".to_string())
6576            .build()
6577            .expect("invalid params");
6578        let resolver = crate::config::endpoint::DefaultResolver::new();
6579        let endpoint = resolver.resolve_endpoint(&params);
6580        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-west-2.amazonaws.com");
6581        assert_eq!(
6582            endpoint,
6583            ::aws_smithy_types::endpoint::Endpoint::builder()
6584                .url("https://mybanner-123456789012.s3-object-lambda.us-west-2.amazonaws.com")
6585                .property(
6586                    "authSchemes",
6587                    vec![{
6588                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6589                        out.insert("name".to_string(), "sigv4".to_string().into());
6590                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6591                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
6592                        out.insert("disableDoubleEncoding".to_string(), true.into());
6593                        out
6594                    }
6595                    .into()]
6596                )
6597                .build()
6598        );
6599    }
6600
6601    /// object lambda @us-east-1, client region us-west-2, useArnRegion=true
6602    #[test]
6603    fn test_230() {
6604        let params = crate::config::endpoint::Params::builder()
6605            .region("us-west-2".to_string())
6606            .use_fips(false)
6607            .use_dual_stack(false)
6608            .accelerate(false)
6609            .use_arn_region(true)
6610            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
6611            .build()
6612            .expect("invalid params");
6613        let resolver = crate::config::endpoint::DefaultResolver::new();
6614        let endpoint = resolver.resolve_endpoint(&params);
6615        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com");
6616        assert_eq!(
6617            endpoint,
6618            ::aws_smithy_types::endpoint::Endpoint::builder()
6619                .url("https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com")
6620                .property(
6621                    "authSchemes",
6622                    vec![{
6623                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6624                        out.insert("name".to_string(), "sigv4".to_string().into());
6625                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6626                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6627                        out.insert("disableDoubleEncoding".to_string(), true.into());
6628                        out
6629                    }
6630                    .into()]
6631                )
6632                .build()
6633        );
6634    }
6635
6636    /// object lambda @us-east-1, client region s3-external-1, useArnRegion=true
6637    #[test]
6638    fn test_231() {
6639        let params = crate::config::endpoint::Params::builder()
6640            .region("s3-external-1".to_string())
6641            .use_fips(false)
6642            .use_dual_stack(false)
6643            .accelerate(false)
6644            .use_arn_region(true)
6645            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
6646            .build()
6647            .expect("invalid params");
6648        let resolver = crate::config::endpoint::DefaultResolver::new();
6649        let endpoint = resolver.resolve_endpoint(&params);
6650        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com");
6651        assert_eq!(
6652            endpoint,
6653            ::aws_smithy_types::endpoint::Endpoint::builder()
6654                .url("https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com")
6655                .property(
6656                    "authSchemes",
6657                    vec![{
6658                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6659                        out.insert("name".to_string(), "sigv4".to_string().into());
6660                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6661                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6662                        out.insert("disableDoubleEncoding".to_string(), true.into());
6663                        out
6664                    }
6665                    .into()]
6666                )
6667                .build()
6668        );
6669    }
6670
6671    /// object lambda @us-east-1, client region s3-external-1, useArnRegion=false
6672    #[test]
6673    fn test_232() {
6674        let params = crate::config::endpoint::Params::builder()
6675            .region("s3-external-1".to_string())
6676            .use_fips(false)
6677            .use_dual_stack(false)
6678            .accelerate(false)
6679            .use_arn_region(false)
6680            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
6681            .build()
6682            .expect("invalid params");
6683        let resolver = crate::config::endpoint::DefaultResolver::new();
6684        let endpoint = resolver.resolve_endpoint(&params);
6685        let error = endpoint.expect_err("expected error: Invalid configuration: region from ARN `us-east-1` does not match client region `s3-external-1` and UseArnRegion is `false` [object lambda @us-east-1, client region s3-external-1, useArnRegion=false]");
6686        assert_eq!(
6687            format!("{}", error),
6688            "Invalid configuration: region from ARN `us-east-1` does not match client region `s3-external-1` and UseArnRegion is `false`"
6689        )
6690    }
6691
6692    /// object lambda @us-east-1, client region aws-global, useArnRegion=true
6693    #[test]
6694    fn test_233() {
6695        let params = crate::config::endpoint::Params::builder()
6696            .region("aws-global".to_string())
6697            .use_fips(false)
6698            .use_dual_stack(false)
6699            .accelerate(false)
6700            .use_arn_region(true)
6701            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
6702            .build()
6703            .expect("invalid params");
6704        let resolver = crate::config::endpoint::DefaultResolver::new();
6705        let endpoint = resolver.resolve_endpoint(&params);
6706        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com");
6707        assert_eq!(
6708            endpoint,
6709            ::aws_smithy_types::endpoint::Endpoint::builder()
6710                .url("https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com")
6711                .property(
6712                    "authSchemes",
6713                    vec![{
6714                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6715                        out.insert("name".to_string(), "sigv4".to_string().into());
6716                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6717                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
6718                        out.insert("disableDoubleEncoding".to_string(), true.into());
6719                        out
6720                    }
6721                    .into()]
6722                )
6723                .build()
6724        );
6725    }
6726
6727    /// object lambda @us-east-1, client region aws-global, useArnRegion=false
6728    #[test]
6729    fn test_234() {
6730        let params = crate::config::endpoint::Params::builder()
6731            .region("aws-global".to_string())
6732            .use_fips(false)
6733            .use_dual_stack(false)
6734            .accelerate(false)
6735            .use_arn_region(false)
6736            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
6737            .build()
6738            .expect("invalid params");
6739        let resolver = crate::config::endpoint::DefaultResolver::new();
6740        let endpoint = resolver.resolve_endpoint(&params);
6741        let error = endpoint.expect_err("expected error: Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false` [object lambda @us-east-1, client region aws-global, useArnRegion=false]");
6742        assert_eq!(
6743            format!("{}", error),
6744            "Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`"
6745        )
6746    }
6747
6748    /// object lambda @cn-north-1, client region us-west-2 (cross partition), useArnRegion=true
6749    #[test]
6750    fn test_235() {
6751        let params = crate::config::endpoint::Params::builder()
6752            .region("aws-global".to_string())
6753            .use_fips(false)
6754            .use_dual_stack(false)
6755            .accelerate(false)
6756            .use_arn_region(true)
6757            .bucket("arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner".to_string())
6758            .build()
6759            .expect("invalid params");
6760        let resolver = crate::config::endpoint::DefaultResolver::new();
6761        let endpoint = resolver.resolve_endpoint(&params);
6762        let error = endpoint.expect_err("expected error: Client was configured for partition `aws` but ARN (`arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner`) has `aws-cn` [object lambda @cn-north-1, client region us-west-2 (cross partition), useArnRegion=true]");
6763        assert_eq!(format!("{}", error), "Client was configured for partition `aws` but ARN (`arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner`) has `aws-cn`")
6764    }
6765
6766    /// object lambda with dualstack
6767    #[test]
6768    fn test_236() {
6769        let params = crate::config::endpoint::Params::builder()
6770            .region("us-west-2".to_string())
6771            .use_fips(false)
6772            .use_dual_stack(true)
6773            .accelerate(false)
6774            .use_arn_region(false)
6775            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner".to_string())
6776            .build()
6777            .expect("invalid params");
6778        let resolver = crate::config::endpoint::DefaultResolver::new();
6779        let endpoint = resolver.resolve_endpoint(&params);
6780        let error = endpoint.expect_err("expected error: S3 Object Lambda does not support Dual-stack [object lambda with dualstack]");
6781        assert_eq!(format!("{}", error), "S3 Object Lambda does not support Dual-stack")
6782    }
6783
6784    /// object lambda @us-gov-east-1
6785    #[test]
6786    fn test_237() {
6787        let params = crate::config::endpoint::Params::builder()
6788            .region("us-gov-east-1".to_string())
6789            .use_fips(false)
6790            .use_dual_stack(false)
6791            .accelerate(false)
6792            .use_arn_region(false)
6793            .bucket("arn:aws-us-gov:s3-object-lambda:us-gov-east-1:123456789012:accesspoint/mybanner".to_string())
6794            .build()
6795            .expect("invalid params");
6796        let resolver = crate::config::endpoint::DefaultResolver::new();
6797        let endpoint = resolver.resolve_endpoint(&params);
6798        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda.us-gov-east-1.amazonaws.com");
6799        assert_eq!(
6800            endpoint,
6801            ::aws_smithy_types::endpoint::Endpoint::builder()
6802                .url("https://mybanner-123456789012.s3-object-lambda.us-gov-east-1.amazonaws.com")
6803                .property(
6804                    "authSchemes",
6805                    vec![{
6806                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6807                        out.insert("name".to_string(), "sigv4".to_string().into());
6808                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6809                        out.insert("signingRegion".to_string(), "us-gov-east-1".to_string().into());
6810                        out.insert("disableDoubleEncoding".to_string(), true.into());
6811                        out
6812                    }
6813                    .into()]
6814                )
6815                .build()
6816        );
6817    }
6818
6819    /// object lambda @us-gov-east-1, with fips
6820    #[test]
6821    fn test_238() {
6822        let params = crate::config::endpoint::Params::builder()
6823            .region("us-gov-east-1".to_string())
6824            .use_fips(true)
6825            .use_dual_stack(false)
6826            .accelerate(false)
6827            .use_arn_region(false)
6828            .bucket("arn:aws-us-gov:s3-object-lambda:us-gov-east-1:123456789012:accesspoint/mybanner".to_string())
6829            .build()
6830            .expect("invalid params");
6831        let resolver = crate::config::endpoint::DefaultResolver::new();
6832        let endpoint = resolver.resolve_endpoint(&params);
6833        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.s3-object-lambda-fips.us-gov-east-1.amazonaws.com");
6834        assert_eq!(
6835            endpoint,
6836            ::aws_smithy_types::endpoint::Endpoint::builder()
6837                .url("https://mybanner-123456789012.s3-object-lambda-fips.us-gov-east-1.amazonaws.com")
6838                .property(
6839                    "authSchemes",
6840                    vec![{
6841                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
6842                        out.insert("name".to_string(), "sigv4".to_string().into());
6843                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
6844                        out.insert("signingRegion".to_string(), "us-gov-east-1".to_string().into());
6845                        out.insert("disableDoubleEncoding".to_string(), true.into());
6846                        out
6847                    }
6848                    .into()]
6849                )
6850                .build()
6851        );
6852    }
6853
6854    /// object lambda @cn-north-1, with fips
6855    #[test]
6856    fn test_239() {
6857        let params = crate::config::endpoint::Params::builder()
6858            .region("cn-north-1".to_string())
6859            .use_fips(true)
6860            .use_dual_stack(false)
6861            .accelerate(false)
6862            .use_arn_region(false)
6863            .bucket("arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner".to_string())
6864            .build()
6865            .expect("invalid params");
6866        let resolver = crate::config::endpoint::DefaultResolver::new();
6867        let endpoint = resolver.resolve_endpoint(&params);
6868        let error = endpoint.expect_err("expected error: Partition does not support FIPS [object lambda @cn-north-1, with fips]");
6869        assert_eq!(format!("{}", error), "Partition does not support FIPS")
6870    }
6871
6872    /// object lambda with accelerate
6873    #[test]
6874    fn test_240() {
6875        let params = crate::config::endpoint::Params::builder()
6876            .region("us-west-2".to_string())
6877            .use_fips(false)
6878            .use_dual_stack(false)
6879            .accelerate(true)
6880            .use_arn_region(false)
6881            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner".to_string())
6882            .build()
6883            .expect("invalid params");
6884        let resolver = crate::config::endpoint::DefaultResolver::new();
6885        let endpoint = resolver.resolve_endpoint(&params);
6886        let error = endpoint.expect_err("expected error: S3 Object Lambda does not support S3 Accelerate [object lambda with accelerate]");
6887        assert_eq!(format!("{}", error), "S3 Object Lambda does not support S3 Accelerate")
6888    }
6889
6890    /// object lambda with invalid arn - bad service and someresource
6891    #[test]
6892    fn test_241() {
6893        let params = crate::config::endpoint::Params::builder()
6894            .region("us-west-2".to_string())
6895            .use_fips(false)
6896            .use_dual_stack(false)
6897            .accelerate(false)
6898            .use_arn_region(false)
6899            .bucket("arn:aws:sqs:us-west-2:123456789012:someresource".to_string())
6900            .build()
6901            .expect("invalid params");
6902        let resolver = crate::config::endpoint::DefaultResolver::new();
6903        let endpoint = resolver.resolve_endpoint(&params);
6904        let error = endpoint.expect_err("expected error: Invalid ARN: Unrecognized format: arn:aws:sqs:us-west-2:123456789012:someresource (type: someresource) [object lambda with invalid arn - bad service and someresource]");
6905        assert_eq!(
6906            format!("{}", error),
6907            "Invalid ARN: Unrecognized format: arn:aws:sqs:us-west-2:123456789012:someresource (type: someresource)"
6908        )
6909    }
6910
6911    /// object lambda with invalid arn - invalid resource
6912    #[test]
6913    fn test_242() {
6914        let params = crate::config::endpoint::Params::builder()
6915            .region("us-west-2".to_string())
6916            .use_fips(false)
6917            .use_dual_stack(false)
6918            .accelerate(false)
6919            .use_arn_region(false)
6920            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:bucket_name:mybucket".to_string())
6921            .build()
6922            .expect("invalid params");
6923        let resolver = crate::config::endpoint::DefaultResolver::new();
6924        let endpoint = resolver.resolve_endpoint(&params);
6925        let error = endpoint.expect_err("expected error: Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `bucket_name` [object lambda with invalid arn - invalid resource]");
6926        assert_eq!(
6927            format!("{}", error),
6928            "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `bucket_name`"
6929        )
6930    }
6931
6932    /// object lambda with invalid arn - missing region
6933    #[test]
6934    fn test_243() {
6935        let params = crate::config::endpoint::Params::builder()
6936            .region("us-west-2".to_string())
6937            .use_fips(false)
6938            .use_dual_stack(false)
6939            .accelerate(false)
6940            .use_arn_region(false)
6941            .bucket("arn:aws:s3-object-lambda::123456789012:accesspoint/mybanner".to_string())
6942            .build()
6943            .expect("invalid params");
6944        let resolver = crate::config::endpoint::DefaultResolver::new();
6945        let endpoint = resolver.resolve_endpoint(&params);
6946        let error =
6947            endpoint.expect_err("expected error: Invalid ARN: bucket ARN is missing a region [object lambda with invalid arn - missing region]");
6948        assert_eq!(format!("{}", error), "Invalid ARN: bucket ARN is missing a region")
6949    }
6950
6951    /// object lambda with invalid arn - missing account-id
6952    #[test]
6953    fn test_244() {
6954        let params = crate::config::endpoint::Params::builder()
6955            .region("us-west-2".to_string())
6956            .use_fips(false)
6957            .use_dual_stack(false)
6958            .accelerate(false)
6959            .use_arn_region(true)
6960            .bucket("arn:aws:s3-object-lambda:us-west-2::accesspoint/mybanner".to_string())
6961            .build()
6962            .expect("invalid params");
6963        let resolver = crate::config::endpoint::DefaultResolver::new();
6964        let endpoint = resolver.resolve_endpoint(&params);
6965        let error = endpoint.expect_err("expected error: Invalid ARN: Missing account id [object lambda with invalid arn - missing account-id]");
6966        assert_eq!(format!("{}", error), "Invalid ARN: Missing account id")
6967    }
6968
6969    /// object lambda with invalid arn - account id contains invalid characters
6970    #[test]
6971    fn test_245() {
6972        let params = crate::config::endpoint::Params::builder()
6973            .region("us-west-2".to_string())
6974            .use_fips(false)
6975            .use_dual_stack(false)
6976            .accelerate(false)
6977            .use_arn_region(true)
6978            .bucket("arn:aws:s3-object-lambda:us-west-2:123.45678.9012:accesspoint:mybucket".to_string())
6979            .build()
6980            .expect("invalid params");
6981        let resolver = crate::config::endpoint::DefaultResolver::new();
6982        let endpoint = resolver.resolve_endpoint(&params);
6983        let error = endpoint.expect_err("expected error: Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `123.45678.9012` [object lambda with invalid arn - account id contains invalid characters]");
6984        assert_eq!(
6985            format!("{}", error),
6986            "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `123.45678.9012`"
6987        )
6988    }
6989
6990    /// object lambda with invalid arn - missing access point name
6991    #[test]
6992    fn test_246() {
6993        let params = crate::config::endpoint::Params::builder()
6994            .region("us-west-2".to_string())
6995            .use_fips(false)
6996            .use_dual_stack(false)
6997            .accelerate(false)
6998            .use_arn_region(true)
6999            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint".to_string())
7000            .build()
7001            .expect("invalid params");
7002        let resolver = crate::config::endpoint::DefaultResolver::new();
7003        let endpoint = resolver.resolve_endpoint(&params);
7004        let error = endpoint.expect_err("expected error: Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided [object lambda with invalid arn - missing access point name]");
7005        assert_eq!(
7006            format!("{}", error),
7007            "Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided"
7008        )
7009    }
7010
7011    /// object lambda with invalid arn - access point name contains invalid character: *
7012    #[test]
7013    fn test_247() {
7014        let params = crate::config::endpoint::Params::builder()
7015            .region("us-west-2".to_string())
7016            .use_fips(false)
7017            .use_dual_stack(false)
7018            .accelerate(false)
7019            .use_arn_region(true)
7020            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:*".to_string())
7021            .build()
7022            .expect("invalid params");
7023        let resolver = crate::config::endpoint::DefaultResolver::new();
7024        let endpoint = resolver.resolve_endpoint(&params);
7025        let error = endpoint.expect_err("expected error: Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `*` [object lambda with invalid arn - access point name contains invalid character: *]");
7026        assert_eq!(
7027            format!("{}", error),
7028            "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `*`"
7029        )
7030    }
7031
7032    /// object lambda with invalid arn - access point name contains invalid character: .
7033    #[test]
7034    fn test_248() {
7035        let params = crate::config::endpoint::Params::builder()
7036            .region("us-west-2".to_string())
7037            .use_fips(false)
7038            .use_dual_stack(false)
7039            .accelerate(false)
7040            .use_arn_region(true)
7041            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:my.bucket".to_string())
7042            .build()
7043            .expect("invalid params");
7044        let resolver = crate::config::endpoint::DefaultResolver::new();
7045        let endpoint = resolver.resolve_endpoint(&params);
7046        let error = endpoint.expect_err("expected error: Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `my.bucket` [object lambda with invalid arn - access point name contains invalid character: .]");
7047        assert_eq!(
7048            format!("{}", error),
7049            "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `my.bucket`"
7050        )
7051    }
7052
7053    /// object lambda with invalid arn - access point name contains sub resources
7054    #[test]
7055    fn test_249() {
7056        let params = crate::config::endpoint::Params::builder()
7057            .region("us-west-2".to_string())
7058            .use_fips(false)
7059            .use_dual_stack(false)
7060            .accelerate(false)
7061            .use_arn_region(true)
7062            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:mybucket:object:foo".to_string())
7063            .build()
7064            .expect("invalid params");
7065        let resolver = crate::config::endpoint::DefaultResolver::new();
7066        let endpoint = resolver.resolve_endpoint(&params);
7067        let error = endpoint.expect_err("expected error: Invalid ARN: The ARN may only contain a single resource component after `accesspoint`. [object lambda with invalid arn - access point name contains sub resources]");
7068        assert_eq!(
7069            format!("{}", error),
7070            "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`."
7071        )
7072    }
7073
7074    /// object lambda with custom endpoint
7075    #[test]
7076    fn test_250() {
7077        let params = crate::config::endpoint::Params::builder()
7078            .region("us-west-2".to_string())
7079            .use_fips(false)
7080            .use_dual_stack(false)
7081            .accelerate(false)
7082            .use_arn_region(false)
7083            .bucket("arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner".to_string())
7084            .endpoint("https://my-endpoint.com".to_string())
7085            .build()
7086            .expect("invalid params");
7087        let resolver = crate::config::endpoint::DefaultResolver::new();
7088        let endpoint = resolver.resolve_endpoint(&params);
7089        let endpoint = endpoint.expect("Expected valid endpoint: https://mybanner-123456789012.my-endpoint.com");
7090        assert_eq!(
7091            endpoint,
7092            ::aws_smithy_types::endpoint::Endpoint::builder()
7093                .url("https://mybanner-123456789012.my-endpoint.com")
7094                .property(
7095                    "authSchemes",
7096                    vec![{
7097                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7098                        out.insert("name".to_string(), "sigv4".to_string().into());
7099                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
7100                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
7101                        out.insert("disableDoubleEncoding".to_string(), true.into());
7102                        out
7103                    }
7104                    .into()]
7105                )
7106                .build()
7107        );
7108    }
7109
7110    /// object lambda arn with region mismatch and UseArnRegion=false
7111    #[test]
7112    fn test_251() {
7113        let params = crate::config::endpoint::Params::builder()
7114            .accelerate(false)
7115            .bucket("arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner".to_string())
7116            .force_path_style(false)
7117            .use_arn_region(false)
7118            .region("us-west-2".to_string())
7119            .use_dual_stack(false)
7120            .use_fips(false)
7121            .build()
7122            .expect("invalid params");
7123        let resolver = crate::config::endpoint::DefaultResolver::new();
7124        let endpoint = resolver.resolve_endpoint(&params);
7125        let error = endpoint.expect_err("expected error: Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false` [object lambda arn with region mismatch and UseArnRegion=false]");
7126        assert_eq!(
7127            format!("{}", error),
7128            "Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`"
7129        )
7130    }
7131
7132    /// WriteGetObjectResponse @ us-west-2
7133    #[test]
7134    fn test_252() {
7135        let params = crate::config::endpoint::Params::builder()
7136            .accelerate(false)
7137            .use_object_lambda_endpoint(true)
7138            .region("us-west-2".to_string())
7139            .use_dual_stack(false)
7140            .use_fips(false)
7141            .build()
7142            .expect("invalid params");
7143        let resolver = crate::config::endpoint::DefaultResolver::new();
7144        let endpoint = resolver.resolve_endpoint(&params);
7145        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-object-lambda.us-west-2.amazonaws.com");
7146        assert_eq!(
7147            endpoint,
7148            ::aws_smithy_types::endpoint::Endpoint::builder()
7149                .url("https://s3-object-lambda.us-west-2.amazonaws.com")
7150                .property(
7151                    "authSchemes",
7152                    vec![{
7153                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7154                        out.insert("name".to_string(), "sigv4".to_string().into());
7155                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
7156                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
7157                        out.insert("disableDoubleEncoding".to_string(), true.into());
7158                        out
7159                    }
7160                    .into()]
7161                )
7162                .build()
7163        );
7164    }
7165
7166    /// WriteGetObjectResponse with custom endpoint
7167    #[test]
7168    fn test_253() {
7169        let params = crate::config::endpoint::Params::builder()
7170            .accelerate(false)
7171            .use_object_lambda_endpoint(true)
7172            .endpoint("https://my-endpoint.com".to_string())
7173            .region("us-west-2".to_string())
7174            .use_dual_stack(false)
7175            .use_fips(false)
7176            .build()
7177            .expect("invalid params");
7178        let resolver = crate::config::endpoint::DefaultResolver::new();
7179        let endpoint = resolver.resolve_endpoint(&params);
7180        let endpoint = endpoint.expect("Expected valid endpoint: https://my-endpoint.com");
7181        assert_eq!(
7182            endpoint,
7183            ::aws_smithy_types::endpoint::Endpoint::builder()
7184                .url("https://my-endpoint.com")
7185                .property(
7186                    "authSchemes",
7187                    vec![{
7188                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7189                        out.insert("name".to_string(), "sigv4".to_string().into());
7190                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
7191                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
7192                        out.insert("disableDoubleEncoding".to_string(), true.into());
7193                        out
7194                    }
7195                    .into()]
7196                )
7197                .build()
7198        );
7199    }
7200
7201    /// WriteGetObjectResponse @ us-east-1
7202    #[test]
7203    fn test_254() {
7204        let params = crate::config::endpoint::Params::builder()
7205            .accelerate(false)
7206            .use_object_lambda_endpoint(true)
7207            .region("us-east-1".to_string())
7208            .use_dual_stack(false)
7209            .use_fips(false)
7210            .build()
7211            .expect("invalid params");
7212        let resolver = crate::config::endpoint::DefaultResolver::new();
7213        let endpoint = resolver.resolve_endpoint(&params);
7214        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-object-lambda.us-east-1.amazonaws.com");
7215        assert_eq!(
7216            endpoint,
7217            ::aws_smithy_types::endpoint::Endpoint::builder()
7218                .url("https://s3-object-lambda.us-east-1.amazonaws.com")
7219                .property(
7220                    "authSchemes",
7221                    vec![{
7222                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7223                        out.insert("name".to_string(), "sigv4".to_string().into());
7224                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
7225                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7226                        out.insert("disableDoubleEncoding".to_string(), true.into());
7227                        out
7228                    }
7229                    .into()]
7230                )
7231                .build()
7232        );
7233    }
7234
7235    /// WriteGetObjectResponse with fips
7236    #[test]
7237    fn test_255() {
7238        let params = crate::config::endpoint::Params::builder()
7239            .accelerate(false)
7240            .use_object_lambda_endpoint(true)
7241            .region("us-east-1".to_string())
7242            .use_dual_stack(false)
7243            .use_fips(true)
7244            .build()
7245            .expect("invalid params");
7246        let resolver = crate::config::endpoint::DefaultResolver::new();
7247        let endpoint = resolver.resolve_endpoint(&params);
7248        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-object-lambda-fips.us-east-1.amazonaws.com");
7249        assert_eq!(
7250            endpoint,
7251            ::aws_smithy_types::endpoint::Endpoint::builder()
7252                .url("https://s3-object-lambda-fips.us-east-1.amazonaws.com")
7253                .property(
7254                    "authSchemes",
7255                    vec![{
7256                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7257                        out.insert("name".to_string(), "sigv4".to_string().into());
7258                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
7259                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7260                        out.insert("disableDoubleEncoding".to_string(), true.into());
7261                        out
7262                    }
7263                    .into()]
7264                )
7265                .build()
7266        );
7267    }
7268
7269    /// WriteGetObjectResponse with dualstack
7270    #[test]
7271    fn test_256() {
7272        let params = crate::config::endpoint::Params::builder()
7273            .accelerate(false)
7274            .use_object_lambda_endpoint(true)
7275            .region("us-east-1".to_string())
7276            .use_dual_stack(true)
7277            .use_fips(false)
7278            .build()
7279            .expect("invalid params");
7280        let resolver = crate::config::endpoint::DefaultResolver::new();
7281        let endpoint = resolver.resolve_endpoint(&params);
7282        let error = endpoint.expect_err("expected error: S3 Object Lambda does not support Dual-stack [WriteGetObjectResponse with dualstack]");
7283        assert_eq!(format!("{}", error), "S3 Object Lambda does not support Dual-stack")
7284    }
7285
7286    /// WriteGetObjectResponse with accelerate
7287    #[test]
7288    fn test_257() {
7289        let params = crate::config::endpoint::Params::builder()
7290            .accelerate(true)
7291            .use_object_lambda_endpoint(true)
7292            .region("us-east-1".to_string())
7293            .use_dual_stack(false)
7294            .use_fips(false)
7295            .build()
7296            .expect("invalid params");
7297        let resolver = crate::config::endpoint::DefaultResolver::new();
7298        let endpoint = resolver.resolve_endpoint(&params);
7299        let error = endpoint.expect_err("expected error: S3 Object Lambda does not support S3 Accelerate [WriteGetObjectResponse with accelerate]");
7300        assert_eq!(format!("{}", error), "S3 Object Lambda does not support S3 Accelerate")
7301    }
7302
7303    /// WriteGetObjectResponse with fips in CN
7304    #[test]
7305    fn test_258() {
7306        let params = crate::config::endpoint::Params::builder()
7307            .accelerate(false)
7308            .region("cn-north-1".to_string())
7309            .use_object_lambda_endpoint(true)
7310            .use_dual_stack(false)
7311            .use_fips(true)
7312            .build()
7313            .expect("invalid params");
7314        let resolver = crate::config::endpoint::DefaultResolver::new();
7315        let endpoint = resolver.resolve_endpoint(&params);
7316        let error = endpoint.expect_err("expected error: Partition does not support FIPS [WriteGetObjectResponse with fips in CN]");
7317        assert_eq!(format!("{}", error), "Partition does not support FIPS")
7318    }
7319
7320    /// WriteGetObjectResponse with invalid partition
7321    #[test]
7322    fn test_259() {
7323        let params = crate::config::endpoint::Params::builder()
7324            .accelerate(false)
7325            .use_object_lambda_endpoint(true)
7326            .region("not a valid DNS name".to_string())
7327            .use_dual_stack(false)
7328            .use_fips(false)
7329            .build()
7330            .expect("invalid params");
7331        let resolver = crate::config::endpoint::DefaultResolver::new();
7332        let endpoint = resolver.resolve_endpoint(&params);
7333        let error =
7334            endpoint.expect_err("expected error: Invalid region: region was not a valid DNS name. [WriteGetObjectResponse with invalid partition]");
7335        assert_eq!(format!("{}", error), "Invalid region: region was not a valid DNS name.")
7336    }
7337
7338    /// WriteGetObjectResponse with an unknown partition
7339    #[test]
7340    fn test_260() {
7341        let params = crate::config::endpoint::Params::builder()
7342            .accelerate(false)
7343            .use_object_lambda_endpoint(true)
7344            .region("us-east.special".to_string())
7345            .use_dual_stack(false)
7346            .use_fips(false)
7347            .build()
7348            .expect("invalid params");
7349        let resolver = crate::config::endpoint::DefaultResolver::new();
7350        let endpoint = resolver.resolve_endpoint(&params);
7351        let endpoint = endpoint.expect("Expected valid endpoint: https://s3-object-lambda.us-east.special.amazonaws.com");
7352        assert_eq!(
7353            endpoint,
7354            ::aws_smithy_types::endpoint::Endpoint::builder()
7355                .url("https://s3-object-lambda.us-east.special.amazonaws.com")
7356                .property(
7357                    "authSchemes",
7358                    vec![{
7359                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7360                        out.insert("name".to_string(), "sigv4".to_string().into());
7361                        out.insert("signingName".to_string(), "s3-object-lambda".to_string().into());
7362                        out.insert("disableDoubleEncoding".to_string(), true.into());
7363                        out.insert("signingRegion".to_string(), "us-east.special".to_string().into());
7364                        out
7365                    }
7366                    .into()]
7367                )
7368                .build()
7369        );
7370    }
7371
7372    /// S3 Outposts bucketAlias Real Outpost Prod us-west-1
7373    #[test]
7374    fn test_261() {
7375        let params = crate::config::endpoint::Params::builder()
7376            .region("us-west-1".to_string())
7377            .bucket("test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3".to_string())
7378            .use_fips(false)
7379            .use_dual_stack(false)
7380            .accelerate(false)
7381            .build()
7382            .expect("invalid params");
7383        let resolver = crate::config::endpoint::DefaultResolver::new();
7384        let endpoint = resolver.resolve_endpoint(&params);
7385        let endpoint = endpoint.expect("Expected valid endpoint: https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.op-0b1d075431d83bebd.s3-outposts.us-west-1.amazonaws.com");
7386        assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.op-0b1d075431d83bebd.s3-outposts.us-west-1.amazonaws.com")
7387    .property("authSchemes", vec![ {
7388        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7389        out.insert("name".to_string(), "sigv4a".to_string().into());
7390        out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7391        out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
7392        out.insert("disableDoubleEncoding".to_string(), true.into());
7393        out
7394    }.into()
7395    , {
7396        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7397        out.insert("name".to_string(), "sigv4".to_string().into());
7398        out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7399        out.insert("signingRegion".to_string(), "us-west-1".to_string().into());
7400        out.insert("disableDoubleEncoding".to_string(), true.into());
7401        out
7402    }.into()])
7403    .build());
7404    }
7405
7406    /// S3 Outposts bucketAlias Real Outpost Prod ap-east-1
7407    #[test]
7408    fn test_262() {
7409        let params = crate::config::endpoint::Params::builder()
7410            .region("ap-east-1".to_string())
7411            .bucket("test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3".to_string())
7412            .use_fips(false)
7413            .use_dual_stack(false)
7414            .accelerate(false)
7415            .build()
7416            .expect("invalid params");
7417        let resolver = crate::config::endpoint::DefaultResolver::new();
7418        let endpoint = resolver.resolve_endpoint(&params);
7419        let endpoint = endpoint.expect("Expected valid endpoint: https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.op-0b1d075431d83bebd.s3-outposts.ap-east-1.amazonaws.com");
7420        assert_eq!(endpoint, ::aws_smithy_types::endpoint::Endpoint::builder().url("https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.op-0b1d075431d83bebd.s3-outposts.ap-east-1.amazonaws.com")
7421    .property("authSchemes", vec![ {
7422        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7423        out.insert("name".to_string(), "sigv4a".to_string().into());
7424        out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7425        out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
7426        out.insert("disableDoubleEncoding".to_string(), true.into());
7427        out
7428    }.into()
7429    , {
7430        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7431        out.insert("name".to_string(), "sigv4".to_string().into());
7432        out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7433        out.insert("signingRegion".to_string(), "ap-east-1".to_string().into());
7434        out.insert("disableDoubleEncoding".to_string(), true.into());
7435        out
7436    }.into()])
7437    .build());
7438    }
7439
7440    /// S3 Outposts bucketAlias Ec2 Outpost Prod us-east-1
7441    #[test]
7442    fn test_263() {
7443        let params = crate::config::endpoint::Params::builder()
7444            .region("us-east-1".to_string())
7445            .bucket("test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3".to_string())
7446            .use_fips(false)
7447            .use_dual_stack(false)
7448            .accelerate(false)
7449            .build()
7450            .expect("invalid params");
7451        let resolver = crate::config::endpoint::DefaultResolver::new();
7452        let endpoint = resolver.resolve_endpoint(&params);
7453        let endpoint = endpoint.expect("Expected valid endpoint: https://test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.ec2.s3-outposts.us-east-1.amazonaws.com");
7454        assert_eq!(
7455            endpoint,
7456            ::aws_smithy_types::endpoint::Endpoint::builder()
7457                .url("https://test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.ec2.s3-outposts.us-east-1.amazonaws.com")
7458                .property(
7459                    "authSchemes",
7460                    vec![
7461                        {
7462                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7463                            out.insert("name".to_string(), "sigv4a".to_string().into());
7464                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7465                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
7466                            out.insert("disableDoubleEncoding".to_string(), true.into());
7467                            out
7468                        }
7469                        .into(),
7470                        {
7471                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7472                            out.insert("name".to_string(), "sigv4".to_string().into());
7473                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7474                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7475                            out.insert("disableDoubleEncoding".to_string(), true.into());
7476                            out
7477                        }
7478                        .into()
7479                    ]
7480                )
7481                .build()
7482        );
7483    }
7484
7485    /// S3 Outposts bucketAlias Ec2 Outpost Prod me-south-1
7486    #[test]
7487    fn test_264() {
7488        let params = crate::config::endpoint::Params::builder()
7489            .region("me-south-1".to_string())
7490            .bucket("test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3".to_string())
7491            .use_fips(false)
7492            .use_dual_stack(false)
7493            .accelerate(false)
7494            .build()
7495            .expect("invalid params");
7496        let resolver = crate::config::endpoint::DefaultResolver::new();
7497        let endpoint = resolver.resolve_endpoint(&params);
7498        let endpoint = endpoint.expect("Expected valid endpoint: https://test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.ec2.s3-outposts.me-south-1.amazonaws.com");
7499        assert_eq!(
7500            endpoint,
7501            ::aws_smithy_types::endpoint::Endpoint::builder()
7502                .url("https://test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.ec2.s3-outposts.me-south-1.amazonaws.com")
7503                .property(
7504                    "authSchemes",
7505                    vec![
7506                        {
7507                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7508                            out.insert("name".to_string(), "sigv4a".to_string().into());
7509                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7510                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
7511                            out.insert("disableDoubleEncoding".to_string(), true.into());
7512                            out
7513                        }
7514                        .into(),
7515                        {
7516                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7517                            out.insert("name".to_string(), "sigv4".to_string().into());
7518                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7519                            out.insert("signingRegion".to_string(), "me-south-1".to_string().into());
7520                            out.insert("disableDoubleEncoding".to_string(), true.into());
7521                            out
7522                        }
7523                        .into()
7524                    ]
7525                )
7526                .build()
7527        );
7528    }
7529
7530    /// S3 Outposts bucketAlias Real Outpost Beta
7531    #[test]
7532    fn test_265() {
7533        let params = crate::config::endpoint::Params::builder()
7534            .region("us-east-1".to_string())
7535            .bucket("test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3".to_string())
7536            .endpoint("https://example.amazonaws.com".to_string())
7537            .use_fips(false)
7538            .use_dual_stack(false)
7539            .accelerate(false)
7540            .build()
7541            .expect("invalid params");
7542        let resolver = crate::config::endpoint::DefaultResolver::new();
7543        let endpoint = resolver.resolve_endpoint(&params);
7544        let endpoint = endpoint.expect("Expected valid endpoint: https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3.op-0b1d075431d83bebd.example.amazonaws.com");
7545        assert_eq!(
7546            endpoint,
7547            ::aws_smithy_types::endpoint::Endpoint::builder()
7548                .url("https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3.op-0b1d075431d83bebd.example.amazonaws.com")
7549                .property(
7550                    "authSchemes",
7551                    vec![
7552                        {
7553                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7554                            out.insert("name".to_string(), "sigv4a".to_string().into());
7555                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7556                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
7557                            out.insert("disableDoubleEncoding".to_string(), true.into());
7558                            out
7559                        }
7560                        .into(),
7561                        {
7562                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7563                            out.insert("name".to_string(), "sigv4".to_string().into());
7564                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7565                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7566                            out.insert("disableDoubleEncoding".to_string(), true.into());
7567                            out
7568                        }
7569                        .into()
7570                    ]
7571                )
7572                .build()
7573        );
7574    }
7575
7576    /// S3 Outposts bucketAlias Ec2 Outpost Beta
7577    #[test]
7578    fn test_266() {
7579        let params = crate::config::endpoint::Params::builder()
7580            .region("us-east-1".to_string())
7581            .bucket("161743052723-e00000136899934034jeahy1t8gpzpbwjj8kb7beta0--op-s3".to_string())
7582            .endpoint("https://example.amazonaws.com".to_string())
7583            .use_fips(false)
7584            .use_dual_stack(false)
7585            .accelerate(false)
7586            .build()
7587            .expect("invalid params");
7588        let resolver = crate::config::endpoint::DefaultResolver::new();
7589        let endpoint = resolver.resolve_endpoint(&params);
7590        let endpoint = endpoint
7591            .expect("Expected valid endpoint: https://161743052723-e00000136899934034jeahy1t8gpzpbwjj8kb7beta0--op-s3.ec2.example.amazonaws.com");
7592        assert_eq!(
7593            endpoint,
7594            ::aws_smithy_types::endpoint::Endpoint::builder()
7595                .url("https://161743052723-e00000136899934034jeahy1t8gpzpbwjj8kb7beta0--op-s3.ec2.example.amazonaws.com")
7596                .property(
7597                    "authSchemes",
7598                    vec![
7599                        {
7600                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7601                            out.insert("name".to_string(), "sigv4a".to_string().into());
7602                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7603                            out.insert("signingRegionSet".to_string(), vec!["*".to_string().into()].into());
7604                            out.insert("disableDoubleEncoding".to_string(), true.into());
7605                            out
7606                        }
7607                        .into(),
7608                        {
7609                            let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7610                            out.insert("name".to_string(), "sigv4".to_string().into());
7611                            out.insert("signingName".to_string(), "s3-outposts".to_string().into());
7612                            out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7613                            out.insert("disableDoubleEncoding".to_string(), true.into());
7614                            out
7615                        }
7616                        .into()
7617                    ]
7618                )
7619                .build()
7620        );
7621    }
7622
7623    /// S3 Outposts bucketAlias - No endpoint set for beta
7624    #[test]
7625    fn test_267() {
7626        let params = crate::config::endpoint::Params::builder()
7627            .region("us-east-1".to_string())
7628            .bucket("test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3".to_string())
7629            .use_fips(false)
7630            .use_dual_stack(false)
7631            .accelerate(false)
7632            .build()
7633            .expect("invalid params");
7634        let resolver = crate::config::endpoint::DefaultResolver::new();
7635        let endpoint = resolver.resolve_endpoint(&params);
7636        let error = endpoint.expect_err(
7637            "expected error: Expected a endpoint to be specified but no endpoint was found [S3 Outposts bucketAlias - No endpoint set for beta]",
7638        );
7639        assert_eq!(format!("{}", error), "Expected a endpoint to be specified but no endpoint was found")
7640    }
7641
7642    /// S3 Outposts bucketAlias Invalid hardware type
7643    #[test]
7644    fn test_268() {
7645        let params = crate::config::endpoint::Params::builder()
7646            .region("us-east-1".to_string())
7647            .bucket("test-accessp-h0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3".to_string())
7648            .use_fips(false)
7649            .use_dual_stack(false)
7650            .accelerate(false)
7651            .build()
7652            .expect("invalid params");
7653        let resolver = crate::config::endpoint::DefaultResolver::new();
7654        let endpoint = resolver.resolve_endpoint(&params);
7655        let error = endpoint.expect_err(
7656            "expected error: Unrecognized hardware type: \"Expected hardware type o or e but got h\" [S3 Outposts bucketAlias Invalid hardware type]",
7657        );
7658        assert_eq!(
7659            format!("{}", error),
7660            "Unrecognized hardware type: \"Expected hardware type o or e but got h\""
7661        )
7662    }
7663
7664    /// S3 Outposts bucketAlias Special character in Outpost Arn
7665    #[test]
7666    fn test_269() {
7667        let params = crate::config::endpoint::Params::builder()
7668            .region("us-east-1".to_string())
7669            .bucket("test-accessp-o00000754%1d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3".to_string())
7670            .use_fips(false)
7671            .use_dual_stack(false)
7672            .accelerate(false)
7673            .build()
7674            .expect("invalid params");
7675        let resolver = crate::config::endpoint::DefaultResolver::new();
7676        let endpoint = resolver.resolve_endpoint(&params);
7677        let error = endpoint.expect_err("expected error: Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`. [S3 Outposts bucketAlias Special character in Outpost Arn]");
7678        assert_eq!(
7679            format!("{}", error),
7680            "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`."
7681        )
7682    }
7683
7684    /// S3 Outposts bucketAlias - No endpoint set for beta
7685    #[test]
7686    fn test_270() {
7687        let params = crate::config::endpoint::Params::builder()
7688            .region("us-east-1".to_string())
7689            .bucket("test-accessp-e0b1d075431d83bebde8xz5w8ijx1qzlbp3i3ebeta0--op-s3".to_string())
7690            .use_fips(false)
7691            .use_dual_stack(false)
7692            .accelerate(false)
7693            .build()
7694            .expect("invalid params");
7695        let resolver = crate::config::endpoint::DefaultResolver::new();
7696        let endpoint = resolver.resolve_endpoint(&params);
7697        let error = endpoint.expect_err(
7698            "expected error: Expected a endpoint to be specified but no endpoint was found [S3 Outposts bucketAlias - No endpoint set for beta]",
7699        );
7700        assert_eq!(format!("{}", error), "Expected a endpoint to be specified but no endpoint was found")
7701    }
7702
7703    /// S3 Snow with bucket
7704    #[test]
7705    fn test_271() {
7706        let params = crate::config::endpoint::Params::builder()
7707            .region("snow".to_string())
7708            .bucket("bucketName".to_string())
7709            .endpoint("http://10.0.1.12:433".to_string())
7710            .use_fips(false)
7711            .use_dual_stack(false)
7712            .accelerate(false)
7713            .build()
7714            .expect("invalid params");
7715        let resolver = crate::config::endpoint::DefaultResolver::new();
7716        let endpoint = resolver.resolve_endpoint(&params);
7717        let endpoint = endpoint.expect("Expected valid endpoint: http://10.0.1.12:433/bucketName");
7718        assert_eq!(
7719            endpoint,
7720            ::aws_smithy_types::endpoint::Endpoint::builder()
7721                .url("http://10.0.1.12:433/bucketName")
7722                .property(
7723                    "authSchemes",
7724                    vec![{
7725                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7726                        out.insert("name".to_string(), "sigv4".to_string().into());
7727                        out.insert("signingName".to_string(), "s3".to_string().into());
7728                        out.insert("signingRegion".to_string(), "snow".to_string().into());
7729                        out.insert("disableDoubleEncoding".to_string(), true.into());
7730                        out
7731                    }
7732                    .into()]
7733                )
7734                .build()
7735        );
7736    }
7737
7738    /// S3 Snow without bucket
7739    #[test]
7740    fn test_272() {
7741        let params = crate::config::endpoint::Params::builder()
7742            .region("snow".to_string())
7743            .endpoint("https://10.0.1.12:433".to_string())
7744            .use_fips(false)
7745            .use_dual_stack(false)
7746            .accelerate(false)
7747            .build()
7748            .expect("invalid params");
7749        let resolver = crate::config::endpoint::DefaultResolver::new();
7750        let endpoint = resolver.resolve_endpoint(&params);
7751        let endpoint = endpoint.expect("Expected valid endpoint: https://10.0.1.12:433");
7752        assert_eq!(
7753            endpoint,
7754            ::aws_smithy_types::endpoint::Endpoint::builder()
7755                .url("https://10.0.1.12:433")
7756                .property(
7757                    "authSchemes",
7758                    vec![{
7759                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7760                        out.insert("name".to_string(), "sigv4".to_string().into());
7761                        out.insert("signingName".to_string(), "s3".to_string().into());
7762                        out.insert("signingRegion".to_string(), "snow".to_string().into());
7763                        out.insert("disableDoubleEncoding".to_string(), true.into());
7764                        out
7765                    }
7766                    .into()]
7767                )
7768                .build()
7769        );
7770    }
7771
7772    /// S3 Snow no port
7773    #[test]
7774    fn test_273() {
7775        let params = crate::config::endpoint::Params::builder()
7776            .region("snow".to_string())
7777            .bucket("bucketName".to_string())
7778            .endpoint("http://10.0.1.12".to_string())
7779            .use_fips(false)
7780            .use_dual_stack(false)
7781            .accelerate(false)
7782            .build()
7783            .expect("invalid params");
7784        let resolver = crate::config::endpoint::DefaultResolver::new();
7785        let endpoint = resolver.resolve_endpoint(&params);
7786        let endpoint = endpoint.expect("Expected valid endpoint: http://10.0.1.12/bucketName");
7787        assert_eq!(
7788            endpoint,
7789            ::aws_smithy_types::endpoint::Endpoint::builder()
7790                .url("http://10.0.1.12/bucketName")
7791                .property(
7792                    "authSchemes",
7793                    vec![{
7794                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7795                        out.insert("name".to_string(), "sigv4".to_string().into());
7796                        out.insert("signingName".to_string(), "s3".to_string().into());
7797                        out.insert("signingRegion".to_string(), "snow".to_string().into());
7798                        out.insert("disableDoubleEncoding".to_string(), true.into());
7799                        out
7800                    }
7801                    .into()]
7802                )
7803                .build()
7804        );
7805    }
7806
7807    /// S3 Snow dns endpoint
7808    #[test]
7809    fn test_274() {
7810        let params = crate::config::endpoint::Params::builder()
7811            .region("snow".to_string())
7812            .bucket("bucketName".to_string())
7813            .endpoint("https://amazonaws.com".to_string())
7814            .use_fips(false)
7815            .use_dual_stack(false)
7816            .accelerate(false)
7817            .build()
7818            .expect("invalid params");
7819        let resolver = crate::config::endpoint::DefaultResolver::new();
7820        let endpoint = resolver.resolve_endpoint(&params);
7821        let endpoint = endpoint.expect("Expected valid endpoint: https://amazonaws.com/bucketName");
7822        assert_eq!(
7823            endpoint,
7824            ::aws_smithy_types::endpoint::Endpoint::builder()
7825                .url("https://amazonaws.com/bucketName")
7826                .property(
7827                    "authSchemes",
7828                    vec![{
7829                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7830                        out.insert("name".to_string(), "sigv4".to_string().into());
7831                        out.insert("signingName".to_string(), "s3".to_string().into());
7832                        out.insert("signingRegion".to_string(), "snow".to_string().into());
7833                        out.insert("disableDoubleEncoding".to_string(), true.into());
7834                        out
7835                    }
7836                    .into()]
7837                )
7838                .build()
7839        );
7840    }
7841
7842    /// Data Plane with short zone name
7843    #[test]
7844    fn test_275() {
7845        let params = crate::config::endpoint::Params::builder()
7846            .region("us-east-1".to_string())
7847            .bucket("mybucket--abcd-ab1--x-s3".to_string())
7848            .use_fips(false)
7849            .use_dual_stack(false)
7850            .accelerate(false)
7851            .use_s3_express_control_endpoint(false)
7852            .build()
7853            .expect("invalid params");
7854        let resolver = crate::config::endpoint::DefaultResolver::new();
7855        let endpoint = resolver.resolve_endpoint(&params);
7856        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--abcd-ab1--x-s3.s3express-abcd-ab1.us-east-1.amazonaws.com");
7857        assert_eq!(
7858            endpoint,
7859            ::aws_smithy_types::endpoint::Endpoint::builder()
7860                .url("https://mybucket--abcd-ab1--x-s3.s3express-abcd-ab1.us-east-1.amazonaws.com")
7861                .property(
7862                    "authSchemes",
7863                    vec![{
7864                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7865                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
7866                        out.insert("signingName".to_string(), "s3express".to_string().into());
7867                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7868                        out.insert("disableDoubleEncoding".to_string(), true.into());
7869                        out
7870                    }
7871                    .into()]
7872                )
7873                .property("backend", "S3Express".to_string())
7874                .build()
7875        );
7876    }
7877
7878    /// Data Plane with short zone name china region
7879    #[test]
7880    fn test_276() {
7881        let params = crate::config::endpoint::Params::builder()
7882            .region("cn-north-1".to_string())
7883            .bucket("mybucket--abcd-ab1--x-s3".to_string())
7884            .use_fips(false)
7885            .use_dual_stack(false)
7886            .accelerate(false)
7887            .use_s3_express_control_endpoint(false)
7888            .build()
7889            .expect("invalid params");
7890        let resolver = crate::config::endpoint::DefaultResolver::new();
7891        let endpoint = resolver.resolve_endpoint(&params);
7892        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--abcd-ab1--x-s3.s3express-abcd-ab1.cn-north-1.amazonaws.com.cn");
7893        assert_eq!(
7894            endpoint,
7895            ::aws_smithy_types::endpoint::Endpoint::builder()
7896                .url("https://mybucket--abcd-ab1--x-s3.s3express-abcd-ab1.cn-north-1.amazonaws.com.cn")
7897                .property(
7898                    "authSchemes",
7899                    vec![{
7900                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7901                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
7902                        out.insert("signingName".to_string(), "s3express".to_string().into());
7903                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
7904                        out.insert("disableDoubleEncoding".to_string(), true.into());
7905                        out
7906                    }
7907                    .into()]
7908                )
7909                .property("backend", "S3Express".to_string())
7910                .build()
7911        );
7912    }
7913
7914    /// Data Plane with short zone name with AP
7915    #[test]
7916    fn test_277() {
7917        let params = crate::config::endpoint::Params::builder()
7918            .region("us-east-1".to_string())
7919            .bucket("myaccesspoint--abcd-ab1--xa-s3".to_string())
7920            .use_fips(false)
7921            .use_dual_stack(false)
7922            .accelerate(false)
7923            .use_s3_express_control_endpoint(false)
7924            .build()
7925            .expect("invalid params");
7926        let resolver = crate::config::endpoint::DefaultResolver::new();
7927        let endpoint = resolver.resolve_endpoint(&params);
7928        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--abcd-ab1--xa-s3.s3express-abcd-ab1.us-east-1.amazonaws.com");
7929        assert_eq!(
7930            endpoint,
7931            ::aws_smithy_types::endpoint::Endpoint::builder()
7932                .url("https://myaccesspoint--abcd-ab1--xa-s3.s3express-abcd-ab1.us-east-1.amazonaws.com")
7933                .property(
7934                    "authSchemes",
7935                    vec![{
7936                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7937                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
7938                        out.insert("signingName".to_string(), "s3express".to_string().into());
7939                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
7940                        out.insert("disableDoubleEncoding".to_string(), true.into());
7941                        out
7942                    }
7943                    .into()]
7944                )
7945                .property("backend", "S3Express".to_string())
7946                .build()
7947        );
7948    }
7949
7950    /// Data Plane with short zone name with AP china region
7951    #[test]
7952    fn test_278() {
7953        let params = crate::config::endpoint::Params::builder()
7954            .region("cn-north-1".to_string())
7955            .bucket("myaccesspoint--abcd-ab1--xa-s3".to_string())
7956            .use_fips(false)
7957            .use_dual_stack(false)
7958            .accelerate(false)
7959            .use_s3_express_control_endpoint(false)
7960            .build()
7961            .expect("invalid params");
7962        let resolver = crate::config::endpoint::DefaultResolver::new();
7963        let endpoint = resolver.resolve_endpoint(&params);
7964        let endpoint =
7965            endpoint.expect("Expected valid endpoint: https://myaccesspoint--abcd-ab1--xa-s3.s3express-abcd-ab1.cn-north-1.amazonaws.com.cn");
7966        assert_eq!(
7967            endpoint,
7968            ::aws_smithy_types::endpoint::Endpoint::builder()
7969                .url("https://myaccesspoint--abcd-ab1--xa-s3.s3express-abcd-ab1.cn-north-1.amazonaws.com.cn")
7970                .property(
7971                    "authSchemes",
7972                    vec![{
7973                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
7974                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
7975                        out.insert("signingName".to_string(), "s3express".to_string().into());
7976                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
7977                        out.insert("disableDoubleEncoding".to_string(), true.into());
7978                        out
7979                    }
7980                    .into()]
7981                )
7982                .property("backend", "S3Express".to_string())
7983                .build()
7984        );
7985    }
7986
7987    /// Data Plane with short zone names (13 chars)
7988    #[test]
7989    fn test_279() {
7990        let params = crate::config::endpoint::Params::builder()
7991            .region("us-west-2".to_string())
7992            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
7993            .use_fips(false)
7994            .use_dual_stack(false)
7995            .accelerate(false)
7996            .use_s3_express_control_endpoint(false)
7997            .build()
7998            .expect("invalid params");
7999        let resolver = crate::config::endpoint::DefaultResolver::new();
8000        let endpoint = resolver.resolve_endpoint(&params);
8001        let endpoint =
8002            endpoint.expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com");
8003        assert_eq!(
8004            endpoint,
8005            ::aws_smithy_types::endpoint::Endpoint::builder()
8006                .url("https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com")
8007                .property(
8008                    "authSchemes",
8009                    vec![{
8010                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8011                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8012                        out.insert("signingName".to_string(), "s3express".to_string().into());
8013                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8014                        out.insert("disableDoubleEncoding".to_string(), true.into());
8015                        out
8016                    }
8017                    .into()]
8018                )
8019                .property("backend", "S3Express".to_string())
8020                .build()
8021        );
8022    }
8023
8024    /// Data Plane with short zone names (13 chars) with AP
8025    #[test]
8026    fn test_280() {
8027        let params = crate::config::endpoint::Params::builder()
8028            .region("us-west-2".to_string())
8029            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
8030            .use_fips(false)
8031            .use_dual_stack(false)
8032            .accelerate(false)
8033            .use_s3_express_control_endpoint(false)
8034            .build()
8035            .expect("invalid params");
8036        let resolver = crate::config::endpoint::DefaultResolver::new();
8037        let endpoint = resolver.resolve_endpoint(&params);
8038        let endpoint =
8039            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com");
8040        assert_eq!(
8041            endpoint,
8042            ::aws_smithy_types::endpoint::Endpoint::builder()
8043                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com")
8044                .property(
8045                    "authSchemes",
8046                    vec![{
8047                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8048                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8049                        out.insert("signingName".to_string(), "s3express".to_string().into());
8050                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8051                        out.insert("disableDoubleEncoding".to_string(), true.into());
8052                        out
8053                    }
8054                    .into()]
8055                )
8056                .property("backend", "S3Express".to_string())
8057                .build()
8058        );
8059    }
8060
8061    /// Data Plane with medium zone names (14 chars)
8062    #[test]
8063    fn test_281() {
8064        let params = crate::config::endpoint::Params::builder()
8065            .region("us-west-2".to_string())
8066            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
8067            .use_fips(false)
8068            .use_dual_stack(false)
8069            .accelerate(false)
8070            .use_s3_express_control_endpoint(false)
8071            .build()
8072            .expect("invalid params");
8073        let resolver = crate::config::endpoint::DefaultResolver::new();
8074        let endpoint = resolver.resolve_endpoint(&params);
8075        let endpoint =
8076            endpoint.expect("Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com");
8077        assert_eq!(
8078            endpoint,
8079            ::aws_smithy_types::endpoint::Endpoint::builder()
8080                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com")
8081                .property(
8082                    "authSchemes",
8083                    vec![{
8084                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8085                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8086                        out.insert("signingName".to_string(), "s3express".to_string().into());
8087                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8088                        out.insert("disableDoubleEncoding".to_string(), true.into());
8089                        out
8090                    }
8091                    .into()]
8092                )
8093                .property("backend", "S3Express".to_string())
8094                .build()
8095        );
8096    }
8097
8098    /// Data Plane with medium zone names (14 chars) with AP
8099    #[test]
8100    fn test_282() {
8101        let params = crate::config::endpoint::Params::builder()
8102            .region("us-west-2".to_string())
8103            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
8104            .use_fips(false)
8105            .use_dual_stack(false)
8106            .accelerate(false)
8107            .use_s3_express_control_endpoint(false)
8108            .build()
8109            .expect("invalid params");
8110        let resolver = crate::config::endpoint::DefaultResolver::new();
8111        let endpoint = resolver.resolve_endpoint(&params);
8112        let endpoint =
8113            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com");
8114        assert_eq!(
8115            endpoint,
8116            ::aws_smithy_types::endpoint::Endpoint::builder()
8117                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com")
8118                .property(
8119                    "authSchemes",
8120                    vec![{
8121                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8122                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8123                        out.insert("signingName".to_string(), "s3express".to_string().into());
8124                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8125                        out.insert("disableDoubleEncoding".to_string(), true.into());
8126                        out
8127                    }
8128                    .into()]
8129                )
8130                .property("backend", "S3Express".to_string())
8131                .build()
8132        );
8133    }
8134
8135    /// Data Plane with long zone names (20 chars)
8136    #[test]
8137    fn test_283() {
8138        let params = crate::config::endpoint::Params::builder()
8139            .region("us-west-2".to_string())
8140            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
8141            .use_fips(false)
8142            .use_dual_stack(false)
8143            .accelerate(false)
8144            .use_s3_express_control_endpoint(false)
8145            .build()
8146            .expect("invalid params");
8147        let resolver = crate::config::endpoint::DefaultResolver::new();
8148        let endpoint = resolver.resolve_endpoint(&params);
8149        let endpoint = endpoint
8150            .expect("Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com");
8151        assert_eq!(
8152            endpoint,
8153            ::aws_smithy_types::endpoint::Endpoint::builder()
8154                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com")
8155                .property(
8156                    "authSchemes",
8157                    vec![{
8158                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8159                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8160                        out.insert("signingName".to_string(), "s3express".to_string().into());
8161                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8162                        out.insert("disableDoubleEncoding".to_string(), true.into());
8163                        out
8164                    }
8165                    .into()]
8166                )
8167                .property("backend", "S3Express".to_string())
8168                .build()
8169        );
8170    }
8171
8172    /// Data Plane with long zone names (20 chars)
8173    #[test]
8174    fn test_284() {
8175        let params = crate::config::endpoint::Params::builder()
8176            .region("us-west-2".to_string())
8177            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
8178            .use_fips(false)
8179            .use_dual_stack(false)
8180            .accelerate(false)
8181            .use_s3_express_control_endpoint(false)
8182            .build()
8183            .expect("invalid params");
8184        let resolver = crate::config::endpoint::DefaultResolver::new();
8185        let endpoint = resolver.resolve_endpoint(&params);
8186        let endpoint = endpoint.expect(
8187            "Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com",
8188        );
8189        assert_eq!(
8190            endpoint,
8191            ::aws_smithy_types::endpoint::Endpoint::builder()
8192                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com")
8193                .property(
8194                    "authSchemes",
8195                    vec![{
8196                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8197                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8198                        out.insert("signingName".to_string(), "s3express".to_string().into());
8199                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8200                        out.insert("disableDoubleEncoding".to_string(), true.into());
8201                        out
8202                    }
8203                    .into()]
8204                )
8205                .property("backend", "S3Express".to_string())
8206                .build()
8207        );
8208    }
8209
8210    /// Data Plane with short zone fips
8211    #[test]
8212    fn test_285() {
8213        let params = crate::config::endpoint::Params::builder()
8214            .region("us-east-1".to_string())
8215            .bucket("mybucket--test-ab1--x-s3".to_string())
8216            .use_fips(true)
8217            .use_dual_stack(false)
8218            .accelerate(false)
8219            .use_s3_express_control_endpoint(false)
8220            .build()
8221            .expect("invalid params");
8222        let resolver = crate::config::endpoint::DefaultResolver::new();
8223        let endpoint = resolver.resolve_endpoint(&params);
8224        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test-ab1--x-s3.s3express-fips-test-ab1.us-east-1.amazonaws.com");
8225        assert_eq!(
8226            endpoint,
8227            ::aws_smithy_types::endpoint::Endpoint::builder()
8228                .url("https://mybucket--test-ab1--x-s3.s3express-fips-test-ab1.us-east-1.amazonaws.com")
8229                .property(
8230                    "authSchemes",
8231                    vec![{
8232                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8233                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8234                        out.insert("signingName".to_string(), "s3express".to_string().into());
8235                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
8236                        out.insert("disableDoubleEncoding".to_string(), true.into());
8237                        out
8238                    }
8239                    .into()]
8240                )
8241                .property("backend", "S3Express".to_string())
8242                .build()
8243        );
8244    }
8245
8246    /// Data Plane with short zone fips china region
8247    #[test]
8248    fn test_286() {
8249        let params = crate::config::endpoint::Params::builder()
8250            .region("cn-north-1".to_string())
8251            .bucket("mybucket--test-ab1--x-s3".to_string())
8252            .use_fips(true)
8253            .use_dual_stack(false)
8254            .accelerate(false)
8255            .use_s3_express_control_endpoint(false)
8256            .build()
8257            .expect("invalid params");
8258        let resolver = crate::config::endpoint::DefaultResolver::new();
8259        let endpoint = resolver.resolve_endpoint(&params);
8260        let error = endpoint.expect_err("expected error: Partition does not support FIPS [Data Plane with short zone fips china region]");
8261        assert_eq!(format!("{}", error), "Partition does not support FIPS")
8262    }
8263
8264    /// Data Plane with short zone fips with AP
8265    #[test]
8266    fn test_287() {
8267        let params = crate::config::endpoint::Params::builder()
8268            .region("us-east-1".to_string())
8269            .bucket("myaccesspoint--test-ab1--xa-s3".to_string())
8270            .use_fips(true)
8271            .use_dual_stack(false)
8272            .accelerate(false)
8273            .use_s3_express_control_endpoint(false)
8274            .build()
8275            .expect("invalid params");
8276        let resolver = crate::config::endpoint::DefaultResolver::new();
8277        let endpoint = resolver.resolve_endpoint(&params);
8278        let endpoint =
8279            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test-ab1--xa-s3.s3express-fips-test-ab1.us-east-1.amazonaws.com");
8280        assert_eq!(
8281            endpoint,
8282            ::aws_smithy_types::endpoint::Endpoint::builder()
8283                .url("https://myaccesspoint--test-ab1--xa-s3.s3express-fips-test-ab1.us-east-1.amazonaws.com")
8284                .property(
8285                    "authSchemes",
8286                    vec![{
8287                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8288                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8289                        out.insert("signingName".to_string(), "s3express".to_string().into());
8290                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
8291                        out.insert("disableDoubleEncoding".to_string(), true.into());
8292                        out
8293                    }
8294                    .into()]
8295                )
8296                .property("backend", "S3Express".to_string())
8297                .build()
8298        );
8299    }
8300
8301    /// Data Plane with short zone fips with AP china region
8302    #[test]
8303    fn test_288() {
8304        let params = crate::config::endpoint::Params::builder()
8305            .region("cn-north-1".to_string())
8306            .bucket("myaccesspoint--test-ab1--xa-s3".to_string())
8307            .use_fips(true)
8308            .use_dual_stack(false)
8309            .accelerate(false)
8310            .use_s3_express_control_endpoint(false)
8311            .build()
8312            .expect("invalid params");
8313        let resolver = crate::config::endpoint::DefaultResolver::new();
8314        let endpoint = resolver.resolve_endpoint(&params);
8315        let error = endpoint.expect_err("expected error: Partition does not support FIPS [Data Plane with short zone fips with AP china region]");
8316        assert_eq!(format!("{}", error), "Partition does not support FIPS")
8317    }
8318
8319    /// Data Plane with short zone (13 chars) fips
8320    #[test]
8321    fn test_289() {
8322        let params = crate::config::endpoint::Params::builder()
8323            .region("us-west-2".to_string())
8324            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
8325            .use_fips(true)
8326            .use_dual_stack(false)
8327            .accelerate(false)
8328            .use_s3_express_control_endpoint(false)
8329            .build()
8330            .expect("invalid params");
8331        let resolver = crate::config::endpoint::DefaultResolver::new();
8332        let endpoint = resolver.resolve_endpoint(&params);
8333        let endpoint =
8334            endpoint.expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com");
8335        assert_eq!(
8336            endpoint,
8337            ::aws_smithy_types::endpoint::Endpoint::builder()
8338                .url("https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com")
8339                .property(
8340                    "authSchemes",
8341                    vec![{
8342                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8343                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8344                        out.insert("signingName".to_string(), "s3express".to_string().into());
8345                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8346                        out.insert("disableDoubleEncoding".to_string(), true.into());
8347                        out
8348                    }
8349                    .into()]
8350                )
8351                .property("backend", "S3Express".to_string())
8352                .build()
8353        );
8354    }
8355
8356    /// Data Plane with short zone (13 chars) fips with AP
8357    #[test]
8358    fn test_290() {
8359        let params = crate::config::endpoint::Params::builder()
8360            .region("us-west-2".to_string())
8361            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
8362            .use_fips(true)
8363            .use_dual_stack(false)
8364            .accelerate(false)
8365            .use_s3_express_control_endpoint(false)
8366            .build()
8367            .expect("invalid params");
8368        let resolver = crate::config::endpoint::DefaultResolver::new();
8369        let endpoint = resolver.resolve_endpoint(&params);
8370        let endpoint = endpoint
8371            .expect("Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com");
8372        assert_eq!(
8373            endpoint,
8374            ::aws_smithy_types::endpoint::Endpoint::builder()
8375                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com")
8376                .property(
8377                    "authSchemes",
8378                    vec![{
8379                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8380                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8381                        out.insert("signingName".to_string(), "s3express".to_string().into());
8382                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8383                        out.insert("disableDoubleEncoding".to_string(), true.into());
8384                        out
8385                    }
8386                    .into()]
8387                )
8388                .property("backend", "S3Express".to_string())
8389                .build()
8390        );
8391    }
8392
8393    /// Data Plane with medium zone (14 chars) fips
8394    #[test]
8395    fn test_291() {
8396        let params = crate::config::endpoint::Params::builder()
8397            .region("us-west-2".to_string())
8398            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
8399            .use_fips(true)
8400            .use_dual_stack(false)
8401            .accelerate(false)
8402            .use_s3_express_control_endpoint(false)
8403            .build()
8404            .expect("invalid params");
8405        let resolver = crate::config::endpoint::DefaultResolver::new();
8406        let endpoint = resolver.resolve_endpoint(&params);
8407        let endpoint =
8408            endpoint.expect("Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com");
8409        assert_eq!(
8410            endpoint,
8411            ::aws_smithy_types::endpoint::Endpoint::builder()
8412                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com")
8413                .property(
8414                    "authSchemes",
8415                    vec![{
8416                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8417                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8418                        out.insert("signingName".to_string(), "s3express".to_string().into());
8419                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8420                        out.insert("disableDoubleEncoding".to_string(), true.into());
8421                        out
8422                    }
8423                    .into()]
8424                )
8425                .property("backend", "S3Express".to_string())
8426                .build()
8427        );
8428    }
8429
8430    /// Data Plane with medium zone (14 chars) fips with AP
8431    #[test]
8432    fn test_292() {
8433        let params = crate::config::endpoint::Params::builder()
8434            .region("us-west-2".to_string())
8435            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
8436            .use_fips(true)
8437            .use_dual_stack(false)
8438            .accelerate(false)
8439            .use_s3_express_control_endpoint(false)
8440            .build()
8441            .expect("invalid params");
8442        let resolver = crate::config::endpoint::DefaultResolver::new();
8443        let endpoint = resolver.resolve_endpoint(&params);
8444        let endpoint = endpoint
8445            .expect("Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com");
8446        assert_eq!(
8447            endpoint,
8448            ::aws_smithy_types::endpoint::Endpoint::builder()
8449                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com")
8450                .property(
8451                    "authSchemes",
8452                    vec![{
8453                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8454                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8455                        out.insert("signingName".to_string(), "s3express".to_string().into());
8456                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8457                        out.insert("disableDoubleEncoding".to_string(), true.into());
8458                        out
8459                    }
8460                    .into()]
8461                )
8462                .property("backend", "S3Express".to_string())
8463                .build()
8464        );
8465    }
8466
8467    /// Data Plane with long zone (20 chars) fips
8468    #[test]
8469    fn test_293() {
8470        let params = crate::config::endpoint::Params::builder()
8471            .region("us-west-2".to_string())
8472            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
8473            .use_fips(true)
8474            .use_dual_stack(false)
8475            .accelerate(false)
8476            .use_s3_express_control_endpoint(false)
8477            .build()
8478            .expect("invalid params");
8479        let resolver = crate::config::endpoint::DefaultResolver::new();
8480        let endpoint = resolver.resolve_endpoint(&params);
8481        let endpoint = endpoint.expect(
8482            "Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com",
8483        );
8484        assert_eq!(
8485            endpoint,
8486            ::aws_smithy_types::endpoint::Endpoint::builder()
8487                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com")
8488                .property(
8489                    "authSchemes",
8490                    vec![{
8491                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8492                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8493                        out.insert("signingName".to_string(), "s3express".to_string().into());
8494                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8495                        out.insert("disableDoubleEncoding".to_string(), true.into());
8496                        out
8497                    }
8498                    .into()]
8499                )
8500                .property("backend", "S3Express".to_string())
8501                .build()
8502        );
8503    }
8504
8505    /// Data Plane with long zone (20 chars) fips with AP
8506    #[test]
8507    fn test_294() {
8508        let params = crate::config::endpoint::Params::builder()
8509            .region("us-west-2".to_string())
8510            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
8511            .use_fips(true)
8512            .use_dual_stack(false)
8513            .accelerate(false)
8514            .use_s3_express_control_endpoint(false)
8515            .build()
8516            .expect("invalid params");
8517        let resolver = crate::config::endpoint::DefaultResolver::new();
8518        let endpoint = resolver.resolve_endpoint(&params);
8519        let endpoint = endpoint.expect(
8520            "Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com",
8521        );
8522        assert_eq!(
8523            endpoint,
8524            ::aws_smithy_types::endpoint::Endpoint::builder()
8525                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com")
8526                .property(
8527                    "authSchemes",
8528                    vec![{
8529                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8530                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8531                        out.insert("signingName".to_string(), "s3express".to_string().into());
8532                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8533                        out.insert("disableDoubleEncoding".to_string(), true.into());
8534                        out
8535                    }
8536                    .into()]
8537                )
8538                .property("backend", "S3Express".to_string())
8539                .build()
8540        );
8541    }
8542
8543    /// Data Plane with long AZ
8544    #[test]
8545    fn test_295() {
8546        let params = crate::config::endpoint::Params::builder()
8547            .region("us-west-2".to_string())
8548            .bucket("mybucket--test1-az1--x-s3".to_string())
8549            .use_fips(false)
8550            .use_dual_stack(false)
8551            .accelerate(false)
8552            .use_s3_express_control_endpoint(false)
8553            .build()
8554            .expect("invalid params");
8555        let resolver = crate::config::endpoint::DefaultResolver::new();
8556        let endpoint = resolver.resolve_endpoint(&params);
8557        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test1-az1--x-s3.s3express-test1-az1.us-west-2.amazonaws.com");
8558        assert_eq!(
8559            endpoint,
8560            ::aws_smithy_types::endpoint::Endpoint::builder()
8561                .url("https://mybucket--test1-az1--x-s3.s3express-test1-az1.us-west-2.amazonaws.com")
8562                .property(
8563                    "authSchemes",
8564                    vec![{
8565                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8566                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8567                        out.insert("signingName".to_string(), "s3express".to_string().into());
8568                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8569                        out.insert("disableDoubleEncoding".to_string(), true.into());
8570                        out
8571                    }
8572                    .into()]
8573                )
8574                .property("backend", "S3Express".to_string())
8575                .build()
8576        );
8577    }
8578
8579    /// Data Plane with long AZ with AP
8580    #[test]
8581    fn test_296() {
8582        let params = crate::config::endpoint::Params::builder()
8583            .region("us-west-2".to_string())
8584            .bucket("myaccesspoint--test1-az1--xa-s3".to_string())
8585            .use_fips(false)
8586            .use_dual_stack(false)
8587            .accelerate(false)
8588            .use_s3_express_control_endpoint(false)
8589            .build()
8590            .expect("invalid params");
8591        let resolver = crate::config::endpoint::DefaultResolver::new();
8592        let endpoint = resolver.resolve_endpoint(&params);
8593        let endpoint =
8594            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-az1--xa-s3.s3express-test1-az1.us-west-2.amazonaws.com");
8595        assert_eq!(
8596            endpoint,
8597            ::aws_smithy_types::endpoint::Endpoint::builder()
8598                .url("https://myaccesspoint--test1-az1--xa-s3.s3express-test1-az1.us-west-2.amazonaws.com")
8599                .property(
8600                    "authSchemes",
8601                    vec![{
8602                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8603                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8604                        out.insert("signingName".to_string(), "s3express".to_string().into());
8605                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8606                        out.insert("disableDoubleEncoding".to_string(), true.into());
8607                        out
8608                    }
8609                    .into()]
8610                )
8611                .property("backend", "S3Express".to_string())
8612                .build()
8613        );
8614    }
8615
8616    /// Data Plane with long AZ fips
8617    #[test]
8618    fn test_297() {
8619        let params = crate::config::endpoint::Params::builder()
8620            .region("us-west-2".to_string())
8621            .bucket("mybucket--test1-az1--x-s3".to_string())
8622            .use_fips(true)
8623            .use_dual_stack(false)
8624            .accelerate(false)
8625            .use_s3_express_control_endpoint(false)
8626            .build()
8627            .expect("invalid params");
8628        let resolver = crate::config::endpoint::DefaultResolver::new();
8629        let endpoint = resolver.resolve_endpoint(&params);
8630        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test1-az1--x-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com");
8631        assert_eq!(
8632            endpoint,
8633            ::aws_smithy_types::endpoint::Endpoint::builder()
8634                .url("https://mybucket--test1-az1--x-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com")
8635                .property(
8636                    "authSchemes",
8637                    vec![{
8638                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8639                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8640                        out.insert("signingName".to_string(), "s3express".to_string().into());
8641                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8642                        out.insert("disableDoubleEncoding".to_string(), true.into());
8643                        out
8644                    }
8645                    .into()]
8646                )
8647                .property("backend", "S3Express".to_string())
8648                .build()
8649        );
8650    }
8651
8652    /// Data Plane with long AZ fips with AP
8653    #[test]
8654    fn test_298() {
8655        let params = crate::config::endpoint::Params::builder()
8656            .region("us-west-2".to_string())
8657            .bucket("myaccesspoint--test1-az1--xa-s3".to_string())
8658            .use_fips(true)
8659            .use_dual_stack(false)
8660            .accelerate(false)
8661            .use_s3_express_control_endpoint(false)
8662            .build()
8663            .expect("invalid params");
8664        let resolver = crate::config::endpoint::DefaultResolver::new();
8665        let endpoint = resolver.resolve_endpoint(&params);
8666        let endpoint =
8667            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-az1--xa-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com");
8668        assert_eq!(
8669            endpoint,
8670            ::aws_smithy_types::endpoint::Endpoint::builder()
8671                .url("https://myaccesspoint--test1-az1--xa-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com")
8672                .property(
8673                    "authSchemes",
8674                    vec![{
8675                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8676                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
8677                        out.insert("signingName".to_string(), "s3express".to_string().into());
8678                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8679                        out.insert("disableDoubleEncoding".to_string(), true.into());
8680                        out
8681                    }
8682                    .into()]
8683                )
8684                .property("backend", "S3Express".to_string())
8685                .build()
8686        );
8687    }
8688
8689    /// Control plane with short AZ bucket
8690    #[test]
8691    fn test_299() {
8692        let params = crate::config::endpoint::Params::builder()
8693            .region("us-east-1".to_string())
8694            .bucket("mybucket--test-ab1--x-s3".to_string())
8695            .use_fips(false)
8696            .use_dual_stack(false)
8697            .accelerate(false)
8698            .use_s3_express_control_endpoint(true)
8699            .disable_s3_express_session_auth(false)
8700            .build()
8701            .expect("invalid params");
8702        let resolver = crate::config::endpoint::DefaultResolver::new();
8703        let endpoint = resolver.resolve_endpoint(&params);
8704        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3");
8705        assert_eq!(
8706            endpoint,
8707            ::aws_smithy_types::endpoint::Endpoint::builder()
8708                .url("https://s3express-control.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3")
8709                .property(
8710                    "authSchemes",
8711                    vec![{
8712                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8713                        out.insert("name".to_string(), "sigv4".to_string().into());
8714                        out.insert("signingName".to_string(), "s3express".to_string().into());
8715                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
8716                        out.insert("disableDoubleEncoding".to_string(), true.into());
8717                        out
8718                    }
8719                    .into()]
8720                )
8721                .property("backend", "S3Express".to_string())
8722                .build()
8723        );
8724    }
8725
8726    /// Control plane with short AZ bucket china region
8727    #[test]
8728    fn test_300() {
8729        let params = crate::config::endpoint::Params::builder()
8730            .region("cn-north-1".to_string())
8731            .bucket("mybucket--test-ab1--x-s3".to_string())
8732            .use_fips(false)
8733            .use_dual_stack(false)
8734            .accelerate(false)
8735            .use_s3_express_control_endpoint(true)
8736            .disable_s3_express_session_auth(false)
8737            .build()
8738            .expect("invalid params");
8739        let resolver = crate::config::endpoint::DefaultResolver::new();
8740        let endpoint = resolver.resolve_endpoint(&params);
8741        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control.cn-north-1.amazonaws.com.cn/mybucket--test-ab1--x-s3");
8742        assert_eq!(
8743            endpoint,
8744            ::aws_smithy_types::endpoint::Endpoint::builder()
8745                .url("https://s3express-control.cn-north-1.amazonaws.com.cn/mybucket--test-ab1--x-s3")
8746                .property(
8747                    "authSchemes",
8748                    vec![{
8749                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8750                        out.insert("name".to_string(), "sigv4".to_string().into());
8751                        out.insert("signingName".to_string(), "s3express".to_string().into());
8752                        out.insert("signingRegion".to_string(), "cn-north-1".to_string().into());
8753                        out.insert("disableDoubleEncoding".to_string(), true.into());
8754                        out
8755                    }
8756                    .into()]
8757                )
8758                .property("backend", "S3Express".to_string())
8759                .build()
8760        );
8761    }
8762
8763    /// Control plane with short AZ bucket and fips
8764    #[test]
8765    fn test_301() {
8766        let params = crate::config::endpoint::Params::builder()
8767            .region("us-east-1".to_string())
8768            .bucket("mybucket--test-ab1--x-s3".to_string())
8769            .use_fips(true)
8770            .use_dual_stack(false)
8771            .accelerate(false)
8772            .use_s3_express_control_endpoint(true)
8773            .disable_s3_express_session_auth(false)
8774            .build()
8775            .expect("invalid params");
8776        let resolver = crate::config::endpoint::DefaultResolver::new();
8777        let endpoint = resolver.resolve_endpoint(&params);
8778        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control-fips.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3");
8779        assert_eq!(
8780            endpoint,
8781            ::aws_smithy_types::endpoint::Endpoint::builder()
8782                .url("https://s3express-control-fips.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3")
8783                .property(
8784                    "authSchemes",
8785                    vec![{
8786                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8787                        out.insert("name".to_string(), "sigv4".to_string().into());
8788                        out.insert("signingName".to_string(), "s3express".to_string().into());
8789                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
8790                        out.insert("disableDoubleEncoding".to_string(), true.into());
8791                        out
8792                    }
8793                    .into()]
8794                )
8795                .property("backend", "S3Express".to_string())
8796                .build()
8797        );
8798    }
8799
8800    /// Control plane with short AZ bucket and fips china region
8801    #[test]
8802    fn test_302() {
8803        let params = crate::config::endpoint::Params::builder()
8804            .region("cn-north-1".to_string())
8805            .bucket("mybucket--test-ab1--x-s3".to_string())
8806            .use_fips(true)
8807            .use_dual_stack(false)
8808            .accelerate(false)
8809            .use_s3_express_control_endpoint(true)
8810            .disable_s3_express_session_auth(false)
8811            .build()
8812            .expect("invalid params");
8813        let resolver = crate::config::endpoint::DefaultResolver::new();
8814        let endpoint = resolver.resolve_endpoint(&params);
8815        let error = endpoint.expect_err("expected error: Partition does not support FIPS [Control plane with short AZ bucket and fips china region]");
8816        assert_eq!(format!("{}", error), "Partition does not support FIPS")
8817    }
8818
8819    /// Control plane without bucket
8820    #[test]
8821    fn test_303() {
8822        let params = crate::config::endpoint::Params::builder()
8823            .region("us-east-1".to_string())
8824            .use_fips(false)
8825            .use_dual_stack(false)
8826            .accelerate(false)
8827            .use_s3_express_control_endpoint(true)
8828            .disable_s3_express_session_auth(false)
8829            .build()
8830            .expect("invalid params");
8831        let resolver = crate::config::endpoint::DefaultResolver::new();
8832        let endpoint = resolver.resolve_endpoint(&params);
8833        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control.us-east-1.amazonaws.com");
8834        assert_eq!(
8835            endpoint,
8836            ::aws_smithy_types::endpoint::Endpoint::builder()
8837                .url("https://s3express-control.us-east-1.amazonaws.com")
8838                .property(
8839                    "authSchemes",
8840                    vec![{
8841                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8842                        out.insert("name".to_string(), "sigv4".to_string().into());
8843                        out.insert("signingName".to_string(), "s3express".to_string().into());
8844                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
8845                        out.insert("disableDoubleEncoding".to_string(), true.into());
8846                        out
8847                    }
8848                    .into()]
8849                )
8850                .property("backend", "S3Express".to_string())
8851                .build()
8852        );
8853    }
8854
8855    /// Control plane without bucket and fips
8856    #[test]
8857    fn test_304() {
8858        let params = crate::config::endpoint::Params::builder()
8859            .region("us-east-1".to_string())
8860            .use_fips(true)
8861            .use_dual_stack(false)
8862            .accelerate(false)
8863            .use_s3_express_control_endpoint(true)
8864            .disable_s3_express_session_auth(false)
8865            .build()
8866            .expect("invalid params");
8867        let resolver = crate::config::endpoint::DefaultResolver::new();
8868        let endpoint = resolver.resolve_endpoint(&params);
8869        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control-fips.us-east-1.amazonaws.com");
8870        assert_eq!(
8871            endpoint,
8872            ::aws_smithy_types::endpoint::Endpoint::builder()
8873                .url("https://s3express-control-fips.us-east-1.amazonaws.com")
8874                .property(
8875                    "authSchemes",
8876                    vec![{
8877                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8878                        out.insert("name".to_string(), "sigv4".to_string().into());
8879                        out.insert("signingName".to_string(), "s3express".to_string().into());
8880                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
8881                        out.insert("disableDoubleEncoding".to_string(), true.into());
8882                        out
8883                    }
8884                    .into()]
8885                )
8886                .property("backend", "S3Express".to_string())
8887                .build()
8888        );
8889    }
8890
8891    /// Data Plane sigv4 auth with short AZ
8892    #[test]
8893    fn test_305() {
8894        let params = crate::config::endpoint::Params::builder()
8895            .region("us-west-2".to_string())
8896            .bucket("mybucket--usw2-az1--x-s3".to_string())
8897            .use_fips(false)
8898            .use_dual_stack(false)
8899            .accelerate(false)
8900            .disable_s3_express_session_auth(true)
8901            .build()
8902            .expect("invalid params");
8903        let resolver = crate::config::endpoint::DefaultResolver::new();
8904        let endpoint = resolver.resolve_endpoint(&params);
8905        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com");
8906        assert_eq!(
8907            endpoint,
8908            ::aws_smithy_types::endpoint::Endpoint::builder()
8909                .url("https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com")
8910                .property(
8911                    "authSchemes",
8912                    vec![{
8913                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8914                        out.insert("name".to_string(), "sigv4".to_string().into());
8915                        out.insert("signingName".to_string(), "s3express".to_string().into());
8916                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8917                        out.insert("disableDoubleEncoding".to_string(), true.into());
8918                        out
8919                    }
8920                    .into()]
8921                )
8922                .property("backend", "S3Express".to_string())
8923                .build()
8924        );
8925    }
8926
8927    /// Data Plane sigv4 auth with short AZ with AP
8928    #[test]
8929    fn test_306() {
8930        let params = crate::config::endpoint::Params::builder()
8931            .region("us-west-2".to_string())
8932            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
8933            .use_fips(false)
8934            .use_dual_stack(false)
8935            .accelerate(false)
8936            .disable_s3_express_session_auth(true)
8937            .build()
8938            .expect("invalid params");
8939        let resolver = crate::config::endpoint::DefaultResolver::new();
8940        let endpoint = resolver.resolve_endpoint(&params);
8941        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.s3express-usw2-az1.us-west-2.amazonaws.com");
8942        assert_eq!(
8943            endpoint,
8944            ::aws_smithy_types::endpoint::Endpoint::builder()
8945                .url("https://myaccesspoint--usw2-az1--xa-s3.s3express-usw2-az1.us-west-2.amazonaws.com")
8946                .property(
8947                    "authSchemes",
8948                    vec![{
8949                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8950                        out.insert("name".to_string(), "sigv4".to_string().into());
8951                        out.insert("signingName".to_string(), "s3express".to_string().into());
8952                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8953                        out.insert("disableDoubleEncoding".to_string(), true.into());
8954                        out
8955                    }
8956                    .into()]
8957                )
8958                .property("backend", "S3Express".to_string())
8959                .build()
8960        );
8961    }
8962
8963    /// Data Plane sigv4 auth with short zone (13 chars)
8964    #[test]
8965    fn test_307() {
8966        let params = crate::config::endpoint::Params::builder()
8967            .region("us-west-2".to_string())
8968            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
8969            .use_fips(false)
8970            .use_dual_stack(false)
8971            .accelerate(false)
8972            .disable_s3_express_session_auth(true)
8973            .build()
8974            .expect("invalid params");
8975        let resolver = crate::config::endpoint::DefaultResolver::new();
8976        let endpoint = resolver.resolve_endpoint(&params);
8977        let endpoint =
8978            endpoint.expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com");
8979        assert_eq!(
8980            endpoint,
8981            ::aws_smithy_types::endpoint::Endpoint::builder()
8982                .url("https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com")
8983                .property(
8984                    "authSchemes",
8985                    vec![{
8986                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
8987                        out.insert("name".to_string(), "sigv4".to_string().into());
8988                        out.insert("signingName".to_string(), "s3express".to_string().into());
8989                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
8990                        out.insert("disableDoubleEncoding".to_string(), true.into());
8991                        out
8992                    }
8993                    .into()]
8994                )
8995                .property("backend", "S3Express".to_string())
8996                .build()
8997        );
8998    }
8999
9000    /// Data Plane sigv4 auth with short zone (13 chars) with AP
9001    #[test]
9002    fn test_308() {
9003        let params = crate::config::endpoint::Params::builder()
9004            .region("us-west-2".to_string())
9005            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
9006            .use_fips(false)
9007            .use_dual_stack(false)
9008            .accelerate(false)
9009            .disable_s3_express_session_auth(true)
9010            .build()
9011            .expect("invalid params");
9012        let resolver = crate::config::endpoint::DefaultResolver::new();
9013        let endpoint = resolver.resolve_endpoint(&params);
9014        let endpoint =
9015            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com");
9016        assert_eq!(
9017            endpoint,
9018            ::aws_smithy_types::endpoint::Endpoint::builder()
9019                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.us-west-2.amazonaws.com")
9020                .property(
9021                    "authSchemes",
9022                    vec![{
9023                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9024                        out.insert("name".to_string(), "sigv4".to_string().into());
9025                        out.insert("signingName".to_string(), "s3express".to_string().into());
9026                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9027                        out.insert("disableDoubleEncoding".to_string(), true.into());
9028                        out
9029                    }
9030                    .into()]
9031                )
9032                .property("backend", "S3Express".to_string())
9033                .build()
9034        );
9035    }
9036
9037    /// Data Plane sigv4 auth with short AZ fips
9038    #[test]
9039    fn test_309() {
9040        let params = crate::config::endpoint::Params::builder()
9041            .region("us-west-2".to_string())
9042            .bucket("mybucket--usw2-az1--x-s3".to_string())
9043            .use_fips(true)
9044            .use_dual_stack(false)
9045            .accelerate(false)
9046            .disable_s3_express_session_auth(true)
9047            .build()
9048            .expect("invalid params");
9049        let resolver = crate::config::endpoint::DefaultResolver::new();
9050        let endpoint = resolver.resolve_endpoint(&params);
9051        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.us-west-2.amazonaws.com");
9052        assert_eq!(
9053            endpoint,
9054            ::aws_smithy_types::endpoint::Endpoint::builder()
9055                .url("https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.us-west-2.amazonaws.com")
9056                .property(
9057                    "authSchemes",
9058                    vec![{
9059                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9060                        out.insert("name".to_string(), "sigv4".to_string().into());
9061                        out.insert("signingName".to_string(), "s3express".to_string().into());
9062                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9063                        out.insert("disableDoubleEncoding".to_string(), true.into());
9064                        out
9065                    }
9066                    .into()]
9067                )
9068                .property("backend", "S3Express".to_string())
9069                .build()
9070        );
9071    }
9072
9073    /// Data Plane sigv4 auth with short AZ fips with AP
9074    #[test]
9075    fn test_310() {
9076        let params = crate::config::endpoint::Params::builder()
9077            .region("us-west-2".to_string())
9078            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
9079            .use_fips(true)
9080            .use_dual_stack(false)
9081            .accelerate(false)
9082            .disable_s3_express_session_auth(true)
9083            .build()
9084            .expect("invalid params");
9085        let resolver = crate::config::endpoint::DefaultResolver::new();
9086        let endpoint = resolver.resolve_endpoint(&params);
9087        let endpoint =
9088            endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.s3express-fips-usw2-az1.us-west-2.amazonaws.com");
9089        assert_eq!(
9090            endpoint,
9091            ::aws_smithy_types::endpoint::Endpoint::builder()
9092                .url("https://myaccesspoint--usw2-az1--xa-s3.s3express-fips-usw2-az1.us-west-2.amazonaws.com")
9093                .property(
9094                    "authSchemes",
9095                    vec![{
9096                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9097                        out.insert("name".to_string(), "sigv4".to_string().into());
9098                        out.insert("signingName".to_string(), "s3express".to_string().into());
9099                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9100                        out.insert("disableDoubleEncoding".to_string(), true.into());
9101                        out
9102                    }
9103                    .into()]
9104                )
9105                .property("backend", "S3Express".to_string())
9106                .build()
9107        );
9108    }
9109
9110    /// Data Plane sigv4 auth with short zone (13 chars) fips
9111    #[test]
9112    fn test_311() {
9113        let params = crate::config::endpoint::Params::builder()
9114            .region("us-west-2".to_string())
9115            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
9116            .use_fips(true)
9117            .use_dual_stack(false)
9118            .accelerate(false)
9119            .disable_s3_express_session_auth(true)
9120            .build()
9121            .expect("invalid params");
9122        let resolver = crate::config::endpoint::DefaultResolver::new();
9123        let endpoint = resolver.resolve_endpoint(&params);
9124        let endpoint =
9125            endpoint.expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com");
9126        assert_eq!(
9127            endpoint,
9128            ::aws_smithy_types::endpoint::Endpoint::builder()
9129                .url("https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com")
9130                .property(
9131                    "authSchemes",
9132                    vec![{
9133                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9134                        out.insert("name".to_string(), "sigv4".to_string().into());
9135                        out.insert("signingName".to_string(), "s3express".to_string().into());
9136                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9137                        out.insert("disableDoubleEncoding".to_string(), true.into());
9138                        out
9139                    }
9140                    .into()]
9141                )
9142                .property("backend", "S3Express".to_string())
9143                .build()
9144        );
9145    }
9146
9147    /// Data Plane sigv4 auth with short zone (13 chars) fips with AP
9148    #[test]
9149    fn test_312() {
9150        let params = crate::config::endpoint::Params::builder()
9151            .region("us-west-2".to_string())
9152            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
9153            .use_fips(true)
9154            .use_dual_stack(false)
9155            .accelerate(false)
9156            .disable_s3_express_session_auth(true)
9157            .build()
9158            .expect("invalid params");
9159        let resolver = crate::config::endpoint::DefaultResolver::new();
9160        let endpoint = resolver.resolve_endpoint(&params);
9161        let endpoint = endpoint
9162            .expect("Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com");
9163        assert_eq!(
9164            endpoint,
9165            ::aws_smithy_types::endpoint::Endpoint::builder()
9166                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.us-west-2.amazonaws.com")
9167                .property(
9168                    "authSchemes",
9169                    vec![{
9170                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9171                        out.insert("name".to_string(), "sigv4".to_string().into());
9172                        out.insert("signingName".to_string(), "s3express".to_string().into());
9173                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9174                        out.insert("disableDoubleEncoding".to_string(), true.into());
9175                        out
9176                    }
9177                    .into()]
9178                )
9179                .property("backend", "S3Express".to_string())
9180                .build()
9181        );
9182    }
9183
9184    /// Data Plane sigv4 auth with long AZ
9185    #[test]
9186    fn test_313() {
9187        let params = crate::config::endpoint::Params::builder()
9188            .region("us-west-2".to_string())
9189            .bucket("mybucket--test1-az1--x-s3".to_string())
9190            .use_fips(false)
9191            .use_dual_stack(false)
9192            .accelerate(false)
9193            .use_s3_express_control_endpoint(false)
9194            .disable_s3_express_session_auth(true)
9195            .build()
9196            .expect("invalid params");
9197        let resolver = crate::config::endpoint::DefaultResolver::new();
9198        let endpoint = resolver.resolve_endpoint(&params);
9199        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test1-az1--x-s3.s3express-test1-az1.us-west-2.amazonaws.com");
9200        assert_eq!(
9201            endpoint,
9202            ::aws_smithy_types::endpoint::Endpoint::builder()
9203                .url("https://mybucket--test1-az1--x-s3.s3express-test1-az1.us-west-2.amazonaws.com")
9204                .property(
9205                    "authSchemes",
9206                    vec![{
9207                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9208                        out.insert("name".to_string(), "sigv4".to_string().into());
9209                        out.insert("signingName".to_string(), "s3express".to_string().into());
9210                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9211                        out.insert("disableDoubleEncoding".to_string(), true.into());
9212                        out
9213                    }
9214                    .into()]
9215                )
9216                .property("backend", "S3Express".to_string())
9217                .build()
9218        );
9219    }
9220
9221    /// Data Plane sigv4 auth with long AZ with AP
9222    #[test]
9223    fn test_314() {
9224        let params = crate::config::endpoint::Params::builder()
9225            .region("us-west-2".to_string())
9226            .bucket("myaccesspoint--test1-az1--xa-s3".to_string())
9227            .use_fips(false)
9228            .use_dual_stack(false)
9229            .accelerate(false)
9230            .use_s3_express_control_endpoint(false)
9231            .disable_s3_express_session_auth(true)
9232            .build()
9233            .expect("invalid params");
9234        let resolver = crate::config::endpoint::DefaultResolver::new();
9235        let endpoint = resolver.resolve_endpoint(&params);
9236        let endpoint =
9237            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-az1--xa-s3.s3express-test1-az1.us-west-2.amazonaws.com");
9238        assert_eq!(
9239            endpoint,
9240            ::aws_smithy_types::endpoint::Endpoint::builder()
9241                .url("https://myaccesspoint--test1-az1--xa-s3.s3express-test1-az1.us-west-2.amazonaws.com")
9242                .property(
9243                    "authSchemes",
9244                    vec![{
9245                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9246                        out.insert("name".to_string(), "sigv4".to_string().into());
9247                        out.insert("signingName".to_string(), "s3express".to_string().into());
9248                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9249                        out.insert("disableDoubleEncoding".to_string(), true.into());
9250                        out
9251                    }
9252                    .into()]
9253                )
9254                .property("backend", "S3Express".to_string())
9255                .build()
9256        );
9257    }
9258
9259    /// Data Plane sigv4 auth with medium zone(14 chars)
9260    #[test]
9261    fn test_315() {
9262        let params = crate::config::endpoint::Params::builder()
9263            .region("us-west-2".to_string())
9264            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
9265            .use_fips(false)
9266            .use_dual_stack(false)
9267            .accelerate(false)
9268            .use_s3_express_control_endpoint(false)
9269            .disable_s3_express_session_auth(true)
9270            .build()
9271            .expect("invalid params");
9272        let resolver = crate::config::endpoint::DefaultResolver::new();
9273        let endpoint = resolver.resolve_endpoint(&params);
9274        let endpoint =
9275            endpoint.expect("Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com");
9276        assert_eq!(
9277            endpoint,
9278            ::aws_smithy_types::endpoint::Endpoint::builder()
9279                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com")
9280                .property(
9281                    "authSchemes",
9282                    vec![{
9283                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9284                        out.insert("name".to_string(), "sigv4".to_string().into());
9285                        out.insert("signingName".to_string(), "s3express".to_string().into());
9286                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9287                        out.insert("disableDoubleEncoding".to_string(), true.into());
9288                        out
9289                    }
9290                    .into()]
9291                )
9292                .property("backend", "S3Express".to_string())
9293                .build()
9294        );
9295    }
9296
9297    /// Data Plane sigv4 auth with medium zone(14 chars) with AP
9298    #[test]
9299    fn test_316() {
9300        let params = crate::config::endpoint::Params::builder()
9301            .region("us-west-2".to_string())
9302            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
9303            .use_fips(false)
9304            .use_dual_stack(false)
9305            .accelerate(false)
9306            .use_s3_express_control_endpoint(false)
9307            .disable_s3_express_session_auth(true)
9308            .build()
9309            .expect("invalid params");
9310        let resolver = crate::config::endpoint::DefaultResolver::new();
9311        let endpoint = resolver.resolve_endpoint(&params);
9312        let endpoint =
9313            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com");
9314        assert_eq!(
9315            endpoint,
9316            ::aws_smithy_types::endpoint::Endpoint::builder()
9317                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.us-west-2.amazonaws.com")
9318                .property(
9319                    "authSchemes",
9320                    vec![{
9321                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9322                        out.insert("name".to_string(), "sigv4".to_string().into());
9323                        out.insert("signingName".to_string(), "s3express".to_string().into());
9324                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9325                        out.insert("disableDoubleEncoding".to_string(), true.into());
9326                        out
9327                    }
9328                    .into()]
9329                )
9330                .property("backend", "S3Express".to_string())
9331                .build()
9332        );
9333    }
9334
9335    /// Data Plane sigv4 auth with long zone(20 chars)
9336    #[test]
9337    fn test_317() {
9338        let params = crate::config::endpoint::Params::builder()
9339            .region("us-west-2".to_string())
9340            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
9341            .use_fips(false)
9342            .use_dual_stack(false)
9343            .accelerate(false)
9344            .use_s3_express_control_endpoint(false)
9345            .disable_s3_express_session_auth(true)
9346            .build()
9347            .expect("invalid params");
9348        let resolver = crate::config::endpoint::DefaultResolver::new();
9349        let endpoint = resolver.resolve_endpoint(&params);
9350        let endpoint = endpoint
9351            .expect("Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com");
9352        assert_eq!(
9353            endpoint,
9354            ::aws_smithy_types::endpoint::Endpoint::builder()
9355                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com")
9356                .property(
9357                    "authSchemes",
9358                    vec![{
9359                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9360                        out.insert("name".to_string(), "sigv4".to_string().into());
9361                        out.insert("signingName".to_string(), "s3express".to_string().into());
9362                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9363                        out.insert("disableDoubleEncoding".to_string(), true.into());
9364                        out
9365                    }
9366                    .into()]
9367                )
9368                .property("backend", "S3Express".to_string())
9369                .build()
9370        );
9371    }
9372
9373    /// Data Plane sigv4 auth with long zone(20 chars) with AP
9374    #[test]
9375    fn test_318() {
9376        let params = crate::config::endpoint::Params::builder()
9377            .region("us-west-2".to_string())
9378            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
9379            .use_fips(false)
9380            .use_dual_stack(false)
9381            .accelerate(false)
9382            .use_s3_express_control_endpoint(false)
9383            .disable_s3_express_session_auth(true)
9384            .build()
9385            .expect("invalid params");
9386        let resolver = crate::config::endpoint::DefaultResolver::new();
9387        let endpoint = resolver.resolve_endpoint(&params);
9388        let endpoint = endpoint.expect(
9389            "Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com",
9390        );
9391        assert_eq!(
9392            endpoint,
9393            ::aws_smithy_types::endpoint::Endpoint::builder()
9394                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.us-west-2.amazonaws.com")
9395                .property(
9396                    "authSchemes",
9397                    vec![{
9398                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9399                        out.insert("name".to_string(), "sigv4".to_string().into());
9400                        out.insert("signingName".to_string(), "s3express".to_string().into());
9401                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9402                        out.insert("disableDoubleEncoding".to_string(), true.into());
9403                        out
9404                    }
9405                    .into()]
9406                )
9407                .property("backend", "S3Express".to_string())
9408                .build()
9409        );
9410    }
9411
9412    /// Data Plane sigv4 auth with long AZ fips
9413    #[test]
9414    fn test_319() {
9415        let params = crate::config::endpoint::Params::builder()
9416            .region("us-west-2".to_string())
9417            .bucket("mybucket--test1-az1--x-s3".to_string())
9418            .use_fips(true)
9419            .use_dual_stack(false)
9420            .accelerate(false)
9421            .use_s3_express_control_endpoint(false)
9422            .disable_s3_express_session_auth(true)
9423            .build()
9424            .expect("invalid params");
9425        let resolver = crate::config::endpoint::DefaultResolver::new();
9426        let endpoint = resolver.resolve_endpoint(&params);
9427        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test1-az1--x-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com");
9428        assert_eq!(
9429            endpoint,
9430            ::aws_smithy_types::endpoint::Endpoint::builder()
9431                .url("https://mybucket--test1-az1--x-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com")
9432                .property(
9433                    "authSchemes",
9434                    vec![{
9435                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9436                        out.insert("name".to_string(), "sigv4".to_string().into());
9437                        out.insert("signingName".to_string(), "s3express".to_string().into());
9438                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9439                        out.insert("disableDoubleEncoding".to_string(), true.into());
9440                        out
9441                    }
9442                    .into()]
9443                )
9444                .property("backend", "S3Express".to_string())
9445                .build()
9446        );
9447    }
9448
9449    /// Data Plane sigv4 auth with long AZ fips with AP
9450    #[test]
9451    fn test_320() {
9452        let params = crate::config::endpoint::Params::builder()
9453            .region("us-west-2".to_string())
9454            .bucket("myaccesspoint--test1-az1--xa-s3".to_string())
9455            .use_fips(true)
9456            .use_dual_stack(false)
9457            .accelerate(false)
9458            .use_s3_express_control_endpoint(false)
9459            .disable_s3_express_session_auth(true)
9460            .build()
9461            .expect("invalid params");
9462        let resolver = crate::config::endpoint::DefaultResolver::new();
9463        let endpoint = resolver.resolve_endpoint(&params);
9464        let endpoint =
9465            endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-az1--xa-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com");
9466        assert_eq!(
9467            endpoint,
9468            ::aws_smithy_types::endpoint::Endpoint::builder()
9469                .url("https://myaccesspoint--test1-az1--xa-s3.s3express-fips-test1-az1.us-west-2.amazonaws.com")
9470                .property(
9471                    "authSchemes",
9472                    vec![{
9473                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9474                        out.insert("name".to_string(), "sigv4".to_string().into());
9475                        out.insert("signingName".to_string(), "s3express".to_string().into());
9476                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9477                        out.insert("disableDoubleEncoding".to_string(), true.into());
9478                        out
9479                    }
9480                    .into()]
9481                )
9482                .property("backend", "S3Express".to_string())
9483                .build()
9484        );
9485    }
9486
9487    /// Data Plane sigv4 auth with medium zone (14 chars) fips
9488    #[test]
9489    fn test_321() {
9490        let params = crate::config::endpoint::Params::builder()
9491            .region("us-west-2".to_string())
9492            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
9493            .use_fips(true)
9494            .use_dual_stack(false)
9495            .accelerate(false)
9496            .use_s3_express_control_endpoint(false)
9497            .disable_s3_express_session_auth(true)
9498            .build()
9499            .expect("invalid params");
9500        let resolver = crate::config::endpoint::DefaultResolver::new();
9501        let endpoint = resolver.resolve_endpoint(&params);
9502        let endpoint =
9503            endpoint.expect("Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com");
9504        assert_eq!(
9505            endpoint,
9506            ::aws_smithy_types::endpoint::Endpoint::builder()
9507                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com")
9508                .property(
9509                    "authSchemes",
9510                    vec![{
9511                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9512                        out.insert("name".to_string(), "sigv4".to_string().into());
9513                        out.insert("signingName".to_string(), "s3express".to_string().into());
9514                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9515                        out.insert("disableDoubleEncoding".to_string(), true.into());
9516                        out
9517                    }
9518                    .into()]
9519                )
9520                .property("backend", "S3Express".to_string())
9521                .build()
9522        );
9523    }
9524
9525    /// Data Plane sigv4 auth with medium zone (14 chars) fips with AP
9526    #[test]
9527    fn test_322() {
9528        let params = crate::config::endpoint::Params::builder()
9529            .region("us-west-2".to_string())
9530            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
9531            .use_fips(true)
9532            .use_dual_stack(false)
9533            .accelerate(false)
9534            .use_s3_express_control_endpoint(false)
9535            .disable_s3_express_session_auth(true)
9536            .build()
9537            .expect("invalid params");
9538        let resolver = crate::config::endpoint::DefaultResolver::new();
9539        let endpoint = resolver.resolve_endpoint(&params);
9540        let endpoint = endpoint
9541            .expect("Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com");
9542        assert_eq!(
9543            endpoint,
9544            ::aws_smithy_types::endpoint::Endpoint::builder()
9545                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.us-west-2.amazonaws.com")
9546                .property(
9547                    "authSchemes",
9548                    vec![{
9549                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9550                        out.insert("name".to_string(), "sigv4".to_string().into());
9551                        out.insert("signingName".to_string(), "s3express".to_string().into());
9552                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9553                        out.insert("disableDoubleEncoding".to_string(), true.into());
9554                        out
9555                    }
9556                    .into()]
9557                )
9558                .property("backend", "S3Express".to_string())
9559                .build()
9560        );
9561    }
9562
9563    /// Data Plane sigv4 auth with long zone (20 chars) fips
9564    #[test]
9565    fn test_323() {
9566        let params = crate::config::endpoint::Params::builder()
9567            .region("us-west-2".to_string())
9568            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
9569            .use_fips(true)
9570            .use_dual_stack(false)
9571            .accelerate(false)
9572            .use_s3_express_control_endpoint(false)
9573            .disable_s3_express_session_auth(true)
9574            .build()
9575            .expect("invalid params");
9576        let resolver = crate::config::endpoint::DefaultResolver::new();
9577        let endpoint = resolver.resolve_endpoint(&params);
9578        let endpoint = endpoint.expect(
9579            "Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com",
9580        );
9581        assert_eq!(
9582            endpoint,
9583            ::aws_smithy_types::endpoint::Endpoint::builder()
9584                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com")
9585                .property(
9586                    "authSchemes",
9587                    vec![{
9588                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9589                        out.insert("name".to_string(), "sigv4".to_string().into());
9590                        out.insert("signingName".to_string(), "s3express".to_string().into());
9591                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9592                        out.insert("disableDoubleEncoding".to_string(), true.into());
9593                        out
9594                    }
9595                    .into()]
9596                )
9597                .property("backend", "S3Express".to_string())
9598                .build()
9599        );
9600    }
9601
9602    /// Data Plane sigv4 auth with long zone (20 chars) fips with AP
9603    #[test]
9604    fn test_324() {
9605        let params = crate::config::endpoint::Params::builder()
9606            .region("us-west-2".to_string())
9607            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
9608            .use_fips(true)
9609            .use_dual_stack(false)
9610            .accelerate(false)
9611            .use_s3_express_control_endpoint(false)
9612            .disable_s3_express_session_auth(true)
9613            .build()
9614            .expect("invalid params");
9615        let resolver = crate::config::endpoint::DefaultResolver::new();
9616        let endpoint = resolver.resolve_endpoint(&params);
9617        let endpoint = endpoint.expect(
9618            "Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com",
9619        );
9620        assert_eq!(
9621            endpoint,
9622            ::aws_smithy_types::endpoint::Endpoint::builder()
9623                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.us-west-2.amazonaws.com")
9624                .property(
9625                    "authSchemes",
9626                    vec![{
9627                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9628                        out.insert("name".to_string(), "sigv4".to_string().into());
9629                        out.insert("signingName".to_string(), "s3express".to_string().into());
9630                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9631                        out.insert("disableDoubleEncoding".to_string(), true.into());
9632                        out
9633                    }
9634                    .into()]
9635                )
9636                .property("backend", "S3Express".to_string())
9637                .build()
9638        );
9639    }
9640
9641    /// Control Plane host override
9642    #[test]
9643    fn test_325() {
9644        let params = crate::config::endpoint::Params::builder()
9645            .region("us-west-2".to_string())
9646            .bucket("mybucket--usw2-az1--x-s3".to_string())
9647            .use_fips(false)
9648            .use_dual_stack(false)
9649            .accelerate(false)
9650            .use_s3_express_control_endpoint(true)
9651            .disable_s3_express_session_auth(true)
9652            .endpoint("https://custom.com".to_string())
9653            .build()
9654            .expect("invalid params");
9655        let resolver = crate::config::endpoint::DefaultResolver::new();
9656        let endpoint = resolver.resolve_endpoint(&params);
9657        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.custom.com");
9658        assert_eq!(
9659            endpoint,
9660            ::aws_smithy_types::endpoint::Endpoint::builder()
9661                .url("https://mybucket--usw2-az1--x-s3.custom.com")
9662                .property(
9663                    "authSchemes",
9664                    vec![{
9665                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9666                        out.insert("name".to_string(), "sigv4".to_string().into());
9667                        out.insert("signingName".to_string(), "s3express".to_string().into());
9668                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9669                        out.insert("disableDoubleEncoding".to_string(), true.into());
9670                        out
9671                    }
9672                    .into()]
9673                )
9674                .property("backend", "S3Express".to_string())
9675                .build()
9676        );
9677    }
9678
9679    /// Control Plane host override with AP
9680    #[test]
9681    fn test_326() {
9682        let params = crate::config::endpoint::Params::builder()
9683            .region("us-west-2".to_string())
9684            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
9685            .use_fips(false)
9686            .use_dual_stack(false)
9687            .accelerate(false)
9688            .use_s3_express_control_endpoint(true)
9689            .disable_s3_express_session_auth(true)
9690            .endpoint("https://custom.com".to_string())
9691            .build()
9692            .expect("invalid params");
9693        let resolver = crate::config::endpoint::DefaultResolver::new();
9694        let endpoint = resolver.resolve_endpoint(&params);
9695        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.custom.com");
9696        assert_eq!(
9697            endpoint,
9698            ::aws_smithy_types::endpoint::Endpoint::builder()
9699                .url("https://myaccesspoint--usw2-az1--xa-s3.custom.com")
9700                .property(
9701                    "authSchemes",
9702                    vec![{
9703                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9704                        out.insert("name".to_string(), "sigv4".to_string().into());
9705                        out.insert("signingName".to_string(), "s3express".to_string().into());
9706                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9707                        out.insert("disableDoubleEncoding".to_string(), true.into());
9708                        out
9709                    }
9710                    .into()]
9711                )
9712                .property("backend", "S3Express".to_string())
9713                .build()
9714        );
9715    }
9716
9717    /// Control Plane host override no bucket
9718    #[test]
9719    fn test_327() {
9720        let params = crate::config::endpoint::Params::builder()
9721            .region("us-west-2".to_string())
9722            .use_fips(false)
9723            .use_dual_stack(false)
9724            .accelerate(false)
9725            .use_s3_express_control_endpoint(true)
9726            .disable_s3_express_session_auth(true)
9727            .endpoint("https://custom.com".to_string())
9728            .build()
9729            .expect("invalid params");
9730        let resolver = crate::config::endpoint::DefaultResolver::new();
9731        let endpoint = resolver.resolve_endpoint(&params);
9732        let endpoint = endpoint.expect("Expected valid endpoint: https://custom.com");
9733        assert_eq!(
9734            endpoint,
9735            ::aws_smithy_types::endpoint::Endpoint::builder()
9736                .url("https://custom.com")
9737                .property(
9738                    "authSchemes",
9739                    vec![{
9740                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9741                        out.insert("name".to_string(), "sigv4".to_string().into());
9742                        out.insert("signingName".to_string(), "s3express".to_string().into());
9743                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9744                        out.insert("disableDoubleEncoding".to_string(), true.into());
9745                        out
9746                    }
9747                    .into()]
9748                )
9749                .property("backend", "S3Express".to_string())
9750                .build()
9751        );
9752    }
9753
9754    /// Data plane host override non virtual session auth
9755    #[test]
9756    fn test_328() {
9757        let params = crate::config::endpoint::Params::builder()
9758            .region("us-west-2".to_string())
9759            .bucket("mybucket--usw2-az1--x-s3".to_string())
9760            .use_fips(false)
9761            .use_dual_stack(false)
9762            .accelerate(false)
9763            .endpoint("https://10.0.0.1".to_string())
9764            .build()
9765            .expect("invalid params");
9766        let resolver = crate::config::endpoint::DefaultResolver::new();
9767        let endpoint = resolver.resolve_endpoint(&params);
9768        let endpoint = endpoint.expect("Expected valid endpoint: https://10.0.0.1/mybucket--usw2-az1--x-s3");
9769        assert_eq!(
9770            endpoint,
9771            ::aws_smithy_types::endpoint::Endpoint::builder()
9772                .url("https://10.0.0.1/mybucket--usw2-az1--x-s3")
9773                .property(
9774                    "authSchemes",
9775                    vec![{
9776                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9777                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
9778                        out.insert("signingName".to_string(), "s3express".to_string().into());
9779                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9780                        out.insert("disableDoubleEncoding".to_string(), true.into());
9781                        out
9782                    }
9783                    .into()]
9784                )
9785                .property("backend", "S3Express".to_string())
9786                .build()
9787        );
9788    }
9789
9790    /// Data plane host override non virtual session auth with AP
9791    #[test]
9792    fn test_329() {
9793        let params = crate::config::endpoint::Params::builder()
9794            .region("us-west-2".to_string())
9795            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
9796            .use_fips(false)
9797            .use_dual_stack(false)
9798            .accelerate(false)
9799            .endpoint("https://10.0.0.1".to_string())
9800            .build()
9801            .expect("invalid params");
9802        let resolver = crate::config::endpoint::DefaultResolver::new();
9803        let endpoint = resolver.resolve_endpoint(&params);
9804        let endpoint = endpoint.expect("Expected valid endpoint: https://10.0.0.1/myaccesspoint--usw2-az1--xa-s3");
9805        assert_eq!(
9806            endpoint,
9807            ::aws_smithy_types::endpoint::Endpoint::builder()
9808                .url("https://10.0.0.1/myaccesspoint--usw2-az1--xa-s3")
9809                .property(
9810                    "authSchemes",
9811                    vec![{
9812                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9813                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
9814                        out.insert("signingName".to_string(), "s3express".to_string().into());
9815                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9816                        out.insert("disableDoubleEncoding".to_string(), true.into());
9817                        out
9818                    }
9819                    .into()]
9820                )
9821                .property("backend", "S3Express".to_string())
9822                .build()
9823        );
9824    }
9825
9826    /// Control Plane host override ip
9827    #[test]
9828    fn test_330() {
9829        let params = crate::config::endpoint::Params::builder()
9830            .region("us-west-2".to_string())
9831            .bucket("mybucket--usw2-az1--x-s3".to_string())
9832            .use_fips(false)
9833            .use_dual_stack(false)
9834            .accelerate(false)
9835            .use_s3_express_control_endpoint(true)
9836            .disable_s3_express_session_auth(true)
9837            .endpoint("https://10.0.0.1".to_string())
9838            .build()
9839            .expect("invalid params");
9840        let resolver = crate::config::endpoint::DefaultResolver::new();
9841        let endpoint = resolver.resolve_endpoint(&params);
9842        let endpoint = endpoint.expect("Expected valid endpoint: https://10.0.0.1/mybucket--usw2-az1--x-s3");
9843        assert_eq!(
9844            endpoint,
9845            ::aws_smithy_types::endpoint::Endpoint::builder()
9846                .url("https://10.0.0.1/mybucket--usw2-az1--x-s3")
9847                .property(
9848                    "authSchemes",
9849                    vec![{
9850                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9851                        out.insert("name".to_string(), "sigv4".to_string().into());
9852                        out.insert("signingName".to_string(), "s3express".to_string().into());
9853                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9854                        out.insert("disableDoubleEncoding".to_string(), true.into());
9855                        out
9856                    }
9857                    .into()]
9858                )
9859                .property("backend", "S3Express".to_string())
9860                .build()
9861        );
9862    }
9863
9864    /// Control Plane host override ip with AP
9865    #[test]
9866    fn test_331() {
9867        let params = crate::config::endpoint::Params::builder()
9868            .region("us-west-2".to_string())
9869            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
9870            .use_fips(false)
9871            .use_dual_stack(false)
9872            .accelerate(false)
9873            .use_s3_express_control_endpoint(true)
9874            .disable_s3_express_session_auth(true)
9875            .endpoint("https://10.0.0.1".to_string())
9876            .build()
9877            .expect("invalid params");
9878        let resolver = crate::config::endpoint::DefaultResolver::new();
9879        let endpoint = resolver.resolve_endpoint(&params);
9880        let endpoint = endpoint.expect("Expected valid endpoint: https://10.0.0.1/myaccesspoint--usw2-az1--xa-s3");
9881        assert_eq!(
9882            endpoint,
9883            ::aws_smithy_types::endpoint::Endpoint::builder()
9884                .url("https://10.0.0.1/myaccesspoint--usw2-az1--xa-s3")
9885                .property(
9886                    "authSchemes",
9887                    vec![{
9888                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9889                        out.insert("name".to_string(), "sigv4".to_string().into());
9890                        out.insert("signingName".to_string(), "s3express".to_string().into());
9891                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9892                        out.insert("disableDoubleEncoding".to_string(), true.into());
9893                        out
9894                    }
9895                    .into()]
9896                )
9897                .property("backend", "S3Express".to_string())
9898                .build()
9899        );
9900    }
9901
9902    /// Data plane host override
9903    #[test]
9904    fn test_332() {
9905        let params = crate::config::endpoint::Params::builder()
9906            .region("us-west-2".to_string())
9907            .bucket("mybucket--usw2-az1--x-s3".to_string())
9908            .use_fips(false)
9909            .use_dual_stack(false)
9910            .accelerate(false)
9911            .endpoint("https://custom.com".to_string())
9912            .build()
9913            .expect("invalid params");
9914        let resolver = crate::config::endpoint::DefaultResolver::new();
9915        let endpoint = resolver.resolve_endpoint(&params);
9916        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.custom.com");
9917        assert_eq!(
9918            endpoint,
9919            ::aws_smithy_types::endpoint::Endpoint::builder()
9920                .url("https://mybucket--usw2-az1--x-s3.custom.com")
9921                .property(
9922                    "authSchemes",
9923                    vec![{
9924                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9925                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
9926                        out.insert("signingName".to_string(), "s3express".to_string().into());
9927                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9928                        out.insert("disableDoubleEncoding".to_string(), true.into());
9929                        out
9930                    }
9931                    .into()]
9932                )
9933                .property("backend", "S3Express".to_string())
9934                .build()
9935        );
9936    }
9937
9938    /// Data plane host override with AP
9939    #[test]
9940    fn test_333() {
9941        let params = crate::config::endpoint::Params::builder()
9942            .region("us-west-2".to_string())
9943            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
9944            .use_fips(false)
9945            .use_dual_stack(false)
9946            .accelerate(false)
9947            .endpoint("https://custom.com".to_string())
9948            .build()
9949            .expect("invalid params");
9950        let resolver = crate::config::endpoint::DefaultResolver::new();
9951        let endpoint = resolver.resolve_endpoint(&params);
9952        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.custom.com");
9953        assert_eq!(
9954            endpoint,
9955            ::aws_smithy_types::endpoint::Endpoint::builder()
9956                .url("https://myaccesspoint--usw2-az1--xa-s3.custom.com")
9957                .property(
9958                    "authSchemes",
9959                    vec![{
9960                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
9961                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
9962                        out.insert("signingName".to_string(), "s3express".to_string().into());
9963                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
9964                        out.insert("disableDoubleEncoding".to_string(), true.into());
9965                        out
9966                    }
9967                    .into()]
9968                )
9969                .property("backend", "S3Express".to_string())
9970                .build()
9971        );
9972    }
9973
9974    /// bad format error
9975    #[test]
9976    fn test_334() {
9977        let params = crate::config::endpoint::Params::builder()
9978            .region("us-east-1".to_string())
9979            .bucket("mybucket--usaz1--x-s3".to_string())
9980            .use_fips(false)
9981            .use_dual_stack(false)
9982            .accelerate(false)
9983            .use_s3_express_control_endpoint(false)
9984            .build()
9985            .expect("invalid params");
9986        let resolver = crate::config::endpoint::DefaultResolver::new();
9987        let endpoint = resolver.resolve_endpoint(&params);
9988        let error = endpoint.expect_err("expected error: Unrecognized S3Express bucket name format. [bad format error]");
9989        assert_eq!(format!("{}", error), "Unrecognized S3Express bucket name format.")
9990    }
9991
9992    /// bad AP format error
9993    #[test]
9994    fn test_335() {
9995        let params = crate::config::endpoint::Params::builder()
9996            .region("us-east-1".to_string())
9997            .bucket("myaccesspoint--usaz1--xa-s3".to_string())
9998            .use_fips(false)
9999            .use_dual_stack(false)
10000            .accelerate(false)
10001            .use_s3_express_control_endpoint(false)
10002            .build()
10003            .expect("invalid params");
10004        let resolver = crate::config::endpoint::DefaultResolver::new();
10005        let endpoint = resolver.resolve_endpoint(&params);
10006        let error = endpoint.expect_err("expected error: Unrecognized S3Express bucket name format. [bad AP format error]");
10007        assert_eq!(format!("{}", error), "Unrecognized S3Express bucket name format.")
10008    }
10009
10010    /// bad format error no session auth
10011    #[test]
10012    fn test_336() {
10013        let params = crate::config::endpoint::Params::builder()
10014            .region("us-east-1".to_string())
10015            .bucket("mybucket--usaz1--x-s3".to_string())
10016            .use_fips(false)
10017            .use_dual_stack(false)
10018            .accelerate(false)
10019            .use_s3_express_control_endpoint(false)
10020            .disable_s3_express_session_auth(true)
10021            .build()
10022            .expect("invalid params");
10023        let resolver = crate::config::endpoint::DefaultResolver::new();
10024        let endpoint = resolver.resolve_endpoint(&params);
10025        let error = endpoint.expect_err("expected error: Unrecognized S3Express bucket name format. [bad format error no session auth]");
10026        assert_eq!(format!("{}", error), "Unrecognized S3Express bucket name format.")
10027    }
10028
10029    /// bad AP format error no session auth
10030    #[test]
10031    fn test_337() {
10032        let params = crate::config::endpoint::Params::builder()
10033            .region("us-east-1".to_string())
10034            .bucket("myaccesspoint--usaz1--xa-s3".to_string())
10035            .use_fips(false)
10036            .use_dual_stack(false)
10037            .accelerate(false)
10038            .use_s3_express_control_endpoint(false)
10039            .disable_s3_express_session_auth(true)
10040            .build()
10041            .expect("invalid params");
10042        let resolver = crate::config::endpoint::DefaultResolver::new();
10043        let endpoint = resolver.resolve_endpoint(&params);
10044        let error = endpoint.expect_err("expected error: Unrecognized S3Express bucket name format. [bad AP format error no session auth]");
10045        assert_eq!(format!("{}", error), "Unrecognized S3Express bucket name format.")
10046    }
10047
10048    /// accelerate error
10049    #[test]
10050    fn test_338() {
10051        let params = crate::config::endpoint::Params::builder()
10052            .region("us-east-1".to_string())
10053            .bucket("mybucket--test-ab1--x-s3".to_string())
10054            .use_fips(false)
10055            .use_dual_stack(false)
10056            .accelerate(true)
10057            .use_s3_express_control_endpoint(false)
10058            .build()
10059            .expect("invalid params");
10060        let resolver = crate::config::endpoint::DefaultResolver::new();
10061        let endpoint = resolver.resolve_endpoint(&params);
10062        let error = endpoint.expect_err("expected error: S3Express does not support S3 Accelerate. [accelerate error]");
10063        assert_eq!(format!("{}", error), "S3Express does not support S3 Accelerate.")
10064    }
10065
10066    /// accelerate error with AP
10067    #[test]
10068    fn test_339() {
10069        let params = crate::config::endpoint::Params::builder()
10070            .region("us-east-1".to_string())
10071            .bucket("myaccesspoint--test-ab1--xa-s3".to_string())
10072            .use_fips(false)
10073            .use_dual_stack(false)
10074            .accelerate(true)
10075            .use_s3_express_control_endpoint(false)
10076            .build()
10077            .expect("invalid params");
10078        let resolver = crate::config::endpoint::DefaultResolver::new();
10079        let endpoint = resolver.resolve_endpoint(&params);
10080        let error = endpoint.expect_err("expected error: S3Express does not support S3 Accelerate. [accelerate error with AP]");
10081        assert_eq!(format!("{}", error), "S3Express does not support S3 Accelerate.")
10082    }
10083
10084    /// Data plane bucket format error
10085    #[test]
10086    fn test_340() {
10087        let params = crate::config::endpoint::Params::builder()
10088            .region("us-east-1".to_string())
10089            .bucket("my.bucket--test-ab1--x-s3".to_string())
10090            .use_fips(false)
10091            .use_dual_stack(false)
10092            .accelerate(false)
10093            .use_s3_express_control_endpoint(false)
10094            .build()
10095            .expect("invalid params");
10096        let resolver = crate::config::endpoint::DefaultResolver::new();
10097        let endpoint = resolver.resolve_endpoint(&params);
10098        let error =
10099            endpoint.expect_err("expected error: S3Express bucket name is not a valid virtual hostable name. [Data plane bucket format error]");
10100        assert_eq!(format!("{}", error), "S3Express bucket name is not a valid virtual hostable name.")
10101    }
10102
10103    /// Data plane AP format error
10104    #[test]
10105    fn test_341() {
10106        let params = crate::config::endpoint::Params::builder()
10107            .region("us-east-1".to_string())
10108            .bucket("my.myaccesspoint--test-ab1--xa-s3".to_string())
10109            .use_fips(false)
10110            .use_dual_stack(false)
10111            .accelerate(false)
10112            .use_s3_express_control_endpoint(false)
10113            .build()
10114            .expect("invalid params");
10115        let resolver = crate::config::endpoint::DefaultResolver::new();
10116        let endpoint = resolver.resolve_endpoint(&params);
10117        let error = endpoint.expect_err("expected error: S3Express bucket name is not a valid virtual hostable name. [Data plane AP format error]");
10118        assert_eq!(format!("{}", error), "S3Express bucket name is not a valid virtual hostable name.")
10119    }
10120
10121    /// host override data plane bucket error session auth
10122    #[test]
10123    fn test_342() {
10124        let params = crate::config::endpoint::Params::builder()
10125            .region("us-west-2".to_string())
10126            .bucket("my.bucket--usw2-az1--x-s3".to_string())
10127            .use_fips(false)
10128            .use_dual_stack(false)
10129            .accelerate(false)
10130            .endpoint("https://custom.com".to_string())
10131            .build()
10132            .expect("invalid params");
10133        let resolver = crate::config::endpoint::DefaultResolver::new();
10134        let endpoint = resolver.resolve_endpoint(&params);
10135        let error = endpoint.expect_err(
10136            "expected error: S3Express bucket name is not a valid virtual hostable name. [host override data plane bucket error session auth]",
10137        );
10138        assert_eq!(format!("{}", error), "S3Express bucket name is not a valid virtual hostable name.")
10139    }
10140
10141    /// host override data plane AP error session auth
10142    #[test]
10143    fn test_343() {
10144        let params = crate::config::endpoint::Params::builder()
10145            .region("us-west-2".to_string())
10146            .bucket("my.myaccesspoint--usw2-az1--xa-s3".to_string())
10147            .use_fips(false)
10148            .use_dual_stack(false)
10149            .accelerate(false)
10150            .endpoint("https://custom.com".to_string())
10151            .build()
10152            .expect("invalid params");
10153        let resolver = crate::config::endpoint::DefaultResolver::new();
10154        let endpoint = resolver.resolve_endpoint(&params);
10155        let error = endpoint.expect_err(
10156            "expected error: S3Express bucket name is not a valid virtual hostable name. [host override data plane AP error session auth]",
10157        );
10158        assert_eq!(format!("{}", error), "S3Express bucket name is not a valid virtual hostable name.")
10159    }
10160
10161    /// host override data plane bucket error
10162    #[test]
10163    fn test_344() {
10164        let params = crate::config::endpoint::Params::builder()
10165            .region("us-west-2".to_string())
10166            .bucket("my.bucket--usw2-az1--x-s3".to_string())
10167            .use_fips(false)
10168            .use_dual_stack(false)
10169            .accelerate(false)
10170            .endpoint("https://custom.com".to_string())
10171            .disable_s3_express_session_auth(true)
10172            .build()
10173            .expect("invalid params");
10174        let resolver = crate::config::endpoint::DefaultResolver::new();
10175        let endpoint = resolver.resolve_endpoint(&params);
10176        let error = endpoint
10177            .expect_err("expected error: S3Express bucket name is not a valid virtual hostable name. [host override data plane bucket error]");
10178        assert_eq!(format!("{}", error), "S3Express bucket name is not a valid virtual hostable name.")
10179    }
10180
10181    /// host override data plane AP error
10182    #[test]
10183    fn test_345() {
10184        let params = crate::config::endpoint::Params::builder()
10185            .region("us-west-2".to_string())
10186            .bucket("my.myaccesspoint--usw2-az1--xa-s3".to_string())
10187            .use_fips(false)
10188            .use_dual_stack(false)
10189            .accelerate(false)
10190            .endpoint("https://custom.com".to_string())
10191            .disable_s3_express_session_auth(true)
10192            .build()
10193            .expect("invalid params");
10194        let resolver = crate::config::endpoint::DefaultResolver::new();
10195        let endpoint = resolver.resolve_endpoint(&params);
10196        let error =
10197            endpoint.expect_err("expected error: S3Express bucket name is not a valid virtual hostable name. [host override data plane AP error]");
10198        assert_eq!(format!("{}", error), "S3Express bucket name is not a valid virtual hostable name.")
10199    }
10200
10201    /// Control plane without bucket and dualstack
10202    #[test]
10203    fn test_346() {
10204        let params = crate::config::endpoint::Params::builder()
10205            .region("us-east-1".to_string())
10206            .use_fips(false)
10207            .use_dual_stack(true)
10208            .accelerate(false)
10209            .use_s3_express_control_endpoint(true)
10210            .disable_s3_express_session_auth(false)
10211            .build()
10212            .expect("invalid params");
10213        let resolver = crate::config::endpoint::DefaultResolver::new();
10214        let endpoint = resolver.resolve_endpoint(&params);
10215        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control.dualstack.us-east-1.amazonaws.com");
10216        assert_eq!(
10217            endpoint,
10218            ::aws_smithy_types::endpoint::Endpoint::builder()
10219                .url("https://s3express-control.dualstack.us-east-1.amazonaws.com")
10220                .property(
10221                    "authSchemes",
10222                    vec![{
10223                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10224                        out.insert("name".to_string(), "sigv4".to_string().into());
10225                        out.insert("signingName".to_string(), "s3express".to_string().into());
10226                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
10227                        out.insert("disableDoubleEncoding".to_string(), true.into());
10228                        out
10229                    }
10230                    .into()]
10231                )
10232                .property("backend", "S3Express".to_string())
10233                .build()
10234        );
10235    }
10236
10237    /// Control plane without bucket, fips and dualstack
10238    #[test]
10239    fn test_347() {
10240        let params = crate::config::endpoint::Params::builder()
10241            .region("us-east-1".to_string())
10242            .use_fips(true)
10243            .use_dual_stack(true)
10244            .accelerate(false)
10245            .use_s3_express_control_endpoint(true)
10246            .disable_s3_express_session_auth(false)
10247            .build()
10248            .expect("invalid params");
10249        let resolver = crate::config::endpoint::DefaultResolver::new();
10250        let endpoint = resolver.resolve_endpoint(&params);
10251        let endpoint = endpoint.expect("Expected valid endpoint: https://s3express-control-fips.dualstack.us-east-1.amazonaws.com");
10252        assert_eq!(
10253            endpoint,
10254            ::aws_smithy_types::endpoint::Endpoint::builder()
10255                .url("https://s3express-control-fips.dualstack.us-east-1.amazonaws.com")
10256                .property(
10257                    "authSchemes",
10258                    vec![{
10259                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10260                        out.insert("name".to_string(), "sigv4".to_string().into());
10261                        out.insert("signingName".to_string(), "s3express".to_string().into());
10262                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
10263                        out.insert("disableDoubleEncoding".to_string(), true.into());
10264                        out
10265                    }
10266                    .into()]
10267                )
10268                .property("backend", "S3Express".to_string())
10269                .build()
10270        );
10271    }
10272
10273    /// Data Plane with short AZ and dualstack
10274    #[test]
10275    fn test_348() {
10276        let params = crate::config::endpoint::Params::builder()
10277            .region("us-west-2".to_string())
10278            .bucket("mybucket--usw2-az1--x-s3".to_string())
10279            .use_fips(false)
10280            .use_dual_stack(true)
10281            .accelerate(false)
10282            .use_s3_express_control_endpoint(false)
10283            .build()
10284            .expect("invalid params");
10285        let resolver = crate::config::endpoint::DefaultResolver::new();
10286        let endpoint = resolver.resolve_endpoint(&params);
10287        let endpoint =
10288            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com");
10289        assert_eq!(
10290            endpoint,
10291            ::aws_smithy_types::endpoint::Endpoint::builder()
10292                .url("https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com")
10293                .property(
10294                    "authSchemes",
10295                    vec![{
10296                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10297                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10298                        out.insert("signingName".to_string(), "s3express".to_string().into());
10299                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10300                        out.insert("disableDoubleEncoding".to_string(), true.into());
10301                        out
10302                    }
10303                    .into()]
10304                )
10305                .property("backend", "S3Express".to_string())
10306                .build()
10307        );
10308    }
10309
10310    /// Data Plane with short AZ and FIPS with dualstack
10311    #[test]
10312    fn test_349() {
10313        let params = crate::config::endpoint::Params::builder()
10314            .region("us-west-2".to_string())
10315            .bucket("mybucket--usw2-az1--x-s3".to_string())
10316            .use_fips(true)
10317            .use_dual_stack(true)
10318            .accelerate(false)
10319            .use_s3_express_control_endpoint(false)
10320            .build()
10321            .expect("invalid params");
10322        let resolver = crate::config::endpoint::DefaultResolver::new();
10323        let endpoint = resolver.resolve_endpoint(&params);
10324        let endpoint =
10325            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com");
10326        assert_eq!(
10327            endpoint,
10328            ::aws_smithy_types::endpoint::Endpoint::builder()
10329                .url("https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com")
10330                .property(
10331                    "authSchemes",
10332                    vec![{
10333                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10334                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10335                        out.insert("signingName".to_string(), "s3express".to_string().into());
10336                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10337                        out.insert("disableDoubleEncoding".to_string(), true.into());
10338                        out
10339                    }
10340                    .into()]
10341                )
10342                .property("backend", "S3Express".to_string())
10343                .build()
10344        );
10345    }
10346
10347    /// Data Plane sigv4 auth with short AZ and dualstack
10348    #[test]
10349    fn test_350() {
10350        let params = crate::config::endpoint::Params::builder()
10351            .region("us-west-2".to_string())
10352            .bucket("mybucket--usw2-az1--x-s3".to_string())
10353            .use_fips(false)
10354            .use_dual_stack(true)
10355            .accelerate(false)
10356            .disable_s3_express_session_auth(true)
10357            .build()
10358            .expect("invalid params");
10359        let resolver = crate::config::endpoint::DefaultResolver::new();
10360        let endpoint = resolver.resolve_endpoint(&params);
10361        let endpoint =
10362            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com");
10363        assert_eq!(
10364            endpoint,
10365            ::aws_smithy_types::endpoint::Endpoint::builder()
10366                .url("https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com")
10367                .property(
10368                    "authSchemes",
10369                    vec![{
10370                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10371                        out.insert("name".to_string(), "sigv4".to_string().into());
10372                        out.insert("signingName".to_string(), "s3express".to_string().into());
10373                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10374                        out.insert("disableDoubleEncoding".to_string(), true.into());
10375                        out
10376                    }
10377                    .into()]
10378                )
10379                .property("backend", "S3Express".to_string())
10380                .build()
10381        );
10382    }
10383
10384    /// Data Plane sigv4 auth with short AZ and FIPS with dualstack
10385    #[test]
10386    fn test_351() {
10387        let params = crate::config::endpoint::Params::builder()
10388            .region("us-west-2".to_string())
10389            .bucket("mybucket--usw2-az1--x-s3".to_string())
10390            .use_fips(true)
10391            .use_dual_stack(true)
10392            .accelerate(false)
10393            .disable_s3_express_session_auth(true)
10394            .build()
10395            .expect("invalid params");
10396        let resolver = crate::config::endpoint::DefaultResolver::new();
10397        let endpoint = resolver.resolve_endpoint(&params);
10398        let endpoint =
10399            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com");
10400        assert_eq!(
10401            endpoint,
10402            ::aws_smithy_types::endpoint::Endpoint::builder()
10403                .url("https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com")
10404                .property(
10405                    "authSchemes",
10406                    vec![{
10407                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10408                        out.insert("name".to_string(), "sigv4".to_string().into());
10409                        out.insert("signingName".to_string(), "s3express".to_string().into());
10410                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10411                        out.insert("disableDoubleEncoding".to_string(), true.into());
10412                        out
10413                    }
10414                    .into()]
10415                )
10416                .property("backend", "S3Express".to_string())
10417                .build()
10418        );
10419    }
10420
10421    /// Data Plane with zone and dualstack
10422    #[test]
10423    fn test_352() {
10424        let params = crate::config::endpoint::Params::builder()
10425            .region("us-west-2".to_string())
10426            .bucket("mybucket--usw2-az12--x-s3".to_string())
10427            .use_fips(false)
10428            .use_dual_stack(true)
10429            .accelerate(false)
10430            .use_s3_express_control_endpoint(false)
10431            .build()
10432            .expect("invalid params");
10433        let resolver = crate::config::endpoint::DefaultResolver::new();
10434        let endpoint = resolver.resolve_endpoint(&params);
10435        let endpoint =
10436            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az12--x-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com");
10437        assert_eq!(
10438            endpoint,
10439            ::aws_smithy_types::endpoint::Endpoint::builder()
10440                .url("https://mybucket--usw2-az12--x-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com")
10441                .property(
10442                    "authSchemes",
10443                    vec![{
10444                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10445                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10446                        out.insert("signingName".to_string(), "s3express".to_string().into());
10447                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10448                        out.insert("disableDoubleEncoding".to_string(), true.into());
10449                        out
10450                    }
10451                    .into()]
10452                )
10453                .property("backend", "S3Express".to_string())
10454                .build()
10455        );
10456    }
10457
10458    /// Data Plane with zone and FIPS with dualstack
10459    #[test]
10460    fn test_353() {
10461        let params = crate::config::endpoint::Params::builder()
10462            .region("us-west-2".to_string())
10463            .bucket("mybucket--usw2-az12--x-s3".to_string())
10464            .use_fips(true)
10465            .use_dual_stack(true)
10466            .accelerate(false)
10467            .use_s3_express_control_endpoint(false)
10468            .build()
10469            .expect("invalid params");
10470        let resolver = crate::config::endpoint::DefaultResolver::new();
10471        let endpoint = resolver.resolve_endpoint(&params);
10472        let endpoint =
10473            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az12--x-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com");
10474        assert_eq!(
10475            endpoint,
10476            ::aws_smithy_types::endpoint::Endpoint::builder()
10477                .url("https://mybucket--usw2-az12--x-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com")
10478                .property(
10479                    "authSchemes",
10480                    vec![{
10481                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10482                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10483                        out.insert("signingName".to_string(), "s3express".to_string().into());
10484                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10485                        out.insert("disableDoubleEncoding".to_string(), true.into());
10486                        out
10487                    }
10488                    .into()]
10489                )
10490                .property("backend", "S3Express".to_string())
10491                .build()
10492        );
10493    }
10494
10495    /// Data Plane sigv4 auth with zone and dualstack
10496    #[test]
10497    fn test_354() {
10498        let params = crate::config::endpoint::Params::builder()
10499            .region("us-west-2".to_string())
10500            .bucket("mybucket--usw2-az12--x-s3".to_string())
10501            .use_fips(false)
10502            .use_dual_stack(true)
10503            .accelerate(false)
10504            .disable_s3_express_session_auth(true)
10505            .build()
10506            .expect("invalid params");
10507        let resolver = crate::config::endpoint::DefaultResolver::new();
10508        let endpoint = resolver.resolve_endpoint(&params);
10509        let endpoint =
10510            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az12--x-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com");
10511        assert_eq!(
10512            endpoint,
10513            ::aws_smithy_types::endpoint::Endpoint::builder()
10514                .url("https://mybucket--usw2-az12--x-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com")
10515                .property(
10516                    "authSchemes",
10517                    vec![{
10518                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10519                        out.insert("name".to_string(), "sigv4".to_string().into());
10520                        out.insert("signingName".to_string(), "s3express".to_string().into());
10521                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10522                        out.insert("disableDoubleEncoding".to_string(), true.into());
10523                        out
10524                    }
10525                    .into()]
10526                )
10527                .property("backend", "S3Express".to_string())
10528                .build()
10529        );
10530    }
10531
10532    /// Data Plane sigv4 auth with 9-char zone and FIPS with dualstack
10533    #[test]
10534    fn test_355() {
10535        let params = crate::config::endpoint::Params::builder()
10536            .region("us-west-2".to_string())
10537            .bucket("mybucket--usw2-az12--x-s3".to_string())
10538            .use_fips(true)
10539            .use_dual_stack(true)
10540            .accelerate(false)
10541            .disable_s3_express_session_auth(true)
10542            .build()
10543            .expect("invalid params");
10544        let resolver = crate::config::endpoint::DefaultResolver::new();
10545        let endpoint = resolver.resolve_endpoint(&params);
10546        let endpoint =
10547            endpoint.expect("Expected valid endpoint: https://mybucket--usw2-az12--x-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com");
10548        assert_eq!(
10549            endpoint,
10550            ::aws_smithy_types::endpoint::Endpoint::builder()
10551                .url("https://mybucket--usw2-az12--x-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com")
10552                .property(
10553                    "authSchemes",
10554                    vec![{
10555                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10556                        out.insert("name".to_string(), "sigv4".to_string().into());
10557                        out.insert("signingName".to_string(), "s3express".to_string().into());
10558                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10559                        out.insert("disableDoubleEncoding".to_string(), true.into());
10560                        out
10561                    }
10562                    .into()]
10563                )
10564                .property("backend", "S3Express".to_string())
10565                .build()
10566        );
10567    }
10568
10569    /// Data Plane with 13-char zone and dualstack
10570    #[test]
10571    fn test_356() {
10572        let params = crate::config::endpoint::Params::builder()
10573            .region("us-west-2".to_string())
10574            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
10575            .use_fips(false)
10576            .use_dual_stack(true)
10577            .accelerate(false)
10578            .use_s3_express_control_endpoint(false)
10579            .build()
10580            .expect("invalid params");
10581        let resolver = crate::config::endpoint::DefaultResolver::new();
10582        let endpoint = resolver.resolve_endpoint(&params);
10583        let endpoint = endpoint
10584            .expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com");
10585        assert_eq!(
10586            endpoint,
10587            ::aws_smithy_types::endpoint::Endpoint::builder()
10588                .url("https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
10589                .property(
10590                    "authSchemes",
10591                    vec![{
10592                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10593                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10594                        out.insert("signingName".to_string(), "s3express".to_string().into());
10595                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10596                        out.insert("disableDoubleEncoding".to_string(), true.into());
10597                        out
10598                    }
10599                    .into()]
10600                )
10601                .property("backend", "S3Express".to_string())
10602                .build()
10603        );
10604    }
10605
10606    /// Data Plane with 13-char zone and FIPS with dualstack
10607    #[test]
10608    fn test_357() {
10609        let params = crate::config::endpoint::Params::builder()
10610            .region("us-west-2".to_string())
10611            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
10612            .use_fips(true)
10613            .use_dual_stack(true)
10614            .accelerate(false)
10615            .use_s3_express_control_endpoint(false)
10616            .build()
10617            .expect("invalid params");
10618        let resolver = crate::config::endpoint::DefaultResolver::new();
10619        let endpoint = resolver.resolve_endpoint(&params);
10620        let endpoint = endpoint
10621            .expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com");
10622        assert_eq!(
10623            endpoint,
10624            ::aws_smithy_types::endpoint::Endpoint::builder()
10625                .url("https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
10626                .property(
10627                    "authSchemes",
10628                    vec![{
10629                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10630                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10631                        out.insert("signingName".to_string(), "s3express".to_string().into());
10632                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10633                        out.insert("disableDoubleEncoding".to_string(), true.into());
10634                        out
10635                    }
10636                    .into()]
10637                )
10638                .property("backend", "S3Express".to_string())
10639                .build()
10640        );
10641    }
10642
10643    /// Data Plane sigv4 auth with 13-char zone and dualstack
10644    #[test]
10645    fn test_358() {
10646        let params = crate::config::endpoint::Params::builder()
10647            .region("us-west-2".to_string())
10648            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
10649            .use_fips(false)
10650            .use_dual_stack(true)
10651            .accelerate(false)
10652            .disable_s3_express_session_auth(true)
10653            .build()
10654            .expect("invalid params");
10655        let resolver = crate::config::endpoint::DefaultResolver::new();
10656        let endpoint = resolver.resolve_endpoint(&params);
10657        let endpoint = endpoint
10658            .expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com");
10659        assert_eq!(
10660            endpoint,
10661            ::aws_smithy_types::endpoint::Endpoint::builder()
10662                .url("https://mybucket--test-zone-ab1--x-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
10663                .property(
10664                    "authSchemes",
10665                    vec![{
10666                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10667                        out.insert("name".to_string(), "sigv4".to_string().into());
10668                        out.insert("signingName".to_string(), "s3express".to_string().into());
10669                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10670                        out.insert("disableDoubleEncoding".to_string(), true.into());
10671                        out
10672                    }
10673                    .into()]
10674                )
10675                .property("backend", "S3Express".to_string())
10676                .build()
10677        );
10678    }
10679
10680    /// Data Plane sigv4 auth with 13-char zone and FIPS with dualstack
10681    #[test]
10682    fn test_359() {
10683        let params = crate::config::endpoint::Params::builder()
10684            .region("us-west-2".to_string())
10685            .bucket("mybucket--test-zone-ab1--x-s3".to_string())
10686            .use_fips(true)
10687            .use_dual_stack(true)
10688            .accelerate(false)
10689            .disable_s3_express_session_auth(true)
10690            .build()
10691            .expect("invalid params");
10692        let resolver = crate::config::endpoint::DefaultResolver::new();
10693        let endpoint = resolver.resolve_endpoint(&params);
10694        let endpoint = endpoint
10695            .expect("Expected valid endpoint: https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com");
10696        assert_eq!(
10697            endpoint,
10698            ::aws_smithy_types::endpoint::Endpoint::builder()
10699                .url("https://mybucket--test-zone-ab1--x-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
10700                .property(
10701                    "authSchemes",
10702                    vec![{
10703                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10704                        out.insert("name".to_string(), "sigv4".to_string().into());
10705                        out.insert("signingName".to_string(), "s3express".to_string().into());
10706                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10707                        out.insert("disableDoubleEncoding".to_string(), true.into());
10708                        out
10709                    }
10710                    .into()]
10711                )
10712                .property("backend", "S3Express".to_string())
10713                .build()
10714        );
10715    }
10716
10717    /// Data Plane with 14-char zone and dualstack
10718    #[test]
10719    fn test_360() {
10720        let params = crate::config::endpoint::Params::builder()
10721            .region("us-west-2".to_string())
10722            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
10723            .use_fips(false)
10724            .use_dual_stack(true)
10725            .accelerate(false)
10726            .use_s3_express_control_endpoint(false)
10727            .build()
10728            .expect("invalid params");
10729        let resolver = crate::config::endpoint::DefaultResolver::new();
10730        let endpoint = resolver.resolve_endpoint(&params);
10731        let endpoint = endpoint
10732            .expect("Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com");
10733        assert_eq!(
10734            endpoint,
10735            ::aws_smithy_types::endpoint::Endpoint::builder()
10736                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10737                .property(
10738                    "authSchemes",
10739                    vec![{
10740                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10741                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10742                        out.insert("signingName".to_string(), "s3express".to_string().into());
10743                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10744                        out.insert("disableDoubleEncoding".to_string(), true.into());
10745                        out
10746                    }
10747                    .into()]
10748                )
10749                .property("backend", "S3Express".to_string())
10750                .build()
10751        );
10752    }
10753
10754    /// Data Plane with 14-char zone and FIPS with dualstack
10755    #[test]
10756    fn test_361() {
10757        let params = crate::config::endpoint::Params::builder()
10758            .region("us-west-2".to_string())
10759            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
10760            .use_fips(true)
10761            .use_dual_stack(true)
10762            .accelerate(false)
10763            .use_s3_express_control_endpoint(false)
10764            .build()
10765            .expect("invalid params");
10766        let resolver = crate::config::endpoint::DefaultResolver::new();
10767        let endpoint = resolver.resolve_endpoint(&params);
10768        let endpoint = endpoint.expect(
10769            "Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com",
10770        );
10771        assert_eq!(
10772            endpoint,
10773            ::aws_smithy_types::endpoint::Endpoint::builder()
10774                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10775                .property(
10776                    "authSchemes",
10777                    vec![{
10778                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10779                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10780                        out.insert("signingName".to_string(), "s3express".to_string().into());
10781                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10782                        out.insert("disableDoubleEncoding".to_string(), true.into());
10783                        out
10784                    }
10785                    .into()]
10786                )
10787                .property("backend", "S3Express".to_string())
10788                .build()
10789        );
10790    }
10791
10792    /// Data Plane sigv4 auth with 14-char zone and dualstack
10793    #[test]
10794    fn test_362() {
10795        let params = crate::config::endpoint::Params::builder()
10796            .region("us-west-2".to_string())
10797            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
10798            .use_fips(false)
10799            .use_dual_stack(true)
10800            .accelerate(false)
10801            .disable_s3_express_session_auth(true)
10802            .build()
10803            .expect("invalid params");
10804        let resolver = crate::config::endpoint::DefaultResolver::new();
10805        let endpoint = resolver.resolve_endpoint(&params);
10806        let endpoint = endpoint
10807            .expect("Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com");
10808        assert_eq!(
10809            endpoint,
10810            ::aws_smithy_types::endpoint::Endpoint::builder()
10811                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10812                .property(
10813                    "authSchemes",
10814                    vec![{
10815                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10816                        out.insert("name".to_string(), "sigv4".to_string().into());
10817                        out.insert("signingName".to_string(), "s3express".to_string().into());
10818                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10819                        out.insert("disableDoubleEncoding".to_string(), true.into());
10820                        out
10821                    }
10822                    .into()]
10823                )
10824                .property("backend", "S3Express".to_string())
10825                .build()
10826        );
10827    }
10828
10829    /// Data Plane sigv4 auth with 14-char zone and FIPS with dualstack
10830    #[test]
10831    fn test_363() {
10832        let params = crate::config::endpoint::Params::builder()
10833            .region("us-west-2".to_string())
10834            .bucket("mybucket--test1-zone-ab1--x-s3".to_string())
10835            .use_fips(true)
10836            .use_dual_stack(true)
10837            .accelerate(false)
10838            .disable_s3_express_session_auth(true)
10839            .build()
10840            .expect("invalid params");
10841        let resolver = crate::config::endpoint::DefaultResolver::new();
10842        let endpoint = resolver.resolve_endpoint(&params);
10843        let endpoint = endpoint.expect(
10844            "Expected valid endpoint: https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com",
10845        );
10846        assert_eq!(
10847            endpoint,
10848            ::aws_smithy_types::endpoint::Endpoint::builder()
10849                .url("https://mybucket--test1-zone-ab1--x-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10850                .property(
10851                    "authSchemes",
10852                    vec![{
10853                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10854                        out.insert("name".to_string(), "sigv4".to_string().into());
10855                        out.insert("signingName".to_string(), "s3express".to_string().into());
10856                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10857                        out.insert("disableDoubleEncoding".to_string(), true.into());
10858                        out
10859                    }
10860                    .into()]
10861                )
10862                .property("backend", "S3Express".to_string())
10863                .build()
10864        );
10865    }
10866
10867    /// Data Plane with long zone (20 cha) and dualstack
10868    #[test]
10869    fn test_364() {
10870        let params = crate::config::endpoint::Params::builder()
10871            .region("us-west-2".to_string())
10872            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
10873            .use_fips(false)
10874            .use_dual_stack(true)
10875            .accelerate(false)
10876            .use_s3_express_control_endpoint(false)
10877            .build()
10878            .expect("invalid params");
10879        let resolver = crate::config::endpoint::DefaultResolver::new();
10880        let endpoint = resolver.resolve_endpoint(&params);
10881        let endpoint = endpoint.expect(
10882            "Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com",
10883        );
10884        assert_eq!(
10885            endpoint,
10886            ::aws_smithy_types::endpoint::Endpoint::builder()
10887                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10888                .property(
10889                    "authSchemes",
10890                    vec![{
10891                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10892                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10893                        out.insert("signingName".to_string(), "s3express".to_string().into());
10894                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10895                        out.insert("disableDoubleEncoding".to_string(), true.into());
10896                        out
10897                    }
10898                    .into()]
10899                )
10900                .property("backend", "S3Express".to_string())
10901                .build()
10902        );
10903    }
10904
10905    /// Data Plane with long zone (20 char) and FIPS with dualstack
10906    #[test]
10907    fn test_365() {
10908        let params = crate::config::endpoint::Params::builder()
10909            .region("us-west-2".to_string())
10910            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
10911            .use_fips(true)
10912            .use_dual_stack(true)
10913            .accelerate(false)
10914            .use_s3_express_control_endpoint(false)
10915            .build()
10916            .expect("invalid params");
10917        let resolver = crate::config::endpoint::DefaultResolver::new();
10918        let endpoint = resolver.resolve_endpoint(&params);
10919        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com");
10920        assert_eq!(
10921            endpoint,
10922            ::aws_smithy_types::endpoint::Endpoint::builder()
10923                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10924                .property(
10925                    "authSchemes",
10926                    vec![{
10927                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10928                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
10929                        out.insert("signingName".to_string(), "s3express".to_string().into());
10930                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10931                        out.insert("disableDoubleEncoding".to_string(), true.into());
10932                        out
10933                    }
10934                    .into()]
10935                )
10936                .property("backend", "S3Express".to_string())
10937                .build()
10938        );
10939    }
10940
10941    /// Data Plane sigv4 auth with long zone (20 char) and dualstack
10942    #[test]
10943    fn test_366() {
10944        let params = crate::config::endpoint::Params::builder()
10945            .region("us-west-2".to_string())
10946            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
10947            .use_fips(false)
10948            .use_dual_stack(true)
10949            .accelerate(false)
10950            .disable_s3_express_session_auth(true)
10951            .build()
10952            .expect("invalid params");
10953        let resolver = crate::config::endpoint::DefaultResolver::new();
10954        let endpoint = resolver.resolve_endpoint(&params);
10955        let endpoint = endpoint.expect(
10956            "Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com",
10957        );
10958        assert_eq!(
10959            endpoint,
10960            ::aws_smithy_types::endpoint::Endpoint::builder()
10961                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10962                .property(
10963                    "authSchemes",
10964                    vec![{
10965                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
10966                        out.insert("name".to_string(), "sigv4".to_string().into());
10967                        out.insert("signingName".to_string(), "s3express".to_string().into());
10968                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
10969                        out.insert("disableDoubleEncoding".to_string(), true.into());
10970                        out
10971                    }
10972                    .into()]
10973                )
10974                .property("backend", "S3Express".to_string())
10975                .build()
10976        );
10977    }
10978
10979    /// Data Plane sigv4 auth with long zone (20 char) and FIPS with dualstack
10980    #[test]
10981    fn test_367() {
10982        let params = crate::config::endpoint::Params::builder()
10983            .region("us-west-2".to_string())
10984            .bucket("mybucket--test1-long1-zone-ab1--x-s3".to_string())
10985            .use_fips(true)
10986            .use_dual_stack(true)
10987            .accelerate(false)
10988            .disable_s3_express_session_auth(true)
10989            .build()
10990            .expect("invalid params");
10991        let resolver = crate::config::endpoint::DefaultResolver::new();
10992        let endpoint = resolver.resolve_endpoint(&params);
10993        let endpoint = endpoint.expect("Expected valid endpoint: https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com");
10994        assert_eq!(
10995            endpoint,
10996            ::aws_smithy_types::endpoint::Endpoint::builder()
10997                .url("https://mybucket--test1-long1-zone-ab1--x-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
10998                .property(
10999                    "authSchemes",
11000                    vec![{
11001                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11002                        out.insert("name".to_string(), "sigv4".to_string().into());
11003                        out.insert("signingName".to_string(), "s3express".to_string().into());
11004                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11005                        out.insert("disableDoubleEncoding".to_string(), true.into());
11006                        out
11007                    }
11008                    .into()]
11009                )
11010                .property("backend", "S3Express".to_string())
11011                .build()
11012        );
11013    }
11014
11015    /// Control plane and FIPS with dualstack
11016    #[test]
11017    fn test_368() {
11018        let params = crate::config::endpoint::Params::builder()
11019            .region("us-east-1".to_string())
11020            .bucket("mybucket--test-ab1--x-s3".to_string())
11021            .use_fips(true)
11022            .use_dual_stack(true)
11023            .accelerate(false)
11024            .use_s3_express_control_endpoint(true)
11025            .build()
11026            .expect("invalid params");
11027        let resolver = crate::config::endpoint::DefaultResolver::new();
11028        let endpoint = resolver.resolve_endpoint(&params);
11029        let endpoint =
11030            endpoint.expect("Expected valid endpoint: https://s3express-control-fips.dualstack.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3");
11031        assert_eq!(
11032            endpoint,
11033            ::aws_smithy_types::endpoint::Endpoint::builder()
11034                .url("https://s3express-control-fips.dualstack.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3")
11035                .property(
11036                    "authSchemes",
11037                    vec![{
11038                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11039                        out.insert("name".to_string(), "sigv4".to_string().into());
11040                        out.insert("signingName".to_string(), "s3express".to_string().into());
11041                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
11042                        out.insert("disableDoubleEncoding".to_string(), true.into());
11043                        out
11044                    }
11045                    .into()]
11046                )
11047                .property("backend", "S3Express".to_string())
11048                .build()
11049        );
11050    }
11051
11052    /// Data plane with zone and dualstack and AP
11053    #[test]
11054    fn test_369() {
11055        let params = crate::config::endpoint::Params::builder()
11056            .region("us-west-2".to_string())
11057            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
11058            .use_fips(false)
11059            .use_dual_stack(true)
11060            .accelerate(false)
11061            .use_s3_express_control_endpoint(false)
11062            .build()
11063            .expect("invalid params");
11064        let resolver = crate::config::endpoint::DefaultResolver::new();
11065        let endpoint = resolver.resolve_endpoint(&params);
11066        let endpoint =
11067            endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com");
11068        assert_eq!(
11069            endpoint,
11070            ::aws_smithy_types::endpoint::Endpoint::builder()
11071                .url("https://myaccesspoint--usw2-az1--xa-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com")
11072                .property(
11073                    "authSchemes",
11074                    vec![{
11075                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11076                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11077                        out.insert("signingName".to_string(), "s3express".to_string().into());
11078                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11079                        out.insert("disableDoubleEncoding".to_string(), true.into());
11080                        out
11081                    }
11082                    .into()]
11083                )
11084                .property("backend", "S3Express".to_string())
11085                .build()
11086        );
11087    }
11088
11089    /// Data plane with zone and FIPS with dualstack and AP
11090    #[test]
11091    fn test_370() {
11092        let params = crate::config::endpoint::Params::builder()
11093            .region("us-west-2".to_string())
11094            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
11095            .use_fips(true)
11096            .use_dual_stack(true)
11097            .accelerate(false)
11098            .use_s3_express_control_endpoint(false)
11099            .build()
11100            .expect("invalid params");
11101        let resolver = crate::config::endpoint::DefaultResolver::new();
11102        let endpoint = resolver.resolve_endpoint(&params);
11103        let endpoint = endpoint
11104            .expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com");
11105        assert_eq!(
11106            endpoint,
11107            ::aws_smithy_types::endpoint::Endpoint::builder()
11108                .url("https://myaccesspoint--usw2-az1--xa-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com")
11109                .property(
11110                    "authSchemes",
11111                    vec![{
11112                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11113                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11114                        out.insert("signingName".to_string(), "s3express".to_string().into());
11115                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11116                        out.insert("disableDoubleEncoding".to_string(), true.into());
11117                        out
11118                    }
11119                    .into()]
11120                )
11121                .property("backend", "S3Express".to_string())
11122                .build()
11123        );
11124    }
11125
11126    /// Data Plane sigv4 auth with zone and dualstack and AP
11127    #[test]
11128    fn test_371() {
11129        let params = crate::config::endpoint::Params::builder()
11130            .region("us-west-2".to_string())
11131            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
11132            .use_fips(false)
11133            .use_dual_stack(true)
11134            .accelerate(false)
11135            .disable_s3_express_session_auth(true)
11136            .build()
11137            .expect("invalid params");
11138        let resolver = crate::config::endpoint::DefaultResolver::new();
11139        let endpoint = resolver.resolve_endpoint(&params);
11140        let endpoint =
11141            endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com");
11142        assert_eq!(
11143            endpoint,
11144            ::aws_smithy_types::endpoint::Endpoint::builder()
11145                .url("https://myaccesspoint--usw2-az1--xa-s3.s3express-usw2-az1.dualstack.us-west-2.amazonaws.com")
11146                .property(
11147                    "authSchemes",
11148                    vec![{
11149                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11150                        out.insert("name".to_string(), "sigv4".to_string().into());
11151                        out.insert("signingName".to_string(), "s3express".to_string().into());
11152                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11153                        out.insert("disableDoubleEncoding".to_string(), true.into());
11154                        out
11155                    }
11156                    .into()]
11157                )
11158                .property("backend", "S3Express".to_string())
11159                .build()
11160        );
11161    }
11162
11163    /// Data Plane AP sigv4 auth with zone and FIPS with dualstack
11164    #[test]
11165    fn test_372() {
11166        let params = crate::config::endpoint::Params::builder()
11167            .region("us-west-2".to_string())
11168            .bucket("myaccesspoint--usw2-az1--xa-s3".to_string())
11169            .use_fips(true)
11170            .use_dual_stack(true)
11171            .accelerate(false)
11172            .disable_s3_express_session_auth(true)
11173            .build()
11174            .expect("invalid params");
11175        let resolver = crate::config::endpoint::DefaultResolver::new();
11176        let endpoint = resolver.resolve_endpoint(&params);
11177        let endpoint = endpoint
11178            .expect("Expected valid endpoint: https://myaccesspoint--usw2-az1--xa-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com");
11179        assert_eq!(
11180            endpoint,
11181            ::aws_smithy_types::endpoint::Endpoint::builder()
11182                .url("https://myaccesspoint--usw2-az1--xa-s3.s3express-fips-usw2-az1.dualstack.us-west-2.amazonaws.com")
11183                .property(
11184                    "authSchemes",
11185                    vec![{
11186                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11187                        out.insert("name".to_string(), "sigv4".to_string().into());
11188                        out.insert("signingName".to_string(), "s3express".to_string().into());
11189                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11190                        out.insert("disableDoubleEncoding".to_string(), true.into());
11191                        out
11192                    }
11193                    .into()]
11194                )
11195                .property("backend", "S3Express".to_string())
11196                .build()
11197        );
11198    }
11199
11200    /// Data Plane with zone (9 char) and AP with dualstack
11201    #[test]
11202    fn test_373() {
11203        let params = crate::config::endpoint::Params::builder()
11204            .region("us-west-2".to_string())
11205            .bucket("myaccesspoint--usw2-az12--xa-s3".to_string())
11206            .use_fips(false)
11207            .use_dual_stack(true)
11208            .accelerate(false)
11209            .use_s3_express_control_endpoint(false)
11210            .build()
11211            .expect("invalid params");
11212        let resolver = crate::config::endpoint::DefaultResolver::new();
11213        let endpoint = resolver.resolve_endpoint(&params);
11214        let endpoint =
11215            endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az12--xa-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com");
11216        assert_eq!(
11217            endpoint,
11218            ::aws_smithy_types::endpoint::Endpoint::builder()
11219                .url("https://myaccesspoint--usw2-az12--xa-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com")
11220                .property(
11221                    "authSchemes",
11222                    vec![{
11223                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11224                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11225                        out.insert("signingName".to_string(), "s3express".to_string().into());
11226                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11227                        out.insert("disableDoubleEncoding".to_string(), true.into());
11228                        out
11229                    }
11230                    .into()]
11231                )
11232                .property("backend", "S3Express".to_string())
11233                .build()
11234        );
11235    }
11236
11237    /// Data Plane with zone (9 char) and FIPS with AP and dualstack
11238    #[test]
11239    fn test_374() {
11240        let params = crate::config::endpoint::Params::builder()
11241            .region("us-west-2".to_string())
11242            .bucket("myaccesspoint--usw2-az12--xa-s3".to_string())
11243            .use_fips(true)
11244            .use_dual_stack(true)
11245            .accelerate(false)
11246            .use_s3_express_control_endpoint(false)
11247            .build()
11248            .expect("invalid params");
11249        let resolver = crate::config::endpoint::DefaultResolver::new();
11250        let endpoint = resolver.resolve_endpoint(&params);
11251        let endpoint = endpoint
11252            .expect("Expected valid endpoint: https://myaccesspoint--usw2-az12--xa-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com");
11253        assert_eq!(
11254            endpoint,
11255            ::aws_smithy_types::endpoint::Endpoint::builder()
11256                .url("https://myaccesspoint--usw2-az12--xa-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com")
11257                .property(
11258                    "authSchemes",
11259                    vec![{
11260                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11261                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11262                        out.insert("signingName".to_string(), "s3express".to_string().into());
11263                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11264                        out.insert("disableDoubleEncoding".to_string(), true.into());
11265                        out
11266                    }
11267                    .into()]
11268                )
11269                .property("backend", "S3Express".to_string())
11270                .build()
11271        );
11272    }
11273
11274    /// Data Plane sigv4 auth with (9 char) zone and dualstack with AP
11275    #[test]
11276    fn test_375() {
11277        let params = crate::config::endpoint::Params::builder()
11278            .region("us-west-2".to_string())
11279            .bucket("myaccesspoint--usw2-az12--xa-s3".to_string())
11280            .use_fips(false)
11281            .use_dual_stack(true)
11282            .accelerate(false)
11283            .disable_s3_express_session_auth(true)
11284            .build()
11285            .expect("invalid params");
11286        let resolver = crate::config::endpoint::DefaultResolver::new();
11287        let endpoint = resolver.resolve_endpoint(&params);
11288        let endpoint =
11289            endpoint.expect("Expected valid endpoint: https://myaccesspoint--usw2-az12--xa-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com");
11290        assert_eq!(
11291            endpoint,
11292            ::aws_smithy_types::endpoint::Endpoint::builder()
11293                .url("https://myaccesspoint--usw2-az12--xa-s3.s3express-usw2-az12.dualstack.us-west-2.amazonaws.com")
11294                .property(
11295                    "authSchemes",
11296                    vec![{
11297                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11298                        out.insert("name".to_string(), "sigv4".to_string().into());
11299                        out.insert("signingName".to_string(), "s3express".to_string().into());
11300                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11301                        out.insert("disableDoubleEncoding".to_string(), true.into());
11302                        out
11303                    }
11304                    .into()]
11305                )
11306                .property("backend", "S3Express".to_string())
11307                .build()
11308        );
11309    }
11310
11311    /// Access Point sigv4 auth with (9 char) zone and FIPS with dualstack
11312    #[test]
11313    fn test_376() {
11314        let params = crate::config::endpoint::Params::builder()
11315            .region("us-west-2".to_string())
11316            .bucket("myaccesspoint--usw2-az12--xa-s3".to_string())
11317            .use_fips(true)
11318            .use_dual_stack(true)
11319            .accelerate(false)
11320            .disable_s3_express_session_auth(true)
11321            .build()
11322            .expect("invalid params");
11323        let resolver = crate::config::endpoint::DefaultResolver::new();
11324        let endpoint = resolver.resolve_endpoint(&params);
11325        let endpoint = endpoint
11326            .expect("Expected valid endpoint: https://myaccesspoint--usw2-az12--xa-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com");
11327        assert_eq!(
11328            endpoint,
11329            ::aws_smithy_types::endpoint::Endpoint::builder()
11330                .url("https://myaccesspoint--usw2-az12--xa-s3.s3express-fips-usw2-az12.dualstack.us-west-2.amazonaws.com")
11331                .property(
11332                    "authSchemes",
11333                    vec![{
11334                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11335                        out.insert("name".to_string(), "sigv4".to_string().into());
11336                        out.insert("signingName".to_string(), "s3express".to_string().into());
11337                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11338                        out.insert("disableDoubleEncoding".to_string(), true.into());
11339                        out
11340                    }
11341                    .into()]
11342                )
11343                .property("backend", "S3Express".to_string())
11344                .build()
11345        );
11346    }
11347
11348    /// Data Plane with zone (13 char) and AP with dualstack
11349    #[test]
11350    fn test_377() {
11351        let params = crate::config::endpoint::Params::builder()
11352            .region("us-west-2".to_string())
11353            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
11354            .use_fips(false)
11355            .use_dual_stack(true)
11356            .accelerate(false)
11357            .use_s3_express_control_endpoint(false)
11358            .build()
11359            .expect("invalid params");
11360        let resolver = crate::config::endpoint::DefaultResolver::new();
11361        let endpoint = resolver.resolve_endpoint(&params);
11362        let endpoint = endpoint
11363            .expect("Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com");
11364        assert_eq!(
11365            endpoint,
11366            ::aws_smithy_types::endpoint::Endpoint::builder()
11367                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
11368                .property(
11369                    "authSchemes",
11370                    vec![{
11371                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11372                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11373                        out.insert("signingName".to_string(), "s3express".to_string().into());
11374                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11375                        out.insert("disableDoubleEncoding".to_string(), true.into());
11376                        out
11377                    }
11378                    .into()]
11379                )
11380                .property("backend", "S3Express".to_string())
11381                .build()
11382        );
11383    }
11384
11385    /// Data Plane with zone (13 char) and AP with FIPS and dualstack
11386    #[test]
11387    fn test_378() {
11388        let params = crate::config::endpoint::Params::builder()
11389            .region("us-west-2".to_string())
11390            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
11391            .use_fips(true)
11392            .use_dual_stack(true)
11393            .accelerate(false)
11394            .use_s3_express_control_endpoint(false)
11395            .build()
11396            .expect("invalid params");
11397        let resolver = crate::config::endpoint::DefaultResolver::new();
11398        let endpoint = resolver.resolve_endpoint(&params);
11399        let endpoint = endpoint.expect(
11400            "Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com",
11401        );
11402        assert_eq!(
11403            endpoint,
11404            ::aws_smithy_types::endpoint::Endpoint::builder()
11405                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
11406                .property(
11407                    "authSchemes",
11408                    vec![{
11409                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11410                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11411                        out.insert("signingName".to_string(), "s3express".to_string().into());
11412                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11413                        out.insert("disableDoubleEncoding".to_string(), true.into());
11414                        out
11415                    }
11416                    .into()]
11417                )
11418                .property("backend", "S3Express".to_string())
11419                .build()
11420        );
11421    }
11422
11423    /// Data Plane sigv4 auth with (13 char) zone with AP and dualstack
11424    #[test]
11425    fn test_379() {
11426        let params = crate::config::endpoint::Params::builder()
11427            .region("us-west-2".to_string())
11428            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
11429            .use_fips(false)
11430            .use_dual_stack(true)
11431            .accelerate(false)
11432            .disable_s3_express_session_auth(true)
11433            .build()
11434            .expect("invalid params");
11435        let resolver = crate::config::endpoint::DefaultResolver::new();
11436        let endpoint = resolver.resolve_endpoint(&params);
11437        let endpoint = endpoint
11438            .expect("Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com");
11439        assert_eq!(
11440            endpoint,
11441            ::aws_smithy_types::endpoint::Endpoint::builder()
11442                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
11443                .property(
11444                    "authSchemes",
11445                    vec![{
11446                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11447                        out.insert("name".to_string(), "sigv4".to_string().into());
11448                        out.insert("signingName".to_string(), "s3express".to_string().into());
11449                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11450                        out.insert("disableDoubleEncoding".to_string(), true.into());
11451                        out
11452                    }
11453                    .into()]
11454                )
11455                .property("backend", "S3Express".to_string())
11456                .build()
11457        );
11458    }
11459
11460    /// Data Plane sigv4 auth with (13 char) zone with AP and FIPS and dualstack
11461    #[test]
11462    fn test_380() {
11463        let params = crate::config::endpoint::Params::builder()
11464            .region("us-west-2".to_string())
11465            .bucket("myaccesspoint--test-zone-ab1--xa-s3".to_string())
11466            .use_fips(true)
11467            .use_dual_stack(true)
11468            .accelerate(false)
11469            .disable_s3_express_session_auth(true)
11470            .build()
11471            .expect("invalid params");
11472        let resolver = crate::config::endpoint::DefaultResolver::new();
11473        let endpoint = resolver.resolve_endpoint(&params);
11474        let endpoint = endpoint.expect(
11475            "Expected valid endpoint: https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com",
11476        );
11477        assert_eq!(
11478            endpoint,
11479            ::aws_smithy_types::endpoint::Endpoint::builder()
11480                .url("https://myaccesspoint--test-zone-ab1--xa-s3.s3express-fips-test-zone-ab1.dualstack.us-west-2.amazonaws.com")
11481                .property(
11482                    "authSchemes",
11483                    vec![{
11484                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11485                        out.insert("name".to_string(), "sigv4".to_string().into());
11486                        out.insert("signingName".to_string(), "s3express".to_string().into());
11487                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11488                        out.insert("disableDoubleEncoding".to_string(), true.into());
11489                        out
11490                    }
11491                    .into()]
11492                )
11493                .property("backend", "S3Express".to_string())
11494                .build()
11495        );
11496    }
11497
11498    /// Data Plane with (14 char) zone and AP with dualstack
11499    #[test]
11500    fn test_381() {
11501        let params = crate::config::endpoint::Params::builder()
11502            .region("us-west-2".to_string())
11503            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
11504            .use_fips(false)
11505            .use_dual_stack(true)
11506            .accelerate(false)
11507            .use_s3_express_control_endpoint(false)
11508            .build()
11509            .expect("invalid params");
11510        let resolver = crate::config::endpoint::DefaultResolver::new();
11511        let endpoint = resolver.resolve_endpoint(&params);
11512        let endpoint = endpoint.expect(
11513            "Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com",
11514        );
11515        assert_eq!(
11516            endpoint,
11517            ::aws_smithy_types::endpoint::Endpoint::builder()
11518                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11519                .property(
11520                    "authSchemes",
11521                    vec![{
11522                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11523                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11524                        out.insert("signingName".to_string(), "s3express".to_string().into());
11525                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11526                        out.insert("disableDoubleEncoding".to_string(), true.into());
11527                        out
11528                    }
11529                    .into()]
11530                )
11531                .property("backend", "S3Express".to_string())
11532                .build()
11533        );
11534    }
11535
11536    /// Data Plane with (14 char) zone and AP with FIPS and dualstack
11537    #[test]
11538    fn test_382() {
11539        let params = crate::config::endpoint::Params::builder()
11540            .region("us-west-2".to_string())
11541            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
11542            .use_fips(true)
11543            .use_dual_stack(true)
11544            .accelerate(false)
11545            .use_s3_express_control_endpoint(false)
11546            .build()
11547            .expect("invalid params");
11548        let resolver = crate::config::endpoint::DefaultResolver::new();
11549        let endpoint = resolver.resolve_endpoint(&params);
11550        let endpoint = endpoint.expect(
11551            "Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com",
11552        );
11553        assert_eq!(
11554            endpoint,
11555            ::aws_smithy_types::endpoint::Endpoint::builder()
11556                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11557                .property(
11558                    "authSchemes",
11559                    vec![{
11560                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11561                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11562                        out.insert("signingName".to_string(), "s3express".to_string().into());
11563                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11564                        out.insert("disableDoubleEncoding".to_string(), true.into());
11565                        out
11566                    }
11567                    .into()]
11568                )
11569                .property("backend", "S3Express".to_string())
11570                .build()
11571        );
11572    }
11573
11574    /// Data Plane sigv4 auth with (14 char) zone and AP with dualstack
11575    #[test]
11576    fn test_383() {
11577        let params = crate::config::endpoint::Params::builder()
11578            .region("us-west-2".to_string())
11579            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
11580            .use_fips(false)
11581            .use_dual_stack(true)
11582            .accelerate(false)
11583            .disable_s3_express_session_auth(true)
11584            .build()
11585            .expect("invalid params");
11586        let resolver = crate::config::endpoint::DefaultResolver::new();
11587        let endpoint = resolver.resolve_endpoint(&params);
11588        let endpoint = endpoint.expect(
11589            "Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com",
11590        );
11591        assert_eq!(
11592            endpoint,
11593            ::aws_smithy_types::endpoint::Endpoint::builder()
11594                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11595                .property(
11596                    "authSchemes",
11597                    vec![{
11598                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11599                        out.insert("name".to_string(), "sigv4".to_string().into());
11600                        out.insert("signingName".to_string(), "s3express".to_string().into());
11601                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11602                        out.insert("disableDoubleEncoding".to_string(), true.into());
11603                        out
11604                    }
11605                    .into()]
11606                )
11607                .property("backend", "S3Express".to_string())
11608                .build()
11609        );
11610    }
11611
11612    /// Data Plane with (14 char) zone and AP with FIPS and dualstack
11613    #[test]
11614    fn test_384() {
11615        let params = crate::config::endpoint::Params::builder()
11616            .region("us-west-2".to_string())
11617            .bucket("myaccesspoint--test1-zone-ab1--xa-s3".to_string())
11618            .use_fips(true)
11619            .use_dual_stack(true)
11620            .accelerate(false)
11621            .disable_s3_express_session_auth(true)
11622            .build()
11623            .expect("invalid params");
11624        let resolver = crate::config::endpoint::DefaultResolver::new();
11625        let endpoint = resolver.resolve_endpoint(&params);
11626        let endpoint = endpoint.expect(
11627            "Expected valid endpoint: https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com",
11628        );
11629        assert_eq!(
11630            endpoint,
11631            ::aws_smithy_types::endpoint::Endpoint::builder()
11632                .url("https://myaccesspoint--test1-zone-ab1--xa-s3.s3express-fips-test1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11633                .property(
11634                    "authSchemes",
11635                    vec![{
11636                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11637                        out.insert("name".to_string(), "sigv4".to_string().into());
11638                        out.insert("signingName".to_string(), "s3express".to_string().into());
11639                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11640                        out.insert("disableDoubleEncoding".to_string(), true.into());
11641                        out
11642                    }
11643                    .into()]
11644                )
11645                .property("backend", "S3Express".to_string())
11646                .build()
11647        );
11648    }
11649
11650    /// Data Plane with (20 char) zone and AP with dualstack
11651    #[test]
11652    fn test_385() {
11653        let params = crate::config::endpoint::Params::builder()
11654            .region("us-west-2".to_string())
11655            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
11656            .use_fips(false)
11657            .use_dual_stack(true)
11658            .accelerate(false)
11659            .use_s3_express_control_endpoint(false)
11660            .build()
11661            .expect("invalid params");
11662        let resolver = crate::config::endpoint::DefaultResolver::new();
11663        let endpoint = resolver.resolve_endpoint(&params);
11664        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com");
11665        assert_eq!(
11666            endpoint,
11667            ::aws_smithy_types::endpoint::Endpoint::builder()
11668                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11669                .property(
11670                    "authSchemes",
11671                    vec![{
11672                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11673                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11674                        out.insert("signingName".to_string(), "s3express".to_string().into());
11675                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11676                        out.insert("disableDoubleEncoding".to_string(), true.into());
11677                        out
11678                    }
11679                    .into()]
11680                )
11681                .property("backend", "S3Express".to_string())
11682                .build()
11683        );
11684    }
11685
11686    /// Data Plane with (20 char) zone and AP with FIPS and dualstack
11687    #[test]
11688    fn test_386() {
11689        let params = crate::config::endpoint::Params::builder()
11690            .region("us-west-2".to_string())
11691            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
11692            .use_fips(true)
11693            .use_dual_stack(true)
11694            .accelerate(false)
11695            .use_s3_express_control_endpoint(false)
11696            .build()
11697            .expect("invalid params");
11698        let resolver = crate::config::endpoint::DefaultResolver::new();
11699        let endpoint = resolver.resolve_endpoint(&params);
11700        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com");
11701        assert_eq!(
11702            endpoint,
11703            ::aws_smithy_types::endpoint::Endpoint::builder()
11704                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11705                .property(
11706                    "authSchemes",
11707                    vec![{
11708                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11709                        out.insert("name".to_string(), "sigv4-s3express".to_string().into());
11710                        out.insert("signingName".to_string(), "s3express".to_string().into());
11711                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11712                        out.insert("disableDoubleEncoding".to_string(), true.into());
11713                        out
11714                    }
11715                    .into()]
11716                )
11717                .property("backend", "S3Express".to_string())
11718                .build()
11719        );
11720    }
11721
11722    /// Data plane AP with sigv4 and dualstack
11723    #[test]
11724    fn test_387() {
11725        let params = crate::config::endpoint::Params::builder()
11726            .region("us-west-2".to_string())
11727            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
11728            .use_fips(false)
11729            .use_dual_stack(true)
11730            .accelerate(false)
11731            .disable_s3_express_session_auth(true)
11732            .build()
11733            .expect("invalid params");
11734        let resolver = crate::config::endpoint::DefaultResolver::new();
11735        let endpoint = resolver.resolve_endpoint(&params);
11736        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com");
11737        assert_eq!(
11738            endpoint,
11739            ::aws_smithy_types::endpoint::Endpoint::builder()
11740                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11741                .property(
11742                    "authSchemes",
11743                    vec![{
11744                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11745                        out.insert("name".to_string(), "sigv4".to_string().into());
11746                        out.insert("signingName".to_string(), "s3express".to_string().into());
11747                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11748                        out.insert("disableDoubleEncoding".to_string(), true.into());
11749                        out
11750                    }
11751                    .into()]
11752                )
11753                .property("backend", "S3Express".to_string())
11754                .build()
11755        );
11756    }
11757
11758    /// Data plane AP sigv4 with fips and dualstack
11759    #[test]
11760    fn test_388() {
11761        let params = crate::config::endpoint::Params::builder()
11762            .region("us-west-2".to_string())
11763            .bucket("myaccesspoint--test1-long1-zone-ab1--xa-s3".to_string())
11764            .use_fips(true)
11765            .use_dual_stack(true)
11766            .accelerate(false)
11767            .disable_s3_express_session_auth(true)
11768            .build()
11769            .expect("invalid params");
11770        let resolver = crate::config::endpoint::DefaultResolver::new();
11771        let endpoint = resolver.resolve_endpoint(&params);
11772        let endpoint = endpoint.expect("Expected valid endpoint: https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com");
11773        assert_eq!(
11774            endpoint,
11775            ::aws_smithy_types::endpoint::Endpoint::builder()
11776                .url("https://myaccesspoint--test1-long1-zone-ab1--xa-s3.s3express-fips-test1-long1-zone-ab1.dualstack.us-west-2.amazonaws.com")
11777                .property(
11778                    "authSchemes",
11779                    vec![{
11780                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11781                        out.insert("name".to_string(), "sigv4".to_string().into());
11782                        out.insert("signingName".to_string(), "s3express".to_string().into());
11783                        out.insert("signingRegion".to_string(), "us-west-2".to_string().into());
11784                        out.insert("disableDoubleEncoding".to_string(), true.into());
11785                        out
11786                    }
11787                    .into()]
11788                )
11789                .property("backend", "S3Express".to_string())
11790                .build()
11791        );
11792    }
11793
11794    /// Control plane with dualstack and bucket
11795    #[test]
11796    fn test_389() {
11797        let params = crate::config::endpoint::Params::builder()
11798            .region("us-east-1".to_string())
11799            .bucket("mybucket--test-ab1--x-s3".to_string())
11800            .use_fips(false)
11801            .use_dual_stack(true)
11802            .accelerate(false)
11803            .use_s3_express_control_endpoint(true)
11804            .build()
11805            .expect("invalid params");
11806        let resolver = crate::config::endpoint::DefaultResolver::new();
11807        let endpoint = resolver.resolve_endpoint(&params);
11808        let endpoint =
11809            endpoint.expect("Expected valid endpoint: https://s3express-control.dualstack.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3");
11810        assert_eq!(
11811            endpoint,
11812            ::aws_smithy_types::endpoint::Endpoint::builder()
11813                .url("https://s3express-control.dualstack.us-east-1.amazonaws.com/mybucket--test-ab1--x-s3")
11814                .property(
11815                    "authSchemes",
11816                    vec![{
11817                        let mut out = ::std::collections::HashMap::<String, ::aws_smithy_types::Document>::new();
11818                        out.insert("name".to_string(), "sigv4".to_string().into());
11819                        out.insert("signingName".to_string(), "s3express".to_string().into());
11820                        out.insert("signingRegion".to_string(), "us-east-1".to_string().into());
11821                        out.insert("disableDoubleEncoding".to_string(), true.into());
11822                        out
11823                    }
11824                    .into()]
11825                )
11826                .property("backend", "S3Express".to_string())
11827                .build()
11828        );
11829    }
11830}
11831
11832/// Endpoint resolver trait specific to Amazon Simple Storage Service
11833pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
11834    /// Resolve an endpoint with the given parameters
11835    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
11836
11837    /// Convert this service-specific resolver into a `SharedEndpointResolver`
11838    ///
11839    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
11840    fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
11841    where
11842        Self: Sized + 'static,
11843    {
11844        ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
11845    }
11846}
11847
11848#[derive(Debug)]
11849struct DowncastParams<T>(T);
11850impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
11851where
11852    T: ResolveEndpoint,
11853{
11854    fn resolve_endpoint<'a>(
11855        &'a self,
11856        params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
11857    ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
11858        let ep = match params.get::<crate::config::endpoint::Params>() {
11859            Some(params) => self.0.resolve_endpoint(params),
11860            None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
11861        };
11862        ep
11863    }
11864}
11865
11866/// The default endpoint resolver
11867#[derive(Debug, Default)]
11868pub struct DefaultResolver {
11869    partition_resolver: crate::endpoint_lib::partition::PartitionResolver,
11870}
11871
11872impl DefaultResolver {
11873    /// Create a new endpoint resolver with default settings
11874    pub fn new() -> Self {
11875        Self {
11876            partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone(),
11877        }
11878    }
11879
11880    fn resolve_endpoint(
11881        &self,
11882        params: &crate::config::endpoint::Params,
11883    ) -> ::std::result::Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
11884        let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
11885        Ok(
11886            crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
11887                .map_err(|err| err.with_source(diagnostic_collector.take_last_error()))?,
11888        )
11889    }
11890}
11891
11892impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
11893    fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'_> {
11894        ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
11895    }
11896}
11897
11898#[non_exhaustive]
11899#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
11900/// Configuration parameters for resolving the correct endpoint
11901pub struct Params {
11902    /// The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.
11903    pub(crate) bucket: ::std::option::Option<::std::string::String>,
11904    /// The AWS region used to dispatch the request.
11905    pub(crate) region: ::std::option::Option<::std::string::String>,
11906    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
11907    pub(crate) use_fips: bool,
11908    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
11909    pub(crate) use_dual_stack: bool,
11910    /// Override the endpoint used to send this request
11911    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
11912    /// When true, force a path-style endpoint to be used where the bucket name is part of the path.
11913    pub(crate) force_path_style: bool,
11914    /// When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.
11915    pub(crate) accelerate: bool,
11916    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
11917    pub(crate) use_global_endpoint: bool,
11918    /// Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)
11919    pub(crate) use_object_lambda_endpoint: ::std::option::Option<bool>,
11920    /// The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key.
11921    pub(crate) key: ::std::option::Option<::std::string::String>,
11922    /// The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix.
11923    pub(crate) prefix: ::std::option::Option<::std::string::String>,
11924    /// The Copy Source used for Copy Object request. This is an optional parameter that will be set automatically for operations that are scoped to Copy Source.
11925    pub(crate) copy_source: ::std::option::Option<::std::string::String>,
11926    /// Internal parameter to disable Access Point Buckets
11927    pub(crate) disable_access_points: ::std::option::Option<bool>,
11928    /// Whether multi-region access points (MRAP) should be disabled.
11929    pub(crate) disable_multi_region_access_points: bool,
11930    /// When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.
11931    pub(crate) use_arn_region: ::std::option::Option<bool>,
11932    /// Internal parameter to indicate whether S3Express operation should use control plane, (ex. CreateBucket)
11933    pub(crate) use_s3_express_control_endpoint: ::std::option::Option<bool>,
11934    /// Parameter to indicate whether S3Express session auth should be disabled
11935    pub(crate) disable_s3_express_session_auth: ::std::option::Option<bool>,
11936}
11937impl Params {
11938    /// Create a builder for [`Params`]
11939    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
11940        crate::config::endpoint::ParamsBuilder::default()
11941    }
11942    /// The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.
11943    pub fn bucket(&self) -> ::std::option::Option<&str> {
11944        self.bucket.as_deref()
11945    }
11946    /// The AWS region used to dispatch the request.
11947    pub fn region(&self) -> ::std::option::Option<&str> {
11948        self.region.as_deref()
11949    }
11950    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
11951    pub fn use_fips(&self) -> ::std::option::Option<bool> {
11952        Some(self.use_fips)
11953    }
11954    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
11955    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
11956        Some(self.use_dual_stack)
11957    }
11958    /// Override the endpoint used to send this request
11959    pub fn endpoint(&self) -> ::std::option::Option<&str> {
11960        self.endpoint.as_deref()
11961    }
11962    /// When true, force a path-style endpoint to be used where the bucket name is part of the path.
11963    pub fn force_path_style(&self) -> ::std::option::Option<bool> {
11964        Some(self.force_path_style)
11965    }
11966    /// When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.
11967    pub fn accelerate(&self) -> ::std::option::Option<bool> {
11968        Some(self.accelerate)
11969    }
11970    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
11971    pub fn use_global_endpoint(&self) -> ::std::option::Option<bool> {
11972        Some(self.use_global_endpoint)
11973    }
11974    /// Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)
11975    pub fn use_object_lambda_endpoint(&self) -> ::std::option::Option<bool> {
11976        self.use_object_lambda_endpoint
11977    }
11978    /// The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key.
11979    pub fn key(&self) -> ::std::option::Option<&str> {
11980        self.key.as_deref()
11981    }
11982    /// The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix.
11983    pub fn prefix(&self) -> ::std::option::Option<&str> {
11984        self.prefix.as_deref()
11985    }
11986    /// The Copy Source used for Copy Object request. This is an optional parameter that will be set automatically for operations that are scoped to Copy Source.
11987    pub fn copy_source(&self) -> ::std::option::Option<&str> {
11988        self.copy_source.as_deref()
11989    }
11990    /// Internal parameter to disable Access Point Buckets
11991    pub fn disable_access_points(&self) -> ::std::option::Option<bool> {
11992        self.disable_access_points
11993    }
11994    /// Whether multi-region access points (MRAP) should be disabled.
11995    pub fn disable_multi_region_access_points(&self) -> ::std::option::Option<bool> {
11996        Some(self.disable_multi_region_access_points)
11997    }
11998    /// When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.
11999    pub fn use_arn_region(&self) -> ::std::option::Option<bool> {
12000        self.use_arn_region
12001    }
12002    /// Internal parameter to indicate whether S3Express operation should use control plane, (ex. CreateBucket)
12003    pub fn use_s3_express_control_endpoint(&self) -> ::std::option::Option<bool> {
12004        self.use_s3_express_control_endpoint
12005    }
12006    /// Parameter to indicate whether S3Express session auth should be disabled
12007    pub fn disable_s3_express_session_auth(&self) -> ::std::option::Option<bool> {
12008        self.disable_s3_express_session_auth
12009    }
12010}
12011
12012/// Builder for [`Params`]
12013#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
12014pub struct ParamsBuilder {
12015    bucket: ::std::option::Option<::std::string::String>,
12016    region: ::std::option::Option<::std::string::String>,
12017    use_fips: ::std::option::Option<bool>,
12018    use_dual_stack: ::std::option::Option<bool>,
12019    endpoint: ::std::option::Option<::std::string::String>,
12020    force_path_style: ::std::option::Option<bool>,
12021    accelerate: ::std::option::Option<bool>,
12022    use_global_endpoint: ::std::option::Option<bool>,
12023    use_object_lambda_endpoint: ::std::option::Option<bool>,
12024    key: ::std::option::Option<::std::string::String>,
12025    prefix: ::std::option::Option<::std::string::String>,
12026    copy_source: ::std::option::Option<::std::string::String>,
12027    disable_access_points: ::std::option::Option<bool>,
12028    disable_multi_region_access_points: ::std::option::Option<bool>,
12029    use_arn_region: ::std::option::Option<bool>,
12030    use_s3_express_control_endpoint: ::std::option::Option<bool>,
12031    disable_s3_express_session_auth: ::std::option::Option<bool>,
12032}
12033impl ParamsBuilder {
12034    /// Consume this builder, creating [`Params`].
12035    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
12036        Ok(
12037            #[allow(clippy::unnecessary_lazy_evaluations)]
12038            crate::config::endpoint::Params {
12039                bucket: self.bucket,
12040                region: self.region,
12041                use_fips: self
12042                    .use_fips
12043                    .or_else(|| Some(false))
12044                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_fips"))?,
12045                use_dual_stack: self
12046                    .use_dual_stack
12047                    .or_else(|| Some(false))
12048                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?,
12049                endpoint: self.endpoint,
12050                force_path_style: self
12051                    .force_path_style
12052                    .or_else(|| Some(false))
12053                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("force_path_style"))?,
12054                accelerate: self
12055                    .accelerate
12056                    .or_else(|| Some(false))
12057                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("accelerate"))?,
12058                use_global_endpoint: self
12059                    .use_global_endpoint
12060                    .or_else(|| Some(false))
12061                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_global_endpoint"))?,
12062                use_object_lambda_endpoint: self.use_object_lambda_endpoint,
12063                key: self.key,
12064                prefix: self.prefix,
12065                copy_source: self.copy_source,
12066                disable_access_points: self.disable_access_points,
12067                disable_multi_region_access_points: self
12068                    .disable_multi_region_access_points
12069                    .or_else(|| Some(false))
12070                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("disable_multi_region_access_points"))?,
12071                use_arn_region: self.use_arn_region,
12072                use_s3_express_control_endpoint: self.use_s3_express_control_endpoint,
12073                disable_s3_express_session_auth: self.disable_s3_express_session_auth,
12074            },
12075        )
12076    }
12077    /// Sets the value for bucket
12078    ///
12079    /// The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.
12080    pub fn bucket(mut self, value: impl Into<::std::string::String>) -> Self {
12081        self.bucket = Some(value.into());
12082        self
12083    }
12084
12085    /// Sets the value for bucket
12086    ///
12087    /// The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.
12088    pub fn set_bucket(mut self, param: Option<::std::string::String>) -> Self {
12089        self.bucket = param;
12090        self
12091    }
12092    /// Sets the value for region
12093    ///
12094    /// The AWS region used to dispatch the request.
12095    pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
12096        self.region = Some(value.into());
12097        self
12098    }
12099
12100    /// Sets the value for region
12101    ///
12102    /// The AWS region used to dispatch the request.
12103    pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
12104        self.region = param;
12105        self
12106    }
12107    /// Sets the value for use_fips
12108    ///
12109    /// When unset, this parameter has a default value of `false`.
12110    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
12111    pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
12112        self.use_fips = Some(value.into());
12113        self
12114    }
12115
12116    /// Sets the value for use_fips
12117    ///
12118    /// When unset, this parameter has a default value of `false`.
12119    /// When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
12120    pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
12121        self.use_fips = param;
12122        self
12123    }
12124    /// Sets the value for use_dual_stack
12125    ///
12126    /// When unset, this parameter has a default value of `false`.
12127    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
12128    pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
12129        self.use_dual_stack = Some(value.into());
12130        self
12131    }
12132
12133    /// Sets the value for use_dual_stack
12134    ///
12135    /// When unset, this parameter has a default value of `false`.
12136    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
12137    pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
12138        self.use_dual_stack = param;
12139        self
12140    }
12141    /// Sets the value for endpoint
12142    ///
12143    /// Override the endpoint used to send this request
12144    pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
12145        self.endpoint = Some(value.into());
12146        self
12147    }
12148
12149    /// Sets the value for endpoint
12150    ///
12151    /// Override the endpoint used to send this request
12152    pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
12153        self.endpoint = param;
12154        self
12155    }
12156    /// Sets the value for force_path_style
12157    ///
12158    /// When unset, this parameter has a default value of `false`.
12159    /// When true, force a path-style endpoint to be used where the bucket name is part of the path.
12160    pub fn force_path_style(mut self, value: impl Into<bool>) -> Self {
12161        self.force_path_style = Some(value.into());
12162        self
12163    }
12164
12165    /// Sets the value for force_path_style
12166    ///
12167    /// When unset, this parameter has a default value of `false`.
12168    /// When true, force a path-style endpoint to be used where the bucket name is part of the path.
12169    pub fn set_force_path_style(mut self, param: Option<bool>) -> Self {
12170        self.force_path_style = param;
12171        self
12172    }
12173    /// Sets the value for accelerate
12174    ///
12175    /// When unset, this parameter has a default value of `false`.
12176    /// When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.
12177    pub fn accelerate(mut self, value: impl Into<bool>) -> Self {
12178        self.accelerate = Some(value.into());
12179        self
12180    }
12181
12182    /// Sets the value for accelerate
12183    ///
12184    /// When unset, this parameter has a default value of `false`.
12185    /// When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.
12186    pub fn set_accelerate(mut self, param: Option<bool>) -> Self {
12187        self.accelerate = param;
12188        self
12189    }
12190    /// Sets the value for use_global_endpoint
12191    ///
12192    /// When unset, this parameter has a default value of `false`.
12193    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
12194    pub fn use_global_endpoint(mut self, value: impl Into<bool>) -> Self {
12195        self.use_global_endpoint = Some(value.into());
12196        self
12197    }
12198
12199    /// Sets the value for use_global_endpoint
12200    ///
12201    /// When unset, this parameter has a default value of `false`.
12202    /// Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
12203    pub fn set_use_global_endpoint(mut self, param: Option<bool>) -> Self {
12204        self.use_global_endpoint = param;
12205        self
12206    }
12207    /// Sets the value for use_object_lambda_endpoint
12208    ///
12209    /// Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)
12210    pub fn use_object_lambda_endpoint(mut self, value: impl Into<bool>) -> Self {
12211        self.use_object_lambda_endpoint = Some(value.into());
12212        self
12213    }
12214
12215    /// Sets the value for use_object_lambda_endpoint
12216    ///
12217    /// Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)
12218    pub fn set_use_object_lambda_endpoint(mut self, param: Option<bool>) -> Self {
12219        self.use_object_lambda_endpoint = param;
12220        self
12221    }
12222    /// Sets the value for key
12223    ///
12224    /// The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key.
12225    pub fn key(mut self, value: impl Into<::std::string::String>) -> Self {
12226        self.key = Some(value.into());
12227        self
12228    }
12229
12230    /// Sets the value for key
12231    ///
12232    /// The S3 Key used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Key.
12233    pub fn set_key(mut self, param: Option<::std::string::String>) -> Self {
12234        self.key = param;
12235        self
12236    }
12237    /// Sets the value for prefix
12238    ///
12239    /// The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix.
12240    pub fn prefix(mut self, value: impl Into<::std::string::String>) -> Self {
12241        self.prefix = Some(value.into());
12242        self
12243    }
12244
12245    /// Sets the value for prefix
12246    ///
12247    /// The S3 Prefix used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 Prefix.
12248    pub fn set_prefix(mut self, param: Option<::std::string::String>) -> Self {
12249        self.prefix = param;
12250        self
12251    }
12252    /// Sets the value for copy_source
12253    ///
12254    /// The Copy Source used for Copy Object request. This is an optional parameter that will be set automatically for operations that are scoped to Copy Source.
12255    pub fn copy_source(mut self, value: impl Into<::std::string::String>) -> Self {
12256        self.copy_source = Some(value.into());
12257        self
12258    }
12259
12260    /// Sets the value for copy_source
12261    ///
12262    /// The Copy Source used for Copy Object request. This is an optional parameter that will be set automatically for operations that are scoped to Copy Source.
12263    pub fn set_copy_source(mut self, param: Option<::std::string::String>) -> Self {
12264        self.copy_source = param;
12265        self
12266    }
12267    /// Sets the value for disable_access_points
12268    ///
12269    /// Internal parameter to disable Access Point Buckets
12270    pub fn disable_access_points(mut self, value: impl Into<bool>) -> Self {
12271        self.disable_access_points = Some(value.into());
12272        self
12273    }
12274
12275    /// Sets the value for disable_access_points
12276    ///
12277    /// Internal parameter to disable Access Point Buckets
12278    pub fn set_disable_access_points(mut self, param: Option<bool>) -> Self {
12279        self.disable_access_points = param;
12280        self
12281    }
12282    /// Sets the value for disable_multi_region_access_points
12283    ///
12284    /// When unset, this parameter has a default value of `false`.
12285    /// Whether multi-region access points (MRAP) should be disabled.
12286    pub fn disable_multi_region_access_points(mut self, value: impl Into<bool>) -> Self {
12287        self.disable_multi_region_access_points = Some(value.into());
12288        self
12289    }
12290
12291    /// Sets the value for disable_multi_region_access_points
12292    ///
12293    /// When unset, this parameter has a default value of `false`.
12294    /// Whether multi-region access points (MRAP) should be disabled.
12295    pub fn set_disable_multi_region_access_points(mut self, param: Option<bool>) -> Self {
12296        self.disable_multi_region_access_points = param;
12297        self
12298    }
12299    /// Sets the value for use_arn_region
12300    ///
12301    /// When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.
12302    pub fn use_arn_region(mut self, value: impl Into<bool>) -> Self {
12303        self.use_arn_region = Some(value.into());
12304        self
12305    }
12306
12307    /// Sets the value for use_arn_region
12308    ///
12309    /// When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.
12310    pub fn set_use_arn_region(mut self, param: Option<bool>) -> Self {
12311        self.use_arn_region = param;
12312        self
12313    }
12314    /// Sets the value for use_s3_express_control_endpoint
12315    ///
12316    /// Internal parameter to indicate whether S3Express operation should use control plane, (ex. CreateBucket)
12317    pub fn use_s3_express_control_endpoint(mut self, value: impl Into<bool>) -> Self {
12318        self.use_s3_express_control_endpoint = Some(value.into());
12319        self
12320    }
12321
12322    /// Sets the value for use_s3_express_control_endpoint
12323    ///
12324    /// Internal parameter to indicate whether S3Express operation should use control plane, (ex. CreateBucket)
12325    pub fn set_use_s3_express_control_endpoint(mut self, param: Option<bool>) -> Self {
12326        self.use_s3_express_control_endpoint = param;
12327        self
12328    }
12329    /// Sets the value for disable_s3_express_session_auth
12330    ///
12331    /// Parameter to indicate whether S3Express session auth should be disabled
12332    pub fn disable_s3_express_session_auth(mut self, value: impl Into<bool>) -> Self {
12333        self.disable_s3_express_session_auth = Some(value.into());
12334        self
12335    }
12336
12337    /// Sets the value for disable_s3_express_session_auth
12338    ///
12339    /// Parameter to indicate whether S3Express session auth should be disabled
12340    pub fn set_disable_s3_express_session_auth(mut self, param: Option<bool>) -> Self {
12341        self.disable_s3_express_session_auth = param;
12342        self
12343    }
12344}
12345
12346/// An error that occurred during endpoint resolution
12347#[derive(Debug)]
12348pub struct InvalidParams {
12349    field: std::borrow::Cow<'static, str>,
12350    kind: InvalidParamsErrorKind,
12351}
12352
12353/// The kind of invalid parameter error
12354#[derive(Debug)]
12355enum InvalidParamsErrorKind {
12356    MissingField,
12357    InvalidValue { message: &'static str },
12358}
12359
12360impl InvalidParams {
12361    #[allow(dead_code)]
12362    fn missing(field: &'static str) -> Self {
12363        Self {
12364            field: field.into(),
12365            kind: InvalidParamsErrorKind::MissingField,
12366        }
12367    }
12368
12369    #[allow(dead_code)]
12370    fn invalid_value(field: &'static str, message: &'static str) -> Self {
12371        Self {
12372            field: field.into(),
12373            kind: InvalidParamsErrorKind::InvalidValue { message },
12374        }
12375    }
12376}
12377
12378impl std::fmt::Display for InvalidParams {
12379    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
12380        match self.kind {
12381            InvalidParamsErrorKind::MissingField => write!(f, "a required field was missing: `{}`", self.field),
12382            InvalidParamsErrorKind::InvalidValue { message } => write!(f, "invalid value for field: `{}` - {}", self.field, message),
12383        }
12384    }
12385}
12386
12387impl std::error::Error for InvalidParams {}
12388
12389mod internals;