1 1 | /*
|
2 2 | * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3 3 | * SPDX-License-Identifier: Apache-2.0
|
4 4 | */
|
5 5 |
|
6 - | use aws_sdk_s3::config::Region;
|
6 + | use aws_sdk_s3::config::{retry::RetryConfig, Region;
|
7 7 | use aws_sdk_s3::{Client, Config};
|
8 8 | use aws_smithy_http_client::test_util::capture_request;
|
9 9 | use aws_smithy_http_client::test_util::dvr::ReplayingClient;
|
10 10 | use aws_smithy_runtime::client::auth::no_auth::NO_AUTH_SCHEME_ID;
|
11 11 | use aws_smithy_runtime::test_util::capture_test_logs::capture_test_logs;
|
12 12 | use aws_smithy_runtime_api::client::auth::AuthSchemeId;
|
13 13 |
|
14 14 | #[tokio::test]
|
15 15 | async fn list_objects() {
|
16 16 | let _logs = capture_test_logs();
|
17 17 |
|
18 18 | let http_client = ReplayingClient::from_file("tests/data/no_auth/list-objects.json").unwrap();
|
19 19 | let config = aws_config::from_env()
|
20 20 | .http_client(http_client.clone())
|
21 21 | .no_credentials()
|
22 22 | .region("us-east-1")
|
23 23 | .load()
|
24 24 | .await;
|
25 25 | let config = Config::from(&config)
|
26 26 | .to_builder()
|
27 27 | .with_test_defaults()
|
28 + | .retry_config(RetryConfig::disabled())
|
28 29 | .build();
|
29 30 | let client = aws_sdk_s3::Client::from_conf(config);
|
30 31 |
|
31 32 | let result = client
|
32 33 | .list_objects()
|
33 34 | .bucket("gdc-organoid-pancreatic-phs001611-2-open")
|
34 35 | .max_keys(3)
|
35 36 | .send()
|
36 37 | .await;
|
37 38 | dbg!(result).expect("success");
|
38 39 |
|
39 40 | http_client
|
40 41 | .relaxed_validate("application/xml")
|
41 42 | .await
|
42 43 | .unwrap();
|
43 44 | }
|
44 45 |
|
45 46 | #[tokio::test]
|
46 47 | async fn list_objects_v2() {
|
47 48 | let _logs = capture_test_logs();
|
48 49 |
|
49 50 | let http_client =
|
50 51 | ReplayingClient::from_file("tests/data/no_auth/list-objects-v2.json").unwrap();
|
51 52 | let config = aws_config::from_env()
|
52 53 | .http_client(http_client.clone())
|
53 54 | .no_credentials()
|
54 55 | .region("us-east-1")
|
55 56 | .load()
|
56 57 | .await;
|
57 58 | let config = Config::from(&config)
|
58 59 | .to_builder()
|
59 60 | .with_test_defaults()
|
61 + | .retry_config(RetryConfig::disabled())
|
60 62 | .build();
|
61 63 | let client = Client::from_conf(config);
|
62 64 |
|
63 65 | let result = client
|
64 66 | .list_objects_v2()
|
65 67 | .bucket("gdc-organoid-pancreatic-phs001611-2-open")
|
66 68 | .max_keys(3)
|
67 69 | .send()
|
68 70 | .await;
|
69 71 | dbg!(result).expect("success");
|
70 72 |
|
71 73 | http_client
|
72 74 | .relaxed_validate("application/xml")
|
73 75 | .await
|
74 76 | .unwrap();
|
75 77 | }
|
76 78 |
|
77 79 | #[tokio::test]
|
78 80 | async fn head_object() {
|
79 81 | let _logs = capture_test_logs();
|
80 82 |
|
81 83 | let http_client = ReplayingClient::from_file("tests/data/no_auth/head-object.json").unwrap();
|
82 84 | let config = aws_config::from_env()
|
83 85 | .http_client(http_client.clone())
|
84 86 | .no_credentials()
|
85 87 | .region("us-east-1")
|
86 88 | .load()
|
87 89 | .await;
|
88 90 | let config = Config::from(&config)
|
89 91 | .to_builder()
|
90 92 | .with_test_defaults()
|
93 + | .retry_config(RetryConfig::disabled())
|
91 94 | .build();
|
92 95 | let client = Client::from_conf(config);
|
93 96 |
|
94 97 | let result = client
|
95 98 | .head_object()
|
96 99 | .bucket("gdc-organoid-pancreatic-phs001611-2-open")
|
97 100 | .key("0431cddc-a418-4a79-a34d-6c041394e8e4/a6ddcc84-8e4d-4c68-885c-2d51168eec97.FPKM-UQ.txt.gz")
|
98 101 | .send()
|
99 102 | .await;
|
100 103 | dbg!(result).expect("success");
|
101 104 |
|
102 105 | http_client
|
103 106 | .relaxed_validate("application/xml")
|
104 107 | .await
|
105 108 | .unwrap();
|
106 109 | }
|
107 110 |
|
108 111 | #[tokio::test]
|
109 112 | async fn get_object() {
|
110 113 | let _logs = capture_test_logs();
|
111 114 |
|
112 115 | let http_client = ReplayingClient::from_file("tests/data/no_auth/get-object.json").unwrap();
|
113 116 | let config = aws_config::from_env()
|
114 117 | .http_client(http_client.clone())
|
115 118 | .no_credentials()
|
116 119 | .region("us-east-1")
|
117 120 | .load()
|
118 121 | .await;
|
119 122 | let config = Config::from(&config)
|
120 123 | .to_builder()
|
121 124 | .with_test_defaults()
|
125 + | .retry_config(RetryConfig::disabled())
|
122 126 | .build();
|
123 127 | let client = Client::from_conf(config);
|
124 128 |
|
125 129 | let result = client
|
126 130 | .get_object()
|
127 131 | .bucket("gdc-organoid-pancreatic-phs001611-2-open")
|
128 132 | .key("0431cddc-a418-4a79-a34d-6c041394e8e4/a6ddcc84-8e4d-4c68-885c-2d51168eec97.FPKM-UQ.txt.gz")
|
129 133 | .send()
|
130 134 | .await;
|
131 135 | dbg!(result).expect("success");
|
132 136 |
|
133 137 | http_client
|
134 138 | .relaxed_validate("application/xml")
|
135 139 | .await
|
136 140 | .unwrap();
|
137 141 | }
|
138 142 |
|
139 143 | #[tracing_test::traced_test]
|
140 144 | #[tokio::test]
|
141 145 | async fn no_auth_should_be_selected_when_no_credentials_is_configured() {
|
142 146 | let (http_client, _) = capture_request(None);
|
143 147 | let config = aws_config::from_env()
|
144 148 | .http_client(http_client)
|
145 149 | .region(Region::new("us-east-2"))
|
146 150 | .no_credentials()
|
147 151 | .load()
|
148 152 | .await;
|
149 153 |
|
150 154 | let client = Client::new(&config);
|
151 155 | let _ = dbg!(
|
152 156 | client
|
153 157 | .list_objects_v2()
|
154 158 | .bucket("doesnotmatter")
|
155 159 | .send()
|
156 160 | .await
|
157 161 | );
|
158 162 |
|
159 163 | assert!(logs_contain(&format!(
|
160 164 | "resolving identity scheme_id=AuthSchemeId {{ scheme_id: \"{auth_scheme_id_str}\" }}",
|
161 165 | auth_scheme_id_str = NO_AUTH_SCHEME_ID.inner(),
|
162 166 | )));
|
163 167 | }
|
164 168 |
|
165 169 | #[tracing_test::traced_test]
|
166 170 | #[tokio::test]
|
167 171 | async fn auth_scheme_preference_specifying_legacy_no_auth_scheme_id_should_be_supported() {
|
168 172 | let (http_client, _) = capture_request(None);
|
169 173 | let conf = Config::builder()
|
170 174 | .http_client(http_client)
|
171 175 | .region(Region::new("us-east-2"))
|
172 176 | .with_test_defaults()
|
177 + | .retry_config(RetryConfig::disabled())
|
173 178 | .auth_scheme_preference([AuthSchemeId::from("no_auth")])
|
174 179 | .build();
|
175 180 | let client = Client::from_conf(conf);
|
176 181 | let _ = client
|
177 182 | .get_object()
|
178 183 | .bucket("arn:aws:s3::123456789012:accesspoint/mfzwi23gnjvgw.mrap")
|
179 184 | .key("doesnotmatter")
|
180 185 | .send()
|
181 186 | .await;
|
182 187 |
|