From 1bb8c191c736cb7d768970e81a36051861c9098f Mon Sep 17 00:00:00 2001 From: Scott Frederick Date: Fri, 17 May 2019 13:41:03 -0500 Subject: [PATCH] Allow empty credential values in requests --- .../credhub/support/CredentialRequest.java | 3 ++ .../json/JsonCredentialRequestUnitTests.java | 29 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/spring-credhub-core/src/main/java/org/springframework/credhub/support/CredentialRequest.java b/spring-credhub-core/src/main/java/org/springframework/credhub/support/CredentialRequest.java index b1ed3dd..f828f4a 100644 --- a/spring-credhub-core/src/main/java/org/springframework/credhub/support/CredentialRequest.java +++ b/spring-credhub-core/src/main/java/org/springframework/credhub/support/CredentialRequest.java @@ -18,6 +18,8 @@ package org.springframework.credhub.support; +import com.fasterxml.jackson.annotation.JsonInclude; + /** * The details of a request to write a new or update an existing credential in CredHub. * @@ -39,6 +41,7 @@ public class CredentialRequest extends CredHubRequest { * * @return the value of the credential */ + @JsonInclude(JsonInclude.Include.NON_NULL) public T getValue() { return this.details; } diff --git a/spring-credhub-core/src/test/java/org/springframework/credhub/support/json/JsonCredentialRequestUnitTests.java b/spring-credhub-core/src/test/java/org/springframework/credhub/support/json/JsonCredentialRequestUnitTests.java index 86bed74..8bd6c22 100644 --- a/spring-credhub-core/src/test/java/org/springframework/credhub/support/json/JsonCredentialRequestUnitTests.java +++ b/spring-credhub-core/src/test/java/org/springframework/credhub/support/json/JsonCredentialRequestUnitTests.java @@ -23,6 +23,9 @@ import org.junit.Test; import org.springframework.credhub.support.CredHubRequestUnitTestsBase; import org.springframework.credhub.support.SimpleCredentialName; import org.springframework.credhub.support.WriteMode; +import org.springframework.credhub.support.json.JsonCredentialRequest.JsonCredentialRequestBuilder; + +import java.util.Collections; import static org.springframework.credhub.support.JsonPathAssert.assertThat; @@ -32,17 +35,18 @@ public class JsonCredentialRequestUnitTests extends CredHubRequestUnitTestsBase public void setUp() { requestBuilder = JsonCredentialRequest.builder() .name(new SimpleCredentialName("example", "credential")) - .value(new JsonCredential() { - { - put("data", "value"); - put("test", true); - } - }) .mode(WriteMode.OVERWRITE); } @Test public void serializeWithJsonValue() { + ((JsonCredentialRequestBuilder) requestBuilder).value(new JsonCredential() { + { + put("data", "value"); + put("test", true); + } + }); + DocumentContext json = toJsonPath(requestBuilder); assertCommonRequestFields(json, null, WriteMode.OVERWRITE, "/example/credential", "json"); @@ -51,4 +55,17 @@ public class JsonCredentialRequestUnitTests extends CredHubRequestUnitTestsBase assertNoPermissions(json); } + + @Test + public void serializeWithEmptyValue() { + ((JsonCredentialRequestBuilder) requestBuilder).value(new JsonCredential() { + }); + + DocumentContext json = toJsonPath(requestBuilder); + + assertCommonRequestFields(json, null, WriteMode.OVERWRITE, "/example/credential", "json"); + assertThat(json).hasPath("$.value").isEqualTo(Collections.EMPTY_MAP); + + assertNoPermissions(json); + } } \ No newline at end of file