@@ -742,6 +742,104 @@ public AccessToken refreshAccessToken() throws IOException {
742742 }
743743 }
744744
745+ @ Test
746+ public void getDefaultCredentials_envVarSet_serviceAccountCredentials_correctCredentialInfo () throws IOException {
747+ MockTokenServerTransportFactory transportFactory =
748+ new MockTokenServerTransportFactory ();
749+ transportFactory .transport .addServiceAccount (SA_CLIENT_EMAIL , ACCESS_TOKEN );
750+ InputStream serviceAccountStream =
751+ ServiceAccountCredentialsTest .writeServiceAccountStream (
752+ SA_CLIENT_ID , SA_CLIENT_EMAIL , SA_PRIVATE_KEY_PKCS8 , SA_PRIVATE_KEY_ID );
753+ TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider ();
754+ String serviceAccountPath = tempFilePath ("service_account.json" );
755+ testProvider .addFile (serviceAccountPath , serviceAccountStream );
756+ testProvider .setEnv (DefaultCredentialsProvider .CREDENTIAL_ENV_VAR , serviceAccountPath );
757+
758+ GoogleCredentials credentials = testProvider .getDefaultCredentials (transportFactory );
759+
760+ assertNotNull (credentials );
761+ assertTrue (credentials instanceof ServiceAccountCredentials );
762+ Map <String , String > credentialInfo = credentials .getCredentialInfo ();
763+ assertEquals (
764+ String .format (
765+ "Env Var %s set to %s" ,
766+ DefaultCredentialsProvider .CREDENTIAL_ENV_VAR , serviceAccountPath ),
767+ credentialInfo .get ("Credential Source" ));
768+ assertEquals ("Service Account Credentials" , credentialInfo .get ("Credential Type" ));
769+ assertEquals (SA_CLIENT_EMAIL , credentialInfo .get ("Principal" ));
770+ }
771+
772+ @ Test
773+ public void getDefaultCredentials_envVarSet_userCredential_correctCredentialInfo () throws IOException {
774+ InputStream userStream =
775+ UserCredentialsTest .writeUserStream (
776+ USER_CLIENT_ID , USER_CLIENT_SECRET , REFRESH_TOKEN , QUOTA_PROJECT );
777+ TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider ();
778+ String userPath = tempFilePath ("user.json" );
779+ testProvider .addFile (userPath , userStream );
780+ testProvider .setEnv (DefaultCredentialsProvider .CREDENTIAL_ENV_VAR , userPath );
781+ HttpTransportFactory transportFactory =
782+ new MockTokenServerTransportFactory ();
783+
784+ GoogleCredentials credentials = testProvider .getDefaultCredentials (transportFactory );
785+
786+ assertNotNull (credentials );
787+ assertTrue (credentials instanceof UserCredentials );
788+ Map <String , String > credentialInfo = credentials .getCredentialInfo ();
789+ assertEquals (
790+ String .format (
791+ "Env Var %s set to %s" ,
792+ DefaultCredentialsProvider .CREDENTIAL_ENV_VAR , userPath ),
793+ credentialInfo .get ("Credential Source" ));
794+ assertEquals ("User Credentials" , credentialInfo .get ("Credential Type" ));
795+ assertNull (credentialInfo .get ("Principal" ));
796+ }
797+
798+ @ Test
799+ public void getDefaultCredentials_wellKnownFile_userCredential_correctCredentialInfo () throws IOException {
800+ File cloudConfigDir = getTempDirectory ();
801+ InputStream userStream =
802+ UserCredentialsTest .writeUserStream (
803+ USER_CLIENT_ID , USER_CLIENT_SECRET , REFRESH_TOKEN , QUOTA_PROJECT );
804+ File wellKnownFile =
805+ new File (cloudConfigDir , DefaultCredentialsProvider .WELL_KNOWN_CREDENTIALS_FILE );
806+ TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider ();
807+ testProvider .setEnv ("CLOUDSDK_CONFIG" , cloudConfigDir .getAbsolutePath ());
808+ testProvider .addFile (wellKnownFile .getAbsolutePath (), userStream );
809+ HttpTransportFactory transportFactory =
810+ new MockTokenServerTransportFactory ();
811+
812+ GoogleCredentials credentials = testProvider .getDefaultCredentials (transportFactory );
813+
814+ assertNotNull (credentials );
815+ assertTrue (credentials instanceof UserCredentials );
816+ Map <String , String > credentialInfo = credentials .getCredentialInfo ();
817+ assertEquals (
818+ String .format ("Well Known File at %s" , wellKnownFile .getCanonicalPath ()),
819+ credentialInfo .get ("Credential Source" ));
820+ assertEquals ("User Credentials" , credentialInfo .get ("Credential Type" ));
821+ assertNull (credentialInfo .get ("Principal" ));
822+ }
823+
824+ @ Test
825+ public void getDefaultCredentials_computeEngineCredentialscorrectCredentialInfo () throws IOException {
826+ MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory ();
827+ TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider ();
828+ String gceMetadataHost = "192.0.2.0" ;
829+ testProvider .setEnv (DefaultCredentialsProvider .GCE_METADATA_HOST_ENV_VAR , gceMetadataHost );
830+
831+ GoogleCredentials credentials = testProvider .getDefaultCredentials (transportFactory );
832+
833+ assertNotNull (credentials );
834+ assertTrue (credentials instanceof ComputeEngineCredentials );
835+ Map <String , String > credentialInfo = credentials .getCredentialInfo ();
836+ assertEquals (
837+ String .format ("Metadata Server URL set to %s" , gceMetadataHost ),
838+ credentials .getCredentialInfo ().get ("Credential Source" ));
839+ assertEquals ("Compute Engine Credentials" , credentialInfo .get ("Credential Type" ));
840+ assertNull (credentialInfo .get ("Principal" ));
841+ }
842+
745843 /*
746844 * App Engine is detected by calling SystemProperty.environment.value() via Reflection.
747845 * The following mock types simulate the shape and behavior of that call sequence.
@@ -898,4 +996,14 @@ public HttpTransport create() {
898996 return transport ;
899997 }
900998 }
901- }
999+
1000+ static class MockTokenServerTransportFactory implements HttpTransportFactory {
1001+
1002+ MockTokenServerTransport transport = new MockTokenServerTransport ();
1003+
1004+ @ Override
1005+ public HttpTransport create () {
1006+ return transport ;
1007+ }
1008+ }
1009+ }
0 commit comments