Return null on absent Policy via VaultSysTemplate.getPolicy(…).

We now return null if a policy was not found. Previously, a VaultException was thrown.

Closes gh-202.
This commit is contained in:
Mark Paluch
2018-02-28 14:36:11 +01:00
parent b3a6322951
commit bc5dec4d88
2 changed files with 22 additions and 4 deletions

View File

@@ -216,11 +216,19 @@ public class VaultSysTemplate implements VaultSysOperations {
return vaultOperations.doWithSession(restOperations -> {
ResponseEntity<VaultResponse> response = restOperations.getForEntity(
"sys/policy/{name}", VaultResponse.class, name);
ResponseEntity<VaultResponse> 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");

View File

@@ -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() {