From bc5dec4d8807fb64f6937bff74d638e0c73f5847 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 28 Feb 2018 14:36:11 +0100 Subject: [PATCH] =?UTF-8?q?Return=20null=20on=20absent=20Policy=20via=20Va?= =?UTF-8?q?ultSysTemplate.getPolicy(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now return null if a policy was not found. Previously, a VaultException was thrown. Closes gh-202. --- .../vault/core/VaultSysTemplate.java | 16 ++++++++++++---- .../core/VaultSysTemplateIntegrationTests.java | 10 ++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) 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() {