From 22af095ae7486390c1fdbc503899ce1e194f79de Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Wed, 27 Nov 2024 11:39:43 -0800 Subject: [PATCH 1/2] fix NPE. --- .../src/main/java/com/google/api/gax/rpc/EndpointContext.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index 0148c07a01..a263561381 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -332,6 +332,10 @@ boolean shouldUseS2A() { return false; } + if (Strings.isNullOrEmpty(mtlsEndpoint())) { + return false; + } + // mTLS via S2A is not supported in any universe other than googleapis.com. return mtlsEndpoint().contains(Credentials.GOOGLE_DEFAULT_UNIVERSE); } From d462650f11c7e2b2c0d3ba2622faaab612aaa687 Mon Sep 17 00:00:00 2001 From: Riya Mehta Date: Mon, 6 Jan 2025 17:33:11 -0800 Subject: [PATCH 2/2] add test. --- .../google/api/gax/rpc/EndpointContextTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java index 5561427dde..79be69d386 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/EndpointContextTest.java @@ -508,6 +508,20 @@ void shouldUseS2A_customEndpointSetViaTransportChannelProvider_returnsFalse() th Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); } + @Test + void shouldUseS2A_mtlsEndpointNull_returnsFalse() throws IOException { + EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class); + Mockito.when(envProvider.getenv(EndpointContext.S2A_ENV_ENABLE_USE_S2A)).thenReturn("true"); + defaultEndpointContextBuilder = + defaultEndpointContextBuilder + .setEnvProvider(envProvider) + .setClientSettingsEndpoint("") + .setTransportChannelProviderEndpoint("") + .setUsingGDCH(false) + .setMtlsEndpoint(null); + Truth.assertThat(defaultEndpointContextBuilder.shouldUseS2A()).isFalse(); + } + @Test void shouldUseS2A_mtlsEndpointEmpty_returnsFalse() throws IOException { EnvironmentProvider envProvider = Mockito.mock(EnvironmentProvider.class);