Skip to content

Commit fb75239

Browse files
authoredJan 17, 2024
fix: refactor compute and cloudshell credentials to pass quota project to base class (#1284)
* fix:refactor compute and cloudshell credentials to pass quota project to base class * rebase * remove protected * remove empty line * Add tests * format fix
1 parent a7a8d7a commit fb75239

File tree

3 files changed

+54
-3
lines changed

3 files changed

+54
-3
lines changed
 

‎oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,9 @@ public static CloudShellCredentials create(int authPort) {
6767
return CloudShellCredentials.newBuilder().setAuthPort(authPort).build();
6868
}
6969

70-
private CloudShellCredentials(int authPort) {
71-
this.authPort = authPort;
70+
private CloudShellCredentials(Builder builder) {
71+
super(builder);
72+
this.authPort = builder.getAuthPort();
7273
}
7374

7475
protected int getAuthPort() {
@@ -139,13 +140,19 @@ public Builder setAuthPort(int authPort) {
139140
return this;
140141
}
141142

143+
@CanIgnoreReturnValue
144+
public Builder setQuotaProjectId(String quotaProjectId) {
145+
super.quotaProjectId = quotaProjectId;
146+
return this;
147+
}
148+
142149
public int getAuthPort() {
143150
return authPort;
144151
}
145152

146153
@Override
147154
public CloudShellCredentials build() {
148-
return new CloudShellCredentials(authPort);
155+
return new CloudShellCredentials(this);
149156
}
150157
}
151158
}

‎oauth2_http/javatests/com/google/auth/oauth2/CloudShellCredentialsTest.java

+16
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,20 @@ public void serialize() throws IOException, ClassNotFoundException {
124124
assertEquals(credentials.toString(), deserializedCredentials.toString());
125125
assertSame(deserializedCredentials.clock, Clock.SYSTEM);
126126
}
127+
128+
@Test
129+
public void toBuilder() {
130+
CloudShellCredentials credentials =
131+
CloudShellCredentials.newBuilder()
132+
.setAuthPort(42)
133+
.setQuotaProjectId("quota-project")
134+
.build();
135+
136+
assertEquals(42, credentials.getAuthPort());
137+
assertEquals("quota-project", credentials.getQuotaProjectId());
138+
139+
CloudShellCredentials secondCredentials = credentials.toBuilder().build();
140+
141+
assertEquals(credentials, secondCredentials);
142+
}
127143
}

‎oauth2_http/javatests/com/google/auth/oauth2/DefaultCredentialsProviderTest.java

+28
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,34 @@ public void getDefaultCredentials_quota_project() throws IOException {
460460
testUserProvidesToken(testProvider, USER_CLIENT_ID, USER_CLIENT_SECRET, REFRESH_TOKEN);
461461
}
462462

463+
@Test
464+
public void getDefaultCredentials_compute_quotaProject() throws IOException {
465+
MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory();
466+
transportFactory.transport.setAccessToken(ACCESS_TOKEN);
467+
TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider();
468+
testProvider.setEnv(
469+
DefaultCredentialsProvider.QUOTA_PROJECT_ENV_VAR, QUOTA_PROJECT_FROM_ENVIRONMENT);
470+
471+
GoogleCredentials defaultCredentials = testProvider.getDefaultCredentials(transportFactory);
472+
473+
assertTrue(defaultCredentials instanceof ComputeEngineCredentials);
474+
assertEquals(QUOTA_PROJECT_FROM_ENVIRONMENT, defaultCredentials.getQuotaProjectId());
475+
}
476+
477+
@Test
478+
public void getDefaultCredentials_cloudshell_quotaProject() throws IOException {
479+
MockHttpTransportFactory transportFactory = new MockHttpTransportFactory();
480+
TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider();
481+
testProvider.setEnv(DefaultCredentialsProvider.CLOUD_SHELL_ENV_VAR, "4");
482+
testProvider.setEnv(
483+
DefaultCredentialsProvider.QUOTA_PROJECT_ENV_VAR, QUOTA_PROJECT_FROM_ENVIRONMENT);
484+
485+
GoogleCredentials defaultCredentials = testProvider.getDefaultCredentials(transportFactory);
486+
487+
assertTrue(defaultCredentials instanceof CloudShellCredentials);
488+
assertEquals(QUOTA_PROJECT_FROM_ENVIRONMENT, defaultCredentials.getQuotaProjectId());
489+
}
490+
463491
@Test
464492
public void getDefaultCredentials_envNoGceCheck_noGceRequest() throws IOException {
465493
MockRequestCountingTransportFactory transportFactory =

0 commit comments

Comments
 (0)
Please sign in to comment.