@@ -345,6 +345,73 @@ public void getAwsSecurityCredentials_fromMetadataServer_noUrlProvided() {
345345 }
346346 }
347347
348+ @ Test
349+ public void getAwsRegion_awsRegionEnvironmentVariable () throws IOException {
350+ TestEnvironmentProvider environmentProvider = new TestEnvironmentProvider ();
351+ environmentProvider .setEnv ("AWS_REGION" , "region" );
352+ environmentProvider .setEnv ("AWS_DEFAULT_REGION" , "defaultRegion" );
353+
354+ MockExternalAccountCredentialsTransportFactory transportFactory =
355+ new MockExternalAccountCredentialsTransportFactory ();
356+ AwsCredentials awsCredentials =
357+ (AwsCredentials )
358+ AwsCredentials .newBuilder (AWS_CREDENTIAL )
359+ .setHttpTransportFactory (transportFactory )
360+ .setCredentialSource (buildAwsCredentialSource (transportFactory ))
361+ .setEnvironmentProvider (environmentProvider )
362+ .build ();
363+
364+ String region = awsCredentials .getAwsRegion ();
365+
366+ // Should attempt to retrieve the region from AWS_REGION env var first.
367+ // Metadata server would return us-east-1b.
368+ assertEquals ("region" , region );
369+ }
370+
371+ @ Test
372+ public void getAwsRegion_awsDefaultRegionEnvironmentVariable () throws IOException {
373+ TestEnvironmentProvider environmentProvider = new TestEnvironmentProvider ();
374+ environmentProvider .setEnv ("AWS_DEFAULT_REGION" , "defaultRegion" );
375+
376+ MockExternalAccountCredentialsTransportFactory transportFactory =
377+ new MockExternalAccountCredentialsTransportFactory ();
378+ AwsCredentials awsCredentials =
379+ (AwsCredentials )
380+ AwsCredentials .newBuilder (AWS_CREDENTIAL )
381+ .setHttpTransportFactory (transportFactory )
382+ .setCredentialSource (buildAwsCredentialSource (transportFactory ))
383+ .setEnvironmentProvider (environmentProvider )
384+ .build ();
385+
386+ String region = awsCredentials .getAwsRegion ();
387+
388+ // Should attempt to retrieve the region from DEFAULT_AWS_REGION before calling the metadata
389+ // server. Metadata server would return us-east-1b.
390+ assertEquals ("defaultRegion" , region );
391+ }
392+
393+ @ Test
394+ public void getAwsRegion_metadataServer () throws IOException {
395+ MockExternalAccountCredentialsTransportFactory transportFactory =
396+ new MockExternalAccountCredentialsTransportFactory ();
397+ AwsCredentials awsCredentials =
398+ (AwsCredentials )
399+ AwsCredentials .newBuilder (AWS_CREDENTIAL )
400+ .setHttpTransportFactory (transportFactory )
401+ .setCredentialSource (buildAwsCredentialSource (transportFactory ))
402+ .build ();
403+
404+ String region = awsCredentials .getAwsRegion ();
405+
406+ // Should retrieve the region from the Metadata server.
407+ String expectedRegion =
408+ transportFactory
409+ .transport
410+ .getAwsRegion ()
411+ .substring (0 , transportFactory .transport .getAwsRegion ().length () - 1 );
412+ assertEquals (expectedRegion , region );
413+ }
414+
348415 @ Test
349416 public void createdScoped_clonedCredentialWithAddedScopes () {
350417 AwsCredentials credentials =
0 commit comments