diff --git a/spring-credhub-cloud-connector/src/main/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessor.java b/spring-credhub-cloud-connector/src/main/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessor.java index 760b9b6..018e9f6 100644 --- a/spring-credhub-cloud-connector/src/main/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessor.java +++ b/spring-credhub-cloud-connector/src/main/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessor.java @@ -45,9 +45,8 @@ public class CredHubInterpolationServiceDataPostProcessor implements ServiceData credHubOperations = new CredHubConfiguration().credHubTemplate(); } catch (Exception e) { - logger.log(Level.INFO, "CredHubOperations cannot be initialized, " + - "disabling processing of service data: " - + e.getMessage()); + logger.log(Level.WARNING, "CredHubOperations cannot be initialized, " + + "disabling processing of service data", e); } } @@ -75,10 +74,15 @@ public class CredHubInterpolationServiceDataPostProcessor implements ServiceData return serviceData; } - VcapServicesData interpolatedData = credHubOperations - .interpolateServiceData(connectorsToCredHub(serviceData)); + try { + VcapServicesData interpolatedData = credHubOperations + .interpolateServiceData(connectorsToCredHub(serviceData)); - return credHubToConnectors(interpolatedData); + return credHubToConnectors(interpolatedData); + } catch (Exception e) { + logger.log(Level.WARNING, "Error interpolating service data from CredHub.", e); + return serviceData; + } } /** diff --git a/spring-credhub-cloud-connector/src/test/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessorTests.java b/spring-credhub-cloud-connector/src/test/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessorTests.java index f29cd7d..27efb88 100644 --- a/spring-credhub-cloud-connector/src/test/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessorTests.java +++ b/spring-credhub-cloud-connector/src/test/java/org/springframework/credhub/cloud/CredHubInterpolationServiceDataPostProcessorTests.java @@ -31,9 +31,12 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.cloud.cloudfoundry.CloudFoundryRawServiceData; +import org.springframework.credhub.core.CredHubException; import org.springframework.credhub.core.CredHubOperations; import org.springframework.credhub.support.VcapServicesData; +import org.springframework.http.HttpStatus; +import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.verifyZeroInteractions; @@ -59,6 +62,20 @@ public class CredHubInterpolationServiceDataPostProcessorTests { assertThat(actual, matchesContent(interpolatedServiceData)); } + @Test + public void processServiceDataWithCredHubError() { + CloudFoundryRawServiceData rawServiceData = buildRawServiceData(); + + when(credHubOperations.interpolateServiceData(argThat(matchesContent(rawServiceData)))) + .thenThrow(new CredHubException(HttpStatus.UNAUTHORIZED)); + + CredHubInterpolationServiceDataPostProcessor processor = + new CredHubInterpolationServiceDataPostProcessor(credHubOperations); + + CloudFoundryRawServiceData actual = processor.process(rawServiceData); + assertThat(actual, equalTo(rawServiceData)); + } + @Test public void processServiceDataWithInitializationError() { CredHubInterpolationServiceDataPostProcessor processor = @@ -81,6 +98,7 @@ public class CredHubInterpolationServiceDataPostProcessorTests { private Matcher matchesContent(final VcapServicesData expected) { return new BaseMatcher() { @Override + @SuppressWarnings("unchecked") public boolean matches(Object actual) { return mapsAreEquivalent((Map) actual, expected); }