aws_sdk_sso/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///
7#[cfg(test)]
8mod test {
9
10    /// For region ap-east-1 with FIPS disabled and DualStack disabled
11    #[test]
12    fn test_1() {
13        let params = crate::config::endpoint::Params::builder()
14            .region("ap-east-1".to_string())
15            .use_fips(false)
16            .use_dual_stack(false)
17            .build()
18            .expect("invalid params");
19        let resolver = crate::config::endpoint::DefaultResolver::new();
20        let endpoint = resolver.resolve_endpoint(&params);
21        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-east-1.amazonaws.com");
22        assert_eq!(
23            endpoint,
24            ::aws_smithy_types::endpoint::Endpoint::builder()
25                .url("https://portal.sso.ap-east-1.amazonaws.com")
26                .build()
27        );
28    }
29
30    /// For region ap-northeast-1 with FIPS disabled and DualStack disabled
31    #[test]
32    fn test_2() {
33        let params = crate::config::endpoint::Params::builder()
34            .region("ap-northeast-1".to_string())
35            .use_fips(false)
36            .use_dual_stack(false)
37            .build()
38            .expect("invalid params");
39        let resolver = crate::config::endpoint::DefaultResolver::new();
40        let endpoint = resolver.resolve_endpoint(&params);
41        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-northeast-1.amazonaws.com");
42        assert_eq!(
43            endpoint,
44            ::aws_smithy_types::endpoint::Endpoint::builder()
45                .url("https://portal.sso.ap-northeast-1.amazonaws.com")
46                .build()
47        );
48    }
49
50    /// For region ap-northeast-2 with FIPS disabled and DualStack disabled
51    #[test]
52    fn test_3() {
53        let params = crate::config::endpoint::Params::builder()
54            .region("ap-northeast-2".to_string())
55            .use_fips(false)
56            .use_dual_stack(false)
57            .build()
58            .expect("invalid params");
59        let resolver = crate::config::endpoint::DefaultResolver::new();
60        let endpoint = resolver.resolve_endpoint(&params);
61        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-northeast-2.amazonaws.com");
62        assert_eq!(
63            endpoint,
64            ::aws_smithy_types::endpoint::Endpoint::builder()
65                .url("https://portal.sso.ap-northeast-2.amazonaws.com")
66                .build()
67        );
68    }
69
70    /// For region ap-northeast-3 with FIPS disabled and DualStack disabled
71    #[test]
72    fn test_4() {
73        let params = crate::config::endpoint::Params::builder()
74            .region("ap-northeast-3".to_string())
75            .use_fips(false)
76            .use_dual_stack(false)
77            .build()
78            .expect("invalid params");
79        let resolver = crate::config::endpoint::DefaultResolver::new();
80        let endpoint = resolver.resolve_endpoint(&params);
81        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-northeast-3.amazonaws.com");
82        assert_eq!(
83            endpoint,
84            ::aws_smithy_types::endpoint::Endpoint::builder()
85                .url("https://portal.sso.ap-northeast-3.amazonaws.com")
86                .build()
87        );
88    }
89
90    /// For region ap-south-1 with FIPS disabled and DualStack disabled
91    #[test]
92    fn test_5() {
93        let params = crate::config::endpoint::Params::builder()
94            .region("ap-south-1".to_string())
95            .use_fips(false)
96            .use_dual_stack(false)
97            .build()
98            .expect("invalid params");
99        let resolver = crate::config::endpoint::DefaultResolver::new();
100        let endpoint = resolver.resolve_endpoint(&params);
101        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-south-1.amazonaws.com");
102        assert_eq!(
103            endpoint,
104            ::aws_smithy_types::endpoint::Endpoint::builder()
105                .url("https://portal.sso.ap-south-1.amazonaws.com")
106                .build()
107        );
108    }
109
110    /// For region ap-southeast-1 with FIPS disabled and DualStack disabled
111    #[test]
112    fn test_6() {
113        let params = crate::config::endpoint::Params::builder()
114            .region("ap-southeast-1".to_string())
115            .use_fips(false)
116            .use_dual_stack(false)
117            .build()
118            .expect("invalid params");
119        let resolver = crate::config::endpoint::DefaultResolver::new();
120        let endpoint = resolver.resolve_endpoint(&params);
121        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-southeast-1.amazonaws.com");
122        assert_eq!(
123            endpoint,
124            ::aws_smithy_types::endpoint::Endpoint::builder()
125                .url("https://portal.sso.ap-southeast-1.amazonaws.com")
126                .build()
127        );
128    }
129
130    /// For region ap-southeast-2 with FIPS disabled and DualStack disabled
131    #[test]
132    fn test_7() {
133        let params = crate::config::endpoint::Params::builder()
134            .region("ap-southeast-2".to_string())
135            .use_fips(false)
136            .use_dual_stack(false)
137            .build()
138            .expect("invalid params");
139        let resolver = crate::config::endpoint::DefaultResolver::new();
140        let endpoint = resolver.resolve_endpoint(&params);
141        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ap-southeast-2.amazonaws.com");
142        assert_eq!(
143            endpoint,
144            ::aws_smithy_types::endpoint::Endpoint::builder()
145                .url("https://portal.sso.ap-southeast-2.amazonaws.com")
146                .build()
147        );
148    }
149
150    /// For region ca-central-1 with FIPS disabled and DualStack disabled
151    #[test]
152    fn test_8() {
153        let params = crate::config::endpoint::Params::builder()
154            .region("ca-central-1".to_string())
155            .use_fips(false)
156            .use_dual_stack(false)
157            .build()
158            .expect("invalid params");
159        let resolver = crate::config::endpoint::DefaultResolver::new();
160        let endpoint = resolver.resolve_endpoint(&params);
161        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.ca-central-1.amazonaws.com");
162        assert_eq!(
163            endpoint,
164            ::aws_smithy_types::endpoint::Endpoint::builder()
165                .url("https://portal.sso.ca-central-1.amazonaws.com")
166                .build()
167        );
168    }
169
170    /// For region eu-central-1 with FIPS disabled and DualStack disabled
171    #[test]
172    fn test_9() {
173        let params = crate::config::endpoint::Params::builder()
174            .region("eu-central-1".to_string())
175            .use_fips(false)
176            .use_dual_stack(false)
177            .build()
178            .expect("invalid params");
179        let resolver = crate::config::endpoint::DefaultResolver::new();
180        let endpoint = resolver.resolve_endpoint(&params);
181        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-central-1.amazonaws.com");
182        assert_eq!(
183            endpoint,
184            ::aws_smithy_types::endpoint::Endpoint::builder()
185                .url("https://portal.sso.eu-central-1.amazonaws.com")
186                .build()
187        );
188    }
189
190    /// For region eu-north-1 with FIPS disabled and DualStack disabled
191    #[test]
192    fn test_10() {
193        let params = crate::config::endpoint::Params::builder()
194            .region("eu-north-1".to_string())
195            .use_fips(false)
196            .use_dual_stack(false)
197            .build()
198            .expect("invalid params");
199        let resolver = crate::config::endpoint::DefaultResolver::new();
200        let endpoint = resolver.resolve_endpoint(&params);
201        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-north-1.amazonaws.com");
202        assert_eq!(
203            endpoint,
204            ::aws_smithy_types::endpoint::Endpoint::builder()
205                .url("https://portal.sso.eu-north-1.amazonaws.com")
206                .build()
207        );
208    }
209
210    /// For region eu-south-1 with FIPS disabled and DualStack disabled
211    #[test]
212    fn test_11() {
213        let params = crate::config::endpoint::Params::builder()
214            .region("eu-south-1".to_string())
215            .use_fips(false)
216            .use_dual_stack(false)
217            .build()
218            .expect("invalid params");
219        let resolver = crate::config::endpoint::DefaultResolver::new();
220        let endpoint = resolver.resolve_endpoint(&params);
221        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-south-1.amazonaws.com");
222        assert_eq!(
223            endpoint,
224            ::aws_smithy_types::endpoint::Endpoint::builder()
225                .url("https://portal.sso.eu-south-1.amazonaws.com")
226                .build()
227        );
228    }
229
230    /// For region eu-west-1 with FIPS disabled and DualStack disabled
231    #[test]
232    fn test_12() {
233        let params = crate::config::endpoint::Params::builder()
234            .region("eu-west-1".to_string())
235            .use_fips(false)
236            .use_dual_stack(false)
237            .build()
238            .expect("invalid params");
239        let resolver = crate::config::endpoint::DefaultResolver::new();
240        let endpoint = resolver.resolve_endpoint(&params);
241        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-west-1.amazonaws.com");
242        assert_eq!(
243            endpoint,
244            ::aws_smithy_types::endpoint::Endpoint::builder()
245                .url("https://portal.sso.eu-west-1.amazonaws.com")
246                .build()
247        );
248    }
249
250    /// For region eu-west-2 with FIPS disabled and DualStack disabled
251    #[test]
252    fn test_13() {
253        let params = crate::config::endpoint::Params::builder()
254            .region("eu-west-2".to_string())
255            .use_fips(false)
256            .use_dual_stack(false)
257            .build()
258            .expect("invalid params");
259        let resolver = crate::config::endpoint::DefaultResolver::new();
260        let endpoint = resolver.resolve_endpoint(&params);
261        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-west-2.amazonaws.com");
262        assert_eq!(
263            endpoint,
264            ::aws_smithy_types::endpoint::Endpoint::builder()
265                .url("https://portal.sso.eu-west-2.amazonaws.com")
266                .build()
267        );
268    }
269
270    /// For region eu-west-3 with FIPS disabled and DualStack disabled
271    #[test]
272    fn test_14() {
273        let params = crate::config::endpoint::Params::builder()
274            .region("eu-west-3".to_string())
275            .use_fips(false)
276            .use_dual_stack(false)
277            .build()
278            .expect("invalid params");
279        let resolver = crate::config::endpoint::DefaultResolver::new();
280        let endpoint = resolver.resolve_endpoint(&params);
281        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.eu-west-3.amazonaws.com");
282        assert_eq!(
283            endpoint,
284            ::aws_smithy_types::endpoint::Endpoint::builder()
285                .url("https://portal.sso.eu-west-3.amazonaws.com")
286                .build()
287        );
288    }
289
290    /// For region me-south-1 with FIPS disabled and DualStack disabled
291    #[test]
292    fn test_15() {
293        let params = crate::config::endpoint::Params::builder()
294            .region("me-south-1".to_string())
295            .use_fips(false)
296            .use_dual_stack(false)
297            .build()
298            .expect("invalid params");
299        let resolver = crate::config::endpoint::DefaultResolver::new();
300        let endpoint = resolver.resolve_endpoint(&params);
301        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.me-south-1.amazonaws.com");
302        assert_eq!(
303            endpoint,
304            ::aws_smithy_types::endpoint::Endpoint::builder()
305                .url("https://portal.sso.me-south-1.amazonaws.com")
306                .build()
307        );
308    }
309
310    /// For region sa-east-1 with FIPS disabled and DualStack disabled
311    #[test]
312    fn test_16() {
313        let params = crate::config::endpoint::Params::builder()
314            .region("sa-east-1".to_string())
315            .use_fips(false)
316            .use_dual_stack(false)
317            .build()
318            .expect("invalid params");
319        let resolver = crate::config::endpoint::DefaultResolver::new();
320        let endpoint = resolver.resolve_endpoint(&params);
321        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.sa-east-1.amazonaws.com");
322        assert_eq!(
323            endpoint,
324            ::aws_smithy_types::endpoint::Endpoint::builder()
325                .url("https://portal.sso.sa-east-1.amazonaws.com")
326                .build()
327        );
328    }
329
330    /// For region us-east-1 with FIPS disabled and DualStack disabled
331    #[test]
332    fn test_17() {
333        let params = crate::config::endpoint::Params::builder()
334            .region("us-east-1".to_string())
335            .use_fips(false)
336            .use_dual_stack(false)
337            .build()
338            .expect("invalid params");
339        let resolver = crate::config::endpoint::DefaultResolver::new();
340        let endpoint = resolver.resolve_endpoint(&params);
341        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-east-1.amazonaws.com");
342        assert_eq!(
343            endpoint,
344            ::aws_smithy_types::endpoint::Endpoint::builder()
345                .url("https://portal.sso.us-east-1.amazonaws.com")
346                .build()
347        );
348    }
349
350    /// For region us-east-2 with FIPS disabled and DualStack disabled
351    #[test]
352    fn test_18() {
353        let params = crate::config::endpoint::Params::builder()
354            .region("us-east-2".to_string())
355            .use_fips(false)
356            .use_dual_stack(false)
357            .build()
358            .expect("invalid params");
359        let resolver = crate::config::endpoint::DefaultResolver::new();
360        let endpoint = resolver.resolve_endpoint(&params);
361        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-east-2.amazonaws.com");
362        assert_eq!(
363            endpoint,
364            ::aws_smithy_types::endpoint::Endpoint::builder()
365                .url("https://portal.sso.us-east-2.amazonaws.com")
366                .build()
367        );
368    }
369
370    /// For region us-west-2 with FIPS disabled and DualStack disabled
371    #[test]
372    fn test_19() {
373        let params = crate::config::endpoint::Params::builder()
374            .region("us-west-2".to_string())
375            .use_fips(false)
376            .use_dual_stack(false)
377            .build()
378            .expect("invalid params");
379        let resolver = crate::config::endpoint::DefaultResolver::new();
380        let endpoint = resolver.resolve_endpoint(&params);
381        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-west-2.amazonaws.com");
382        assert_eq!(
383            endpoint,
384            ::aws_smithy_types::endpoint::Endpoint::builder()
385                .url("https://portal.sso.us-west-2.amazonaws.com")
386                .build()
387        );
388    }
389
390    /// For region us-east-1 with FIPS enabled and DualStack enabled
391    #[test]
392    fn test_20() {
393        let params = crate::config::endpoint::Params::builder()
394            .region("us-east-1".to_string())
395            .use_fips(true)
396            .use_dual_stack(true)
397            .build()
398            .expect("invalid params");
399        let resolver = crate::config::endpoint::DefaultResolver::new();
400        let endpoint = resolver.resolve_endpoint(&params);
401        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-east-1.api.aws");
402        assert_eq!(
403            endpoint,
404            ::aws_smithy_types::endpoint::Endpoint::builder()
405                .url("https://portal.sso-fips.us-east-1.api.aws")
406                .build()
407        );
408    }
409
410    /// For region us-east-1 with FIPS enabled and DualStack disabled
411    #[test]
412    fn test_21() {
413        let params = crate::config::endpoint::Params::builder()
414            .region("us-east-1".to_string())
415            .use_fips(true)
416            .use_dual_stack(false)
417            .build()
418            .expect("invalid params");
419        let resolver = crate::config::endpoint::DefaultResolver::new();
420        let endpoint = resolver.resolve_endpoint(&params);
421        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-east-1.amazonaws.com");
422        assert_eq!(
423            endpoint,
424            ::aws_smithy_types::endpoint::Endpoint::builder()
425                .url("https://portal.sso-fips.us-east-1.amazonaws.com")
426                .build()
427        );
428    }
429
430    /// For region us-east-1 with FIPS disabled and DualStack enabled
431    #[test]
432    fn test_22() {
433        let params = crate::config::endpoint::Params::builder()
434            .region("us-east-1".to_string())
435            .use_fips(false)
436            .use_dual_stack(true)
437            .build()
438            .expect("invalid params");
439        let resolver = crate::config::endpoint::DefaultResolver::new();
440        let endpoint = resolver.resolve_endpoint(&params);
441        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-east-1.api.aws");
442        assert_eq!(
443            endpoint,
444            ::aws_smithy_types::endpoint::Endpoint::builder()
445                .url("https://portal.sso.us-east-1.api.aws")
446                .build()
447        );
448    }
449
450    /// For region cn-north-1 with FIPS enabled and DualStack enabled
451    #[test]
452    fn test_23() {
453        let params = crate::config::endpoint::Params::builder()
454            .region("cn-north-1".to_string())
455            .use_fips(true)
456            .use_dual_stack(true)
457            .build()
458            .expect("invalid params");
459        let resolver = crate::config::endpoint::DefaultResolver::new();
460        let endpoint = resolver.resolve_endpoint(&params);
461        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.cn-north-1.api.amazonwebservices.com.cn");
462        assert_eq!(
463            endpoint,
464            ::aws_smithy_types::endpoint::Endpoint::builder()
465                .url("https://portal.sso-fips.cn-north-1.api.amazonwebservices.com.cn")
466                .build()
467        );
468    }
469
470    /// For region cn-north-1 with FIPS enabled and DualStack disabled
471    #[test]
472    fn test_24() {
473        let params = crate::config::endpoint::Params::builder()
474            .region("cn-north-1".to_string())
475            .use_fips(true)
476            .use_dual_stack(false)
477            .build()
478            .expect("invalid params");
479        let resolver = crate::config::endpoint::DefaultResolver::new();
480        let endpoint = resolver.resolve_endpoint(&params);
481        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.cn-north-1.amazonaws.com.cn");
482        assert_eq!(
483            endpoint,
484            ::aws_smithy_types::endpoint::Endpoint::builder()
485                .url("https://portal.sso-fips.cn-north-1.amazonaws.com.cn")
486                .build()
487        );
488    }
489
490    /// For region cn-north-1 with FIPS disabled and DualStack enabled
491    #[test]
492    fn test_25() {
493        let params = crate::config::endpoint::Params::builder()
494            .region("cn-north-1".to_string())
495            .use_fips(false)
496            .use_dual_stack(true)
497            .build()
498            .expect("invalid params");
499        let resolver = crate::config::endpoint::DefaultResolver::new();
500        let endpoint = resolver.resolve_endpoint(&params);
501        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.cn-north-1.api.amazonwebservices.com.cn");
502        assert_eq!(
503            endpoint,
504            ::aws_smithy_types::endpoint::Endpoint::builder()
505                .url("https://portal.sso.cn-north-1.api.amazonwebservices.com.cn")
506                .build()
507        );
508    }
509
510    /// For region cn-north-1 with FIPS disabled and DualStack disabled
511    #[test]
512    fn test_26() {
513        let params = crate::config::endpoint::Params::builder()
514            .region("cn-north-1".to_string())
515            .use_fips(false)
516            .use_dual_stack(false)
517            .build()
518            .expect("invalid params");
519        let resolver = crate::config::endpoint::DefaultResolver::new();
520        let endpoint = resolver.resolve_endpoint(&params);
521        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.cn-north-1.amazonaws.com.cn");
522        assert_eq!(
523            endpoint,
524            ::aws_smithy_types::endpoint::Endpoint::builder()
525                .url("https://portal.sso.cn-north-1.amazonaws.com.cn")
526                .build()
527        );
528    }
529
530    /// For region us-gov-east-1 with FIPS disabled and DualStack disabled
531    #[test]
532    fn test_27() {
533        let params = crate::config::endpoint::Params::builder()
534            .region("us-gov-east-1".to_string())
535            .use_fips(false)
536            .use_dual_stack(false)
537            .build()
538            .expect("invalid params");
539        let resolver = crate::config::endpoint::DefaultResolver::new();
540        let endpoint = resolver.resolve_endpoint(&params);
541        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-east-1.amazonaws.com");
542        assert_eq!(
543            endpoint,
544            ::aws_smithy_types::endpoint::Endpoint::builder()
545                .url("https://portal.sso.us-gov-east-1.amazonaws.com")
546                .build()
547        );
548    }
549
550    /// For region us-gov-west-1 with FIPS disabled and DualStack disabled
551    #[test]
552    fn test_28() {
553        let params = crate::config::endpoint::Params::builder()
554            .region("us-gov-west-1".to_string())
555            .use_fips(false)
556            .use_dual_stack(false)
557            .build()
558            .expect("invalid params");
559        let resolver = crate::config::endpoint::DefaultResolver::new();
560        let endpoint = resolver.resolve_endpoint(&params);
561        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-west-1.amazonaws.com");
562        assert_eq!(
563            endpoint,
564            ::aws_smithy_types::endpoint::Endpoint::builder()
565                .url("https://portal.sso.us-gov-west-1.amazonaws.com")
566                .build()
567        );
568    }
569
570    /// For region us-gov-east-1 with FIPS enabled and DualStack enabled
571    #[test]
572    fn test_29() {
573        let params = crate::config::endpoint::Params::builder()
574            .region("us-gov-east-1".to_string())
575            .use_fips(true)
576            .use_dual_stack(true)
577            .build()
578            .expect("invalid params");
579        let resolver = crate::config::endpoint::DefaultResolver::new();
580        let endpoint = resolver.resolve_endpoint(&params);
581        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-gov-east-1.api.aws");
582        assert_eq!(
583            endpoint,
584            ::aws_smithy_types::endpoint::Endpoint::builder()
585                .url("https://portal.sso-fips.us-gov-east-1.api.aws")
586                .build()
587        );
588    }
589
590    /// For region us-gov-east-1 with FIPS enabled and DualStack disabled
591    #[test]
592    fn test_30() {
593        let params = crate::config::endpoint::Params::builder()
594            .region("us-gov-east-1".to_string())
595            .use_fips(true)
596            .use_dual_stack(false)
597            .build()
598            .expect("invalid params");
599        let resolver = crate::config::endpoint::DefaultResolver::new();
600        let endpoint = resolver.resolve_endpoint(&params);
601        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-east-1.amazonaws.com");
602        assert_eq!(
603            endpoint,
604            ::aws_smithy_types::endpoint::Endpoint::builder()
605                .url("https://portal.sso.us-gov-east-1.amazonaws.com")
606                .build()
607        );
608    }
609
610    /// For region us-gov-east-1 with FIPS disabled and DualStack enabled
611    #[test]
612    fn test_31() {
613        let params = crate::config::endpoint::Params::builder()
614            .region("us-gov-east-1".to_string())
615            .use_fips(false)
616            .use_dual_stack(true)
617            .build()
618            .expect("invalid params");
619        let resolver = crate::config::endpoint::DefaultResolver::new();
620        let endpoint = resolver.resolve_endpoint(&params);
621        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-gov-east-1.api.aws");
622        assert_eq!(
623            endpoint,
624            ::aws_smithy_types::endpoint::Endpoint::builder()
625                .url("https://portal.sso.us-gov-east-1.api.aws")
626                .build()
627        );
628    }
629
630    /// For region us-iso-east-1 with FIPS enabled and DualStack enabled
631    #[test]
632    fn test_32() {
633        let params = crate::config::endpoint::Params::builder()
634            .region("us-iso-east-1".to_string())
635            .use_fips(true)
636            .use_dual_stack(true)
637            .build()
638            .expect("invalid params");
639        let resolver = crate::config::endpoint::DefaultResolver::new();
640        let endpoint = resolver.resolve_endpoint(&params);
641        let error = endpoint.expect_err("expected error: FIPS and DualStack are enabled, but this partition does not support one or both [For region us-iso-east-1 with FIPS enabled and DualStack enabled]");
642        assert_eq!(
643            format!("{}", error),
644            "FIPS and DualStack are enabled, but this partition does not support one or both"
645        )
646    }
647
648    /// For region us-iso-east-1 with FIPS enabled and DualStack disabled
649    #[test]
650    fn test_33() {
651        let params = crate::config::endpoint::Params::builder()
652            .region("us-iso-east-1".to_string())
653            .use_fips(true)
654            .use_dual_stack(false)
655            .build()
656            .expect("invalid params");
657        let resolver = crate::config::endpoint::DefaultResolver::new();
658        let endpoint = resolver.resolve_endpoint(&params);
659        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-iso-east-1.c2s.ic.gov");
660        assert_eq!(
661            endpoint,
662            ::aws_smithy_types::endpoint::Endpoint::builder()
663                .url("https://portal.sso-fips.us-iso-east-1.c2s.ic.gov")
664                .build()
665        );
666    }
667
668    /// For region us-iso-east-1 with FIPS disabled and DualStack enabled
669    #[test]
670    fn test_34() {
671        let params = crate::config::endpoint::Params::builder()
672            .region("us-iso-east-1".to_string())
673            .use_fips(false)
674            .use_dual_stack(true)
675            .build()
676            .expect("invalid params");
677        let resolver = crate::config::endpoint::DefaultResolver::new();
678        let endpoint = resolver.resolve_endpoint(&params);
679        let error = endpoint.expect_err("expected error: DualStack is enabled but this partition does not support DualStack [For region us-iso-east-1 with FIPS disabled and DualStack enabled]");
680        assert_eq!(format!("{}", error), "DualStack is enabled but this partition does not support DualStack")
681    }
682
683    /// For region us-iso-east-1 with FIPS disabled and DualStack disabled
684    #[test]
685    fn test_35() {
686        let params = crate::config::endpoint::Params::builder()
687            .region("us-iso-east-1".to_string())
688            .use_fips(false)
689            .use_dual_stack(false)
690            .build()
691            .expect("invalid params");
692        let resolver = crate::config::endpoint::DefaultResolver::new();
693        let endpoint = resolver.resolve_endpoint(&params);
694        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-iso-east-1.c2s.ic.gov");
695        assert_eq!(
696            endpoint,
697            ::aws_smithy_types::endpoint::Endpoint::builder()
698                .url("https://portal.sso.us-iso-east-1.c2s.ic.gov")
699                .build()
700        );
701    }
702
703    /// For region us-isob-east-1 with FIPS enabled and DualStack enabled
704    #[test]
705    fn test_36() {
706        let params = crate::config::endpoint::Params::builder()
707            .region("us-isob-east-1".to_string())
708            .use_fips(true)
709            .use_dual_stack(true)
710            .build()
711            .expect("invalid params");
712        let resolver = crate::config::endpoint::DefaultResolver::new();
713        let endpoint = resolver.resolve_endpoint(&params);
714        let error = endpoint.expect_err("expected error: FIPS and DualStack are enabled, but this partition does not support one or both [For region us-isob-east-1 with FIPS enabled and DualStack enabled]");
715        assert_eq!(
716            format!("{}", error),
717            "FIPS and DualStack are enabled, but this partition does not support one or both"
718        )
719    }
720
721    /// For region us-isob-east-1 with FIPS enabled and DualStack disabled
722    #[test]
723    fn test_37() {
724        let params = crate::config::endpoint::Params::builder()
725            .region("us-isob-east-1".to_string())
726            .use_fips(true)
727            .use_dual_stack(false)
728            .build()
729            .expect("invalid params");
730        let resolver = crate::config::endpoint::DefaultResolver::new();
731        let endpoint = resolver.resolve_endpoint(&params);
732        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso-fips.us-isob-east-1.sc2s.sgov.gov");
733        assert_eq!(
734            endpoint,
735            ::aws_smithy_types::endpoint::Endpoint::builder()
736                .url("https://portal.sso-fips.us-isob-east-1.sc2s.sgov.gov")
737                .build()
738        );
739    }
740
741    /// For region us-isob-east-1 with FIPS disabled and DualStack enabled
742    #[test]
743    fn test_38() {
744        let params = crate::config::endpoint::Params::builder()
745            .region("us-isob-east-1".to_string())
746            .use_fips(false)
747            .use_dual_stack(true)
748            .build()
749            .expect("invalid params");
750        let resolver = crate::config::endpoint::DefaultResolver::new();
751        let endpoint = resolver.resolve_endpoint(&params);
752        let error = endpoint.expect_err("expected error: DualStack is enabled but this partition does not support DualStack [For region us-isob-east-1 with FIPS disabled and DualStack enabled]");
753        assert_eq!(format!("{}", error), "DualStack is enabled but this partition does not support DualStack")
754    }
755
756    /// For region us-isob-east-1 with FIPS disabled and DualStack disabled
757    #[test]
758    fn test_39() {
759        let params = crate::config::endpoint::Params::builder()
760            .region("us-isob-east-1".to_string())
761            .use_fips(false)
762            .use_dual_stack(false)
763            .build()
764            .expect("invalid params");
765        let resolver = crate::config::endpoint::DefaultResolver::new();
766        let endpoint = resolver.resolve_endpoint(&params);
767        let endpoint = endpoint.expect("Expected valid endpoint: https://portal.sso.us-isob-east-1.sc2s.sgov.gov");
768        assert_eq!(
769            endpoint,
770            ::aws_smithy_types::endpoint::Endpoint::builder()
771                .url("https://portal.sso.us-isob-east-1.sc2s.sgov.gov")
772                .build()
773        );
774    }
775
776    /// For custom endpoint with region set and fips disabled and dualstack disabled
777    #[test]
778    fn test_40() {
779        let params = crate::config::endpoint::Params::builder()
780            .region("us-east-1".to_string())
781            .use_fips(false)
782            .use_dual_stack(false)
783            .endpoint("https://example.com".to_string())
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://example.com");
789        assert_eq!(
790            endpoint,
791            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
792        );
793    }
794
795    /// For custom endpoint with region not set and fips disabled and dualstack disabled
796    #[test]
797    fn test_41() {
798        let params = crate::config::endpoint::Params::builder()
799            .use_fips(false)
800            .use_dual_stack(false)
801            .endpoint("https://example.com".to_string())
802            .build()
803            .expect("invalid params");
804        let resolver = crate::config::endpoint::DefaultResolver::new();
805        let endpoint = resolver.resolve_endpoint(&params);
806        let endpoint = endpoint.expect("Expected valid endpoint: https://example.com");
807        assert_eq!(
808            endpoint,
809            ::aws_smithy_types::endpoint::Endpoint::builder().url("https://example.com").build()
810        );
811    }
812
813    /// For custom endpoint with fips enabled and dualstack disabled
814    #[test]
815    fn test_42() {
816        let params = crate::config::endpoint::Params::builder()
817            .region("us-east-1".to_string())
818            .use_fips(true)
819            .use_dual_stack(false)
820            .endpoint("https://example.com".to_string())
821            .build()
822            .expect("invalid params");
823        let resolver = crate::config::endpoint::DefaultResolver::new();
824        let endpoint = resolver.resolve_endpoint(&params);
825        let error = endpoint.expect_err("expected error: Invalid Configuration: FIPS and custom endpoint are not supported [For custom endpoint with fips enabled and dualstack disabled]");
826        assert_eq!(format!("{}", error), "Invalid Configuration: FIPS and custom endpoint are not supported")
827    }
828
829    /// For custom endpoint with fips disabled and dualstack enabled
830    #[test]
831    fn test_43() {
832        let params = crate::config::endpoint::Params::builder()
833            .region("us-east-1".to_string())
834            .use_fips(false)
835            .use_dual_stack(true)
836            .endpoint("https://example.com".to_string())
837            .build()
838            .expect("invalid params");
839        let resolver = crate::config::endpoint::DefaultResolver::new();
840        let endpoint = resolver.resolve_endpoint(&params);
841        let error = endpoint.expect_err("expected error: Invalid Configuration: Dualstack and custom endpoint are not supported [For custom endpoint with fips disabled and dualstack enabled]");
842        assert_eq!(
843            format!("{}", error),
844            "Invalid Configuration: Dualstack and custom endpoint are not supported"
845        )
846    }
847
848    /// Missing region
849    #[test]
850    fn test_44() {
851        let params = crate::config::endpoint::Params::builder().build().expect("invalid params");
852        let resolver = crate::config::endpoint::DefaultResolver::new();
853        let endpoint = resolver.resolve_endpoint(&params);
854        let error = endpoint.expect_err("expected error: Invalid Configuration: Missing Region [Missing region]");
855        assert_eq!(format!("{}", error), "Invalid Configuration: Missing Region")
856    }
857}
858
859/// Endpoint resolver trait specific to AWS Single Sign-On
860pub trait ResolveEndpoint: ::std::marker::Send + ::std::marker::Sync + ::std::fmt::Debug {
861    /// Resolve an endpoint with the given parameters
862    fn resolve_endpoint<'a>(&'a self, params: &'a crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a>;
863
864    /// Convert this service-specific resolver into a `SharedEndpointResolver`
865    ///
866    /// The resulting resolver will downcast `EndpointResolverParams` into `crate::config::endpoint::Params`.
867    fn into_shared_resolver(self) -> ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver
868    where
869        Self: Sized + 'static,
870    {
871        ::aws_smithy_runtime_api::client::endpoint::SharedEndpointResolver::new(DowncastParams(self))
872    }
873}
874
875#[derive(Debug)]
876struct DowncastParams<T>(T);
877impl<T> ::aws_smithy_runtime_api::client::endpoint::ResolveEndpoint for DowncastParams<T>
878where
879    T: ResolveEndpoint,
880{
881    fn resolve_endpoint<'a>(
882        &'a self,
883        params: &'a ::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams,
884    ) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture<'a> {
885        let ep = match params.get::<crate::config::endpoint::Params>() {
886            Some(params) => self.0.resolve_endpoint(params),
887            None => ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(Err("params of expected type was not present".into())),
888        };
889        ep
890    }
891}
892
893/// The default endpoint resolver
894#[derive(Debug, Default)]
895pub struct DefaultResolver {
896    partition_resolver: crate::endpoint_lib::partition::PartitionResolver,
897}
898
899impl DefaultResolver {
900    /// Create a new endpoint resolver with default settings
901    pub fn new() -> Self {
902        Self {
903            partition_resolver: crate::endpoint_lib::DEFAULT_PARTITION_RESOLVER.clone(),
904        }
905    }
906
907    fn resolve_endpoint(
908        &self,
909        params: &crate::config::endpoint::Params,
910    ) -> Result<::aws_smithy_types::endpoint::Endpoint, ::aws_smithy_runtime_api::box_error::BoxError> {
911        let mut diagnostic_collector = crate::endpoint_lib::diagnostic::DiagnosticCollector::new();
912        Ok(
913            crate::config::endpoint::internals::resolve_endpoint(params, &mut diagnostic_collector, &self.partition_resolver)
914                .map_err(|err| err.with_source(diagnostic_collector.take_last_error()))?,
915        )
916    }
917}
918
919impl crate::config::endpoint::ResolveEndpoint for DefaultResolver {
920    fn resolve_endpoint(&self, params: &crate::config::endpoint::Params) -> ::aws_smithy_runtime_api::client::endpoint::EndpointFuture {
921        ::aws_smithy_runtime_api::client::endpoint::EndpointFuture::ready(self.resolve_endpoint(params))
922    }
923}
924
925#[non_exhaustive]
926#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
927/// Configuration parameters for resolving the correct endpoint
928pub struct Params {
929    /// The AWS region used to dispatch the request.
930    pub(crate) region: ::std::option::Option<::std::string::String>,
931    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
932    pub(crate) use_dual_stack: bool,
933    /// 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.
934    pub(crate) use_fips: bool,
935    /// Override the endpoint used to send this request
936    pub(crate) endpoint: ::std::option::Option<::std::string::String>,
937}
938impl Params {
939    /// Create a builder for [`Params`]
940    pub fn builder() -> crate::config::endpoint::ParamsBuilder {
941        crate::config::endpoint::ParamsBuilder::default()
942    }
943    /// The AWS region used to dispatch the request.
944    pub fn region(&self) -> ::std::option::Option<&str> {
945        self.region.as_deref()
946    }
947    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
948    pub fn use_dual_stack(&self) -> ::std::option::Option<bool> {
949        Some(self.use_dual_stack)
950    }
951    /// 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.
952    pub fn use_fips(&self) -> ::std::option::Option<bool> {
953        Some(self.use_fips)
954    }
955    /// Override the endpoint used to send this request
956    pub fn endpoint(&self) -> ::std::option::Option<&str> {
957        self.endpoint.as_deref()
958    }
959}
960
961/// Builder for [`Params`]
962#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
963pub struct ParamsBuilder {
964    region: ::std::option::Option<::std::string::String>,
965    use_dual_stack: ::std::option::Option<bool>,
966    use_fips: ::std::option::Option<bool>,
967    endpoint: ::std::option::Option<::std::string::String>,
968}
969impl ParamsBuilder {
970    /// Consume this builder, creating [`Params`].
971    pub fn build(self) -> ::std::result::Result<crate::config::endpoint::Params, crate::config::endpoint::InvalidParams> {
972        Ok(
973            #[allow(clippy::unnecessary_lazy_evaluations)]
974            crate::config::endpoint::Params {
975                region: self.region,
976                use_dual_stack: self
977                    .use_dual_stack
978                    .or_else(|| Some(false))
979                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_dual_stack"))?,
980                use_fips: self
981                    .use_fips
982                    .or_else(|| Some(false))
983                    .ok_or_else(|| crate::config::endpoint::InvalidParams::missing("use_fips"))?,
984                endpoint: self.endpoint,
985            },
986        )
987    }
988    /// Sets the value for region
989    ///
990    /// The AWS region used to dispatch the request.
991    pub fn region(mut self, value: impl Into<::std::string::String>) -> Self {
992        self.region = Some(value.into());
993        self
994    }
995
996    /// Sets the value for region
997    ///
998    /// The AWS region used to dispatch the request.
999    pub fn set_region(mut self, param: Option<::std::string::String>) -> Self {
1000        self.region = param;
1001        self
1002    }
1003    /// Sets the value for use_dual_stack
1004    ///
1005    /// When unset, this parameter has a default value of `false`.
1006    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1007    pub fn use_dual_stack(mut self, value: impl Into<bool>) -> Self {
1008        self.use_dual_stack = Some(value.into());
1009        self
1010    }
1011
1012    /// Sets the value for use_dual_stack
1013    ///
1014    /// When unset, this parameter has a default value of `false`.
1015    /// When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
1016    pub fn set_use_dual_stack(mut self, param: Option<bool>) -> Self {
1017        self.use_dual_stack = param;
1018        self
1019    }
1020    /// Sets the value for use_fips
1021    ///
1022    /// When unset, this parameter has a default value of `false`.
1023    /// 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.
1024    pub fn use_fips(mut self, value: impl Into<bool>) -> Self {
1025        self.use_fips = Some(value.into());
1026        self
1027    }
1028
1029    /// Sets the value for use_fips
1030    ///
1031    /// When unset, this parameter has a default value of `false`.
1032    /// 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.
1033    pub fn set_use_fips(mut self, param: Option<bool>) -> Self {
1034        self.use_fips = param;
1035        self
1036    }
1037    /// Sets the value for endpoint
1038    ///
1039    /// Override the endpoint used to send this request
1040    pub fn endpoint(mut self, value: impl Into<::std::string::String>) -> Self {
1041        self.endpoint = Some(value.into());
1042        self
1043    }
1044
1045    /// Sets the value for endpoint
1046    ///
1047    /// Override the endpoint used to send this request
1048    pub fn set_endpoint(mut self, param: Option<::std::string::String>) -> Self {
1049        self.endpoint = param;
1050        self
1051    }
1052}
1053
1054/// An error that occurred during endpoint resolution
1055#[derive(Debug)]
1056pub struct InvalidParams {
1057    field: std::borrow::Cow<'static, str>,
1058}
1059
1060impl InvalidParams {
1061    #[allow(dead_code)]
1062    fn missing(field: &'static str) -> Self {
1063        Self { field: field.into() }
1064    }
1065}
1066
1067impl std::fmt::Display for InvalidParams {
1068    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1069        write!(f, "a required field was missing: `{}`", self.field)
1070    }
1071}
1072
1073impl std::error::Error for InvalidParams {}
1074
1075mod internals;