Skip to content

Commit cb07bd4

Browse files
authored
fix: Allow quota project to be used in combination with null credentials (#1688)
1 parent 0b9976f commit cb07bd4

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public static ClientContext create(StubSettings settings) throws IOException {
167167

168168
Credentials credentials = settings.getCredentialsProvider().getCredentials();
169169

170-
if (settings.getQuotaProjectId() != null) {
170+
if (settings.getQuotaProjectId() != null && credentials != null) {
171171
// If the quotaProjectId is set, wrap original credentials with correct quotaProjectId as
172172
// QuotaProjectIdHidingCredentials.
173173
// Ensure that a custom set quota project id takes priority over one detected by credentials.

gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java

+21
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import com.google.api.gax.core.ExecutorProvider;
4242
import com.google.api.gax.core.FixedCredentialsProvider;
4343
import com.google.api.gax.core.FixedExecutorProvider;
44+
import com.google.api.gax.core.NoCredentialsProvider;
4445
import com.google.api.gax.rpc.mtls.MtlsProvider;
4546
import com.google.api.gax.rpc.mtls.MtlsProvider.MtlsEndpointUsagePolicy;
4647
import com.google.api.gax.rpc.testing.FakeChannel;
@@ -533,6 +534,26 @@ public Credentials getCredentials() throws IOException {
533534
assertThat(clientContext.getCredentials().getRequestMetadata(null)).isEqualTo(metaData);
534535
}
535536

537+
@Test
538+
public void testQuotaProjectId_worksWithNullCredentials() throws IOException {
539+
final String QUOTA_PROJECT_ID = "quota_project_id";
540+
541+
final InterceptingExecutor executor = new InterceptingExecutor(1);
542+
final FakeTransportChannel transportChannel = FakeTransportChannel.create(new FakeChannel());
543+
final FakeTransportProvider transportProvider =
544+
new FakeTransportProvider(
545+
transportChannel, executor, true, null, Mockito.mock(Credentials.class));
546+
547+
final FakeClientSettings.Builder settingsBuilder = new FakeClientSettings.Builder();
548+
549+
settingsBuilder
550+
.setTransportChannelProvider(transportProvider)
551+
.setCredentialsProvider(NoCredentialsProvider.create())
552+
.setQuotaProjectId(QUOTA_PROJECT_ID);
553+
554+
assertThat(ClientContext.create(settingsBuilder.build()).getCredentials()).isNull();
555+
}
556+
536557
@Test
537558
public void testUserAgentInternalOnly() throws Exception {
538559
TransportChannelProvider transportChannelProvider =

0 commit comments

Comments
 (0)