|
25 | 25 | import java.nio.file.Files; |
26 | 26 | import java.nio.file.Path; |
27 | 27 | import java.util.Optional; |
| 28 | +import java.util.concurrent.atomic.AtomicBoolean; |
28 | 29 | import java.util.function.Supplier; |
29 | 30 | import org.junit.jupiter.api.AfterAll; |
30 | 31 | import org.junit.jupiter.api.BeforeAll; |
|
33 | 34 | import software.amazon.awssdk.profiles.ProfileFile; |
34 | 35 | import software.amazon.awssdk.profiles.ProfileFileSupplier; |
35 | 36 | import software.amazon.awssdk.profiles.ProfileProperty; |
| 37 | +import software.amazon.awssdk.testutils.Waiter; |
36 | 38 | import software.amazon.awssdk.utils.StringInputStream; |
37 | 39 |
|
38 | 40 | /** |
@@ -244,29 +246,28 @@ void resolveCredentials_presentSupplierProfileFile_returnsCredentials() { |
244 | 246 | } |
245 | 247 |
|
246 | 248 | @Test |
247 | | - void resolveCredentials_defaultProfileFileSupplier_refreshesCredentials() throws InterruptedException { |
248 | | - Path credentialsFile = generateTestCredentialsFile("defaultAccessKey", "defaultSecretAccessKey"); |
| 249 | + void resolveCredentials_defaultProfileFileSupplier_refreshesCredentials() { |
| 250 | + AtomicBoolean firstCall = new AtomicBoolean(true); |
| 251 | + ProfileFile file1 = profileFile("[default]\naws_access_key_id = akid1\n" |
| 252 | + + "aws_secret_access_key = sak1\n"); |
| 253 | + ProfileFile file2 = profileFile("[default]\naws_access_key_id = akid2\n" |
| 254 | + + "aws_secret_access_key = sak2\n"); |
| 255 | + Supplier<ProfileFile> refreshingSupplier = () -> firstCall.getAndSet(false) ? file1 : file2; |
249 | 256 |
|
250 | 257 | ProfileCredentialsProvider provider = new ProfileCredentialsProvider |
251 | 258 | .BuilderImpl() |
252 | | - .defaultProfileFileLoader(ProfileFileSupplier.reloadWhenModified(credentialsFile, ProfileFile.Type.CREDENTIALS)) |
| 259 | + .defaultProfileFileLoader(refreshingSupplier) |
253 | 260 | .profileName("default") |
254 | 261 | .build(); |
255 | 262 |
|
256 | 263 | assertThat(provider.resolveCredentials()).satisfies(credentials -> { |
257 | | - assertThat(credentials.accessKeyId()).isEqualTo("defaultAccessKey"); |
258 | | - assertThat(credentials.secretAccessKey()).isEqualTo("defaultSecretAccessKey"); |
| 264 | + assertThat(credentials.accessKeyId()).isEqualTo("akid1"); |
| 265 | + assertThat(credentials.secretAccessKey()).isEqualTo("sak1"); |
259 | 266 | }); |
260 | 267 |
|
261 | | - // modify the file |
262 | | - generateTestCredentialsFile("updatedAccessKey", "updatedSecretAccessKey"); |
263 | | - |
264 | | - // ProfileFileRefresher has a stale time of 1000 ms. |
265 | | - Thread.sleep(1100); |
266 | | - |
267 | 268 | assertThat(provider.resolveCredentials()).satisfies(credentials -> { |
268 | | - assertThat(credentials.accessKeyId()).isEqualTo("updatedAccessKey"); |
269 | | - assertThat(credentials.secretAccessKey()).isEqualTo("updatedSecretAccessKey"); |
| 269 | + assertThat(credentials.accessKeyId()).isEqualTo("akid2"); |
| 270 | + assertThat(credentials.secretAccessKey()).isEqualTo("sak2"); |
270 | 271 | }); |
271 | 272 | } |
272 | 273 |
|
|
0 commit comments