From fb75239ead37b6677a392f38ea2ef2012b3f21e0 Mon Sep 17 00:00:00 2001 From: sai-sunder-s <4540365+sai-sunder-s@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:47:45 -0800 Subject: [PATCH] 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 --- .../auth/oauth2/CloudShellCredentials.java | 13 +++++++-- .../oauth2/CloudShellCredentialsTest.java | 16 +++++++++++ .../DefaultCredentialsProviderTest.java | 28 +++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java b/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java index 2baa77f50..c65b0c43d 100644 --- a/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java +++ b/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java @@ -67,8 +67,9 @@ public static CloudShellCredentials create(int authPort) { return CloudShellCredentials.newBuilder().setAuthPort(authPort).build(); } - private CloudShellCredentials(int authPort) { - this.authPort = authPort; + private CloudShellCredentials(Builder builder) { + super(builder); + this.authPort = builder.getAuthPort(); } protected int getAuthPort() { @@ -139,13 +140,19 @@ public Builder setAuthPort(int authPort) { return this; } + @CanIgnoreReturnValue + public Builder setQuotaProjectId(String quotaProjectId) { + super.quotaProjectId = quotaProjectId; + return this; + } + public int getAuthPort() { return authPort; } @Override public CloudShellCredentials build() { - return new CloudShellCredentials(authPort); + return new CloudShellCredentials(this); } } } diff --git a/oauth2_http/javatests/com/google/auth/oauth2/CloudShellCredentialsTest.java b/oauth2_http/javatests/com/google/auth/oauth2/CloudShellCredentialsTest.java index 2dc075f17..e316df4d8 100644 --- a/oauth2_http/javatests/com/google/auth/oauth2/CloudShellCredentialsTest.java +++ b/oauth2_http/javatests/com/google/auth/oauth2/CloudShellCredentialsTest.java @@ -124,4 +124,20 @@ public void serialize() throws IOException, ClassNotFoundException { assertEquals(credentials.toString(), deserializedCredentials.toString()); assertSame(deserializedCredentials.clock, Clock.SYSTEM); } + + @Test + public void toBuilder() { + CloudShellCredentials credentials = + CloudShellCredentials.newBuilder() + .setAuthPort(42) + .setQuotaProjectId("quota-project") + .build(); + + assertEquals(42, credentials.getAuthPort()); + assertEquals("quota-project", credentials.getQuotaProjectId()); + + CloudShellCredentials secondCredentials = credentials.toBuilder().build(); + + assertEquals(credentials, secondCredentials); + } } diff --git a/oauth2_http/javatests/com/google/auth/oauth2/DefaultCredentialsProviderTest.java b/oauth2_http/javatests/com/google/auth/oauth2/DefaultCredentialsProviderTest.java index 1bb44520e..088600e04 100644 --- a/oauth2_http/javatests/com/google/auth/oauth2/DefaultCredentialsProviderTest.java +++ b/oauth2_http/javatests/com/google/auth/oauth2/DefaultCredentialsProviderTest.java @@ -460,6 +460,34 @@ public void getDefaultCredentials_quota_project() throws IOException { testUserProvidesToken(testProvider, USER_CLIENT_ID, USER_CLIENT_SECRET, REFRESH_TOKEN); } + @Test + public void getDefaultCredentials_compute_quotaProject() throws IOException { + MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory(); + transportFactory.transport.setAccessToken(ACCESS_TOKEN); + TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider(); + testProvider.setEnv( + DefaultCredentialsProvider.QUOTA_PROJECT_ENV_VAR, QUOTA_PROJECT_FROM_ENVIRONMENT); + + GoogleCredentials defaultCredentials = testProvider.getDefaultCredentials(transportFactory); + + assertTrue(defaultCredentials instanceof ComputeEngineCredentials); + assertEquals(QUOTA_PROJECT_FROM_ENVIRONMENT, defaultCredentials.getQuotaProjectId()); + } + + @Test + public void getDefaultCredentials_cloudshell_quotaProject() throws IOException { + MockHttpTransportFactory transportFactory = new MockHttpTransportFactory(); + TestDefaultCredentialsProvider testProvider = new TestDefaultCredentialsProvider(); + testProvider.setEnv(DefaultCredentialsProvider.CLOUD_SHELL_ENV_VAR, "4"); + testProvider.setEnv( + DefaultCredentialsProvider.QUOTA_PROJECT_ENV_VAR, QUOTA_PROJECT_FROM_ENVIRONMENT); + + GoogleCredentials defaultCredentials = testProvider.getDefaultCredentials(transportFactory); + + assertTrue(defaultCredentials instanceof CloudShellCredentials); + assertEquals(QUOTA_PROJECT_FROM_ENVIRONMENT, defaultCredentials.getQuotaProjectId()); + } + @Test public void getDefaultCredentials_envNoGceCheck_noGceRequest() throws IOException { MockRequestCountingTransportFactory transportFactory =