2626import static org .mockito .Mockito .verify ;
2727import static org .mockito .Mockito .when ;
2828
29+ import com .google .auth .CredentialTypeForMetrics ;
30+ import com .google .auth .RequestMetadataCallback ;
2931import com .google .auth .oauth2 .ServiceAccountCredentials ;
3032import java .io .IOException ;
3133import java .net .URI ;
3234import java .util .Arrays ;
3335import java .util .Collections ;
3436import java .util .List ;
3537import java .util .Map ;
38+ import java .util .concurrent .Executor ;
3639import org .junit .Test ;
3740import org .junit .runner .RunWith ;
3841import org .junit .runners .JUnit4 ;
@@ -50,22 +53,29 @@ public class MutableCredentialsTest {
5053 Collections .singletonMap ("Authorization" , Collections .singletonList ("v2" ));
5154 String initialAuthType = "auth-1" ;
5255 String updatedAuthType = "auth-2" ;
56+ String initialUniverseDomain = "googleapis.com" ;
57+ String updatedUniverseDomain = "abc.goog" ;
58+ CredentialTypeForMetrics initialMetricsCredentialType =
59+ CredentialTypeForMetrics .SERVICE_ACCOUNT_CREDENTIALS_JWT ;
60+ CredentialTypeForMetrics updatedMetricsCredentialType =
61+ CredentialTypeForMetrics .SERVICE_ACCOUNT_CREDENTIALS_AT ;
5362
5463 @ Test
5564 public void testCreateMutableCredentials () throws IOException {
5665 setupInitialCredentials ();
5766
5867 MutableCredentials credentials = new MutableCredentials (initialCredentials , scopes );
68+ URI testUri = URI .create ("https://spanner.googleapis.com" );
69+ Executor executor = mock (Executor .class );
70+ RequestMetadataCallback callback = mock (RequestMetadataCallback .class );
5971
60- assertEquals (initialAuthType , credentials .getAuthenticationType ());
61- assertTrue (credentials .hasRequestMetadata ());
62- assertTrue (credentials .hasRequestMetadataOnly ());
63- assertEquals (
64- initialMetadata ,
65- credentials .getRequestMetadata (URI .create ("https://spanner.googleapis.com" )));
72+ validateInitialDelegatedCredentialsAreSet (credentials , testUri );
73+
74+ credentials .getRequestMetadata (testUri , executor , callback );
6675
6776 credentials .refresh ();
6877
78+ verify (initialScopedCredentials , times (1 )).getRequestMetadata (testUri , executor , callback );
6979 verify (initialScopedCredentials , times (1 )).refresh ();
7080 }
7181
@@ -75,25 +85,58 @@ public void testUpdateMutableCredentials() throws IOException {
7585 setupUpdatedCredentials ();
7686
7787 MutableCredentials credentials = new MutableCredentials (initialCredentials , scopes );
88+ URI testUri = URI .create ("https://example.com" );
89+ Executor executor = mock (Executor .class );
90+ RequestMetadataCallback callback = mock (RequestMetadataCallback .class );
7891
79- assertEquals ( initialAuthType , credentials . getAuthenticationType () );
92+ validateInitialDelegatedCredentialsAreSet ( credentials , testUri );
8093
8194 credentials .updateCredentials (updatedCredentials );
8295
8396 assertEquals (updatedAuthType , credentials .getAuthenticationType ());
8497 assertFalse (credentials .hasRequestMetadata ());
8598 assertFalse (credentials .hasRequestMetadataOnly ());
86- assertSame (updatedMetadata , credentials .getRequestMetadata (URI .create ("https://example.com" )));
99+ assertSame (updatedMetadata , credentials .getRequestMetadata (testUri ));
100+ assertEquals (updatedUniverseDomain , credentials .getUniverseDomain ());
101+ assertEquals (updatedMetricsCredentialType , credentials .getMetricsCredentialType ());
102+
103+ credentials .getRequestMetadata (testUri , executor , callback );
87104
88105 credentials .refresh ();
89106
107+ verify (updatedScopedCredentials , times (1 )).getRequestMetadata (testUri , executor , callback );
90108 verify (updatedScopedCredentials , times (1 )).refresh ();
91109 }
92110
111+ @ Test
112+ public void testCreateMutableCredentialsNullScopes () throws IOException {
113+ setupInitialCredentials ();
114+
115+ MutableCredentials credentials = new MutableCredentials (initialCredentials , null );
116+ URI testUri = URI .create ("https://spanner.googleapis.com" );
117+
118+ validateInitialDelegatedCredentialsAreSet (credentials , testUri );
119+ }
120+
121+ private void validateInitialDelegatedCredentialsAreSet (
122+ MutableCredentials credentials , URI testUri ) throws IOException {
123+ assertEquals (initialAuthType , credentials .getAuthenticationType ());
124+ assertTrue (credentials .hasRequestMetadata ());
125+ assertTrue (credentials .hasRequestMetadataOnly ());
126+ assertEquals (initialMetadata , credentials .getRequestMetadata (testUri ));
127+ assertEquals (initialUniverseDomain , credentials .getUniverseDomain ());
128+ assertEquals (initialMetricsCredentialType , credentials .getMetricsCredentialType ());
129+ }
130+
93131 private void setupInitialCredentials () throws IOException {
94132 when (initialCredentials .createScoped (scopes )).thenReturn (initialScopedCredentials );
133+ when (initialCredentials .createScoped (Collections .emptyList ()))
134+ .thenReturn (initialScopedCredentials );
95135 when (initialScopedCredentials .getAuthenticationType ()).thenReturn (initialAuthType );
96136 when (initialScopedCredentials .getRequestMetadata (any (URI .class ))).thenReturn (initialMetadata );
137+ when (initialScopedCredentials .getUniverseDomain ()).thenReturn (initialUniverseDomain );
138+ when (initialScopedCredentials .getMetricsCredentialType ())
139+ .thenReturn (initialMetricsCredentialType );
97140 when (initialScopedCredentials .hasRequestMetadata ()).thenReturn (true );
98141 when (initialScopedCredentials .hasRequestMetadataOnly ()).thenReturn (true );
99142 }
@@ -102,6 +145,9 @@ private void setupUpdatedCredentials() throws IOException {
102145 when (updatedCredentials .createScoped (scopes )).thenReturn (updatedScopedCredentials );
103146 when (updatedScopedCredentials .getAuthenticationType ()).thenReturn (updatedAuthType );
104147 when (updatedScopedCredentials .getRequestMetadata (any (URI .class ))).thenReturn (updatedMetadata );
148+ when (updatedScopedCredentials .getUniverseDomain ()).thenReturn (updatedUniverseDomain );
149+ when (updatedScopedCredentials .getMetricsCredentialType ())
150+ .thenReturn (updatedMetricsCredentialType );
105151 when (updatedScopedCredentials .hasRequestMetadata ()).thenReturn (false );
106152 when (updatedScopedCredentials .hasRequestMetadataOnly ()).thenReturn (false );
107153 }
0 commit comments