Skip to content
This repository was archived by the owner on Apr 7, 2026. It is now read-only.

Commit 74995fe

Browse files
committed
added missing override methods
1 parent 1a302e8 commit 74995fe

2 files changed

Lines changed: 78 additions & 9 deletions

File tree

google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/MutableCredentials.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@
1515
*/
1616
package com.google.cloud.spanner.connection;
1717

18+
import com.google.auth.CredentialTypeForMetrics;
1819
import com.google.auth.Credentials;
20+
import com.google.auth.RequestMetadataCallback;
1921
import com.google.auth.oauth2.ServiceAccountCredentials;
2022
import java.io.IOException;
2123
import java.net.URI;
24+
import java.util.Collections;
2225
import java.util.List;
2326
import java.util.Map;
27+
import java.util.concurrent.Executor;
2428

2529
/**
2630
* A mutable {@link Credentials} implementation that delegates authentication behavior to a scoped
@@ -40,7 +44,11 @@ public class MutableCredentials extends Credentials {
4044
private final List<String> scopes;
4145

4246
public MutableCredentials(ServiceAccountCredentials credentials, List<String> scopes) {
43-
this.scopes = new java.util.ArrayList<>(scopes);
47+
if (scopes != null) {
48+
this.scopes = new java.util.ArrayList<>(scopes);
49+
} else {
50+
this.scopes = Collections.emptyList();
51+
}
4452
delegate = (ServiceAccountCredentials) credentials.createScoped(this.scopes);
4553
}
4654

@@ -81,4 +89,19 @@ public boolean hasRequestMetadataOnly() {
8189
public void refresh() throws IOException {
8290
delegate.refresh();
8391
}
92+
93+
@Override
94+
public void getRequestMetadata(URI uri, Executor executor, RequestMetadataCallback callback) {
95+
delegate.getRequestMetadata(uri, executor, callback);
96+
}
97+
98+
@Override
99+
public String getUniverseDomain() throws IOException {
100+
return delegate.getUniverseDomain();
101+
}
102+
103+
@Override
104+
public CredentialTypeForMetrics getMetricsCredentialType() {
105+
return delegate.getMetricsCredentialType();
106+
}
84107
}

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MutableCredentialsTest.java

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,16 @@
2626
import static org.mockito.Mockito.verify;
2727
import static org.mockito.Mockito.when;
2828

29+
import com.google.auth.CredentialTypeForMetrics;
30+
import com.google.auth.RequestMetadataCallback;
2931
import com.google.auth.oauth2.ServiceAccountCredentials;
3032
import java.io.IOException;
3133
import java.net.URI;
3234
import java.util.Arrays;
3335
import java.util.Collections;
3436
import java.util.List;
3537
import java.util.Map;
38+
import java.util.concurrent.Executor;
3639
import org.junit.Test;
3740
import org.junit.runner.RunWith;
3841
import 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

Comments
 (0)