diff --git a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultSysTemplate.java b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultSysTemplate.java index fe586421..8fba98ed 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/core/VaultSysTemplate.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/core/VaultSysTemplate.java @@ -216,11 +216,19 @@ public class VaultSysTemplate implements VaultSysOperations { return vaultOperations.doWithSession(restOperations -> { - ResponseEntity response = restOperations.getForEntity( - "sys/policy/{name}", VaultResponse.class, name); + ResponseEntity response; - if (response.getStatusCode() == HttpStatus.NOT_FOUND) { - return null; + try { + response = restOperations.getForEntity("sys/policy/{name}", + VaultResponse.class, name); + } + catch (HttpStatusCodeException e) { + + if (e.getStatusCode() == HttpStatus.NOT_FOUND) { + return null; + } + + throw e; } String rules = (String) response.getBody().getRequiredData().get("rules"); diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java index 7372f3e9..56f49ab8 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java @@ -153,6 +153,16 @@ public class VaultSysTemplateIntegrationTests extends IntegrationTestSupport { assertThat(root).isEqualTo(Policy.empty()); } + @Test + public void shouldReadAbsentRootPolicy() { + + assumeTrue(vaultVersion.isGreaterThanOrEqualTo(Version.parse("0.6.1"))); + + Policy root = adminOperations.getPolicy("absent-policy"); + + assertThat(root).isNull(); + } + @Test(expected = UnsupportedOperationException.class) public void shouldReadDefaultPolicy() {