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

Commit 2778372

Browse files
committed
hopefully fixed IT tests
# Conflicts: # google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITMutableCredentialsTest.java
1 parent bbfb3e7 commit 2778372

2 files changed

Lines changed: 51 additions & 44 deletions

File tree

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.auth.CredentialTypeForMetrics;
3030
import com.google.auth.RequestMetadataCallback;
3131
import com.google.auth.oauth2.ServiceAccountCredentials;
32+
import com.google.cloud.spanner.SpannerOptions;
3233
import java.io.IOException;
3334
import java.net.URI;
3435
import java.util.*;
@@ -76,6 +77,25 @@ public void testCreateMutableCredentials() throws IOException {
7677
verify(initialScopedCredentials, times(1)).refresh();
7778
}
7879

80+
@Test
81+
public void testCreateMutableCredentialsWithDefaultScopes() throws IOException {
82+
Set<String> defaultScopes = SpannerOptions.getDefaultInstance().getScopes();
83+
when(initialCredentials.createScoped(defaultScopes)).thenReturn(initialScopedCredentials);
84+
when(initialScopedCredentials.getAuthenticationType()).thenReturn(initialAuthType);
85+
when(initialScopedCredentials.getRequestMetadata(any(URI.class))).thenReturn(initialMetadata);
86+
when(initialScopedCredentials.getUniverseDomain()).thenReturn(initialUniverseDomain);
87+
when(initialScopedCredentials.getMetricsCredentialType())
88+
.thenReturn(initialMetricsCredentialType);
89+
when(initialScopedCredentials.hasRequestMetadata()).thenReturn(true);
90+
when(initialScopedCredentials.hasRequestMetadataOnly()).thenReturn(true);
91+
92+
MutableCredentials credentials = new MutableCredentials(initialCredentials);
93+
URI testUri = URI.create("https://spanner.googleapis.com");
94+
95+
validateInitialDelegatedCredentialsAreSet(credentials, testUri);
96+
verify(initialCredentials).createScoped(defaultScopes);
97+
}
98+
7999
@Test
80100
public void testUpdateMutableCredentials() throws IOException {
81101
setupInitialCredentials();
@@ -106,7 +126,7 @@ public void testUpdateMutableCredentials() throws IOException {
106126
}
107127

108128
@Test(expected = IllegalArgumentException.class)
109-
public void testCreateMutableCredentialsEmptyScopes() {
129+
public void testCreateMutableCredentialsEmptyScopesThrowsError() {
110130
new MutableCredentials(initialCredentials, Collections.emptySet());
111131
}
112132

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/it/ITMutableCredentialsTest.java

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
package com.google.cloud.spanner.connection.it;
1818

1919
import static org.junit.Assert.*;
20+
import static org.junit.Assume.assumeTrue;
2021

21-
import com.google.api.gax.core.FixedCredentialsProvider;
2222
import com.google.auth.oauth2.GoogleCredentials;
2323
import com.google.auth.oauth2.ServiceAccountCredentials;
2424
import com.google.cloud.spanner.*;
@@ -37,72 +37,59 @@
3737
@Category(SerialIntegrationTest.class)
3838
@RunWith(JUnit4.class)
3939
public class ITMutableCredentialsTest {
40-
private static final String MISSING_PERM_KEY =
41-
"/com/google/cloud/spanner/connection/test-key-missing-permissions.json";
4240

43-
private static final String INVALID_KEY = "/com/google/cloud/spanner/connection/test-key.json";
41+
private static final String INVALID_CERT_PATH =
42+
"/com/google/cloud/spanner/connection/test-key.json";
4443

4544
@Test
4645
public void testMutableCredentialsUpdateAuthorizationForRunningClient() throws IOException {
47-
System.out.println("property" + System.getenv("GOOGLE_ACCOUNT_CREDENTIALS"));
48-
GoogleCredentials missingPermissionCredentials;
49-
try (InputStream stream =
50-
Files.newInputStream(
51-
Paths.get("/tmpfs/src/gfile/secret_manager/java-it-service-account"))) {
52-
missingPermissionCredentials = GoogleCredentials.fromStream(stream);
46+
GoogleCredentials validCredentials;
47+
48+
// accept cert path overridden by environment variable for local testing
49+
if (System.getenv("GOOGLE_ACCOUNT_CREDENTIALS") != null) {
50+
try (InputStream stream =
51+
Files.newInputStream(Paths.get(System.getenv("GOOGLE_ACCOUNT_CREDENTIALS")))) {
52+
validCredentials = GoogleCredentials.fromStream(stream);
53+
}
54+
} else {
55+
validCredentials = GoogleCredentials.getApplicationDefault();
5356
}
57+
58+
// credentials must be ServiceAccountCredentials
59+
assumeTrue(validCredentials instanceof ServiceAccountCredentials);
60+
5461
ServiceAccountCredentials invalidCredentials;
55-
try (InputStream stream = ITMutableCredentialsTest.class.getResourceAsStream(INVALID_KEY)) {
62+
try (InputStream stream =
63+
ITMutableCredentialsTest.class.getResourceAsStream(INVALID_CERT_PATH)) {
5664
invalidCredentials = ServiceAccountCredentials.fromStream(stream);
5765
}
5866

59-
// create MutableCredentials first default account credentials
67+
// create MutableCredentials first with valid credentials
6068
MutableCredentials mutableCredentials =
61-
new MutableCredentials((ServiceAccountCredentials) missingPermissionCredentials);
69+
new MutableCredentials((ServiceAccountCredentials) validCredentials);
6270

63-
System.out.println("missingPermissionCredentials " + missingPermissionCredentials);
71+
System.out.println("validCredentials " + validCredentials);
6472

65-
System.out.println("application default " + GoogleCredentials.getApplicationDefault());
6673
SpannerOptions options =
6774
SpannerOptions.newBuilder()
68-
.setEmulatorHost(null)
69-
.setCredentials(FixedCredentialsProvider.create(mutableCredentials).getCredentials())
75+
.setEmulatorHost(
76+
null) // this setting is required otherwise SpannerOptions overrides credentials to
77+
// NoCredentials
78+
.setCredentials(mutableCredentials)
7079
.build();
7180
System.out.println("initial credentials " + options.getCredentials());
72-
System.out.println("default projecct" + options.getProjectId());
81+
ProjectName projectName = ProjectName.of(options.getProjectId());
7382
try (Spanner spanner = options.getService();
7483
InstanceAdminClient instanceAdminClient = spanner.createInstanceAdminClient()) {
75-
String project = "gcloud-devel";
76-
String instance = "java-client-integration-tests";
77-
try {
78-
listInstances(instanceAdminClient, options.getProjectId(), instance);
79-
// fail("Expected PERMISSION_DENIED");
80-
} catch (Exception e) {
81-
// specifically validate the permission denied error message
82-
System.out.println("exception " + e.getMessage());
83-
assertTrue(e.getMessage().contains("PERMISSION_DENIED"));
84-
assertFalse(e.getMessage().contains("UNAUTHENTICATED"));
85-
}
86-
87-
// update mutableCredentials now to use an invalid credential
84+
instanceAdminClient.listInstances(projectName);
85+
// update mutableCredentials now to use an invalid credentials
8886
mutableCredentials.updateCredentials(invalidCredentials);
8987
try {
90-
listInstances(instanceAdminClient, options.getProjectId(), instance);
88+
instanceAdminClient.listInstances(projectName);
9189
fail("Expected UNAUTHENTICATED after switching to invalid credentials");
9290
} catch (Exception e) {
9391
assertTrue(e.getMessage().contains("UNAUTHENTICATED"));
94-
assertFalse(e.getMessage().contains("PERMISSION_DENIED"));
9592
}
9693
}
9794
}
98-
99-
private static void listInstances(
100-
InstanceAdminClient instanceAdminClient, String projectId, String instanceId) {
101-
InstanceAdminClient.ListInstancesPagedResponse response =
102-
instanceAdminClient.listInstances(ProjectName.of(projectId));
103-
104-
for (InstanceAdminClient.ListInstancesPage page : response.iteratePages()) {
105-
// no-op
106-
}
107-
}
10895
}

0 commit comments

Comments
 (0)