Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ apply plugin: 'signing'

group 'com.bettercloud'
archivesBaseName = 'vault-java-driver'
version '3.1.0'
version '3.2.0'
ext.isReleaseVersion = !version.endsWith('SNAPSHOT')

compileJava {
Expand Down Expand Up @@ -177,4 +177,3 @@ uploadArchives {
}
}
}

13 changes: 10 additions & 3 deletions src/main/java/com/bettercloud/vault/api/Logical.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,14 @@ public Logical(final VaultConfig config) {
* @throws VaultException If any errors occurs with the REST request (e.g. non-200 status code, invalid JSON payload, etc), and the maximum number of retries is exceeded.
*/
public LogicalResponse read(final String path) throws VaultException {
return read(path, true);
return read(path, true, true);
}

public LogicalResponse read(final String path, boolean shouldRetry) throws VaultException {
return read(path, shouldRetry, true);
}

public LogicalResponse read(final String path, boolean shouldRetry, boolean isNested) throws VaultException {
int retryCount = 0;
while (true) {
try {
Expand All @@ -70,7 +74,7 @@ public LogicalResponse read(final String path, boolean shouldRetry) throws Vault
+ "\nResponse body: " + new String(restResponse.getBody(), "UTF-8"), restResponse.getStatus());
}

return new LogicalResponse(restResponse, retryCount);
return new LogicalResponse(restResponse, retryCount, isNested);
} catch (RuntimeException | VaultException | RestException | UnsupportedEncodingException e) {
if(shouldRetry == false)
throw new VaultException(e);
Expand Down Expand Up @@ -143,6 +147,9 @@ public LogicalResponse write(final String path, final Map<String, Object> nameVa
}
}

// nesting data
requestJson = Json.object().add("data", requestJson);

final RestResponse restResponse = new Rest()//NOPMD
.url(config.getAddress() + "/v1/" + path)
.body(requestJson.toString().getBytes("UTF-8"))
Expand Down Expand Up @@ -198,7 +205,7 @@ public List<String> list(final String path) throws VaultException {
final String fullPath = path == null ? "list=true" : path + "?list=true";
LogicalResponse response = null;
try {
response = read(fullPath);
response = read(fullPath, true, false);
} catch (final VaultException e) {
if (e.getHttpStatusCode() != 404) {
throw e;
Expand Down
17 changes: 14 additions & 3 deletions src/main/java/com/bettercloud/vault/response/LogicalResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,13 @@ public class LogicalResponse extends VaultResponse {
* @param retries The number of retry attempts that occurred during the API call (can be zero).
*/
public LogicalResponse(final RestResponse restResponse, final int retries) {
this(restResponse, retries, false);
}

public LogicalResponse(final RestResponse restResponse, final int retries, boolean isNested) {
super(restResponse, retries);
parseMetadataFields();
parseResponseData();
parseResponseData(isNested);
}

public Map<String, String> getData() {
Expand Down Expand Up @@ -57,11 +61,18 @@ private void parseMetadataFields() {
}
}

private void parseResponseData() {
private void parseResponseData(boolean isNested) {
try {
final String jsonString = new String(getRestResponse().getBody(), "UTF-8");
final JsonObject jsonObject = Json.parse(jsonString).asObject();
JsonObject jsonObject = Json.parse(jsonString).asObject();

// get to nested data
data = new HashMap<>();

if(isNested) {
jsonObject = jsonObject.get("data").asObject();
}

for (final JsonObject.Member member : jsonObject.get("data").asObject()) {
final JsonValue jsonValue = member.getValue();
if (jsonValue == null || jsonValue.isNull()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public static void setupClass() throws IOException, InterruptedException, VaultE

final Vault vault = container.getRootVault();

final LogicalResponse roleIdResponse = vault.logical().read("auth/approle/role/testrole/role-id");
final LogicalResponse roleIdResponse = vault.logical().read("auth/approle/role/testrole/role-id", false, false);
appRoleId = roleIdResponse.getData().get("role_id");
final LogicalResponse secretIdResponse = vault.logical().write("auth/approle/role/testrole/secret-id", null);
secretId = secretIdResponse.getData().get("secret_id");
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/com/bettercloud/vault/RetryTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class RetryTests {

@Test
public void testRetries_Read() throws Exception {
final RetriesMockVault retriesMockVault = new RetriesMockVault(5, 200, "{\"lease_id\":\"12345\",\"renewable\":false,\"lease_duration\":10000,\"data\":{\"value\":\"mock\"}}");
final RetriesMockVault retriesMockVault = new RetriesMockVault(5, 200, "{\"lease_id\":\"12345\",\"renewable\":false,\"lease_duration\":10000,\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpMockVault(retriesMockVault);
server.start();

Expand Down
18 changes: 9 additions & 9 deletions src/test/java/com/bettercloud/vault/SSLTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class SSLTests {

@Test
public void testSslVerify_Enabled_Get() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand All @@ -44,7 +44,7 @@ public void testSslVerify_Enabled_Get() throws Exception {

@Test(expected = VaultException.class)
public void testSslVerify_Disabled_Get() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand Down Expand Up @@ -99,7 +99,7 @@ public void testSslVerify_Disabled_Post() throws Exception {

@Test
public void testSslPem_File() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand Down Expand Up @@ -127,7 +127,7 @@ public void testSslPem_File() throws Exception {

@Test
public void testSslPem_Resource_Get() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand Down Expand Up @@ -162,7 +162,7 @@ public void testSslPem_Resource_Post() throws Exception {

@Test
public void testSslPem_UTF8() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand All @@ -189,7 +189,7 @@ public void testSslPem_UTF8() throws Exception {

@Test
public void testSslJks_loadTrustStoreFromClasspath() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand Down Expand Up @@ -220,7 +220,7 @@ public void testSslJks_loadTrustStoreFromFile() throws Exception {
outputStream.write(buffer, 0, noOfBytes);
}

final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand All @@ -237,7 +237,7 @@ public void testSslJks_loadTrustStoreFromFile() throws Exception {

@Test
public void testSslJks_loadTrustStoreFromMemory() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand All @@ -257,7 +257,7 @@ public void testSslJks_loadTrustStoreFromMemory() throws Exception {

@Test
public void testSslJks_loadKeyStoreAndTrustStore() throws Exception {
final MockVault mockVault = new MockVault(200, "{\"data\":{\"value\":\"mock\"}}");
final MockVault mockVault = new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpsMockVault(mockVault);
server.start();

Expand Down
8 changes: 4 additions & 4 deletions src/test/java/com/bettercloud/vault/TimeoutTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class TimeoutTests {
@Test
public void testOpenTimeout_WithinThreshold() throws Exception {
// Mock Vault takes 2 seconds to respond
final OpenTimeoutsMockVault openTimeoutsMockVault = new OpenTimeoutsMockVault(2, 200, "{\"data\":{\"value\":\"mock\"}}");
final OpenTimeoutsMockVault openTimeoutsMockVault = new OpenTimeoutsMockVault(2, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpMockVault(openTimeoutsMockVault);
server.start();

Expand All @@ -37,7 +37,7 @@ public void testOpenTimeout_WithinThreshold() throws Exception {
@Test(expected = VaultException.class)
public void testOpenTimeout_BeyondThreshold() throws Exception {
// Mock Vault takes 2 seconds to respond
final OpenTimeoutsMockVault openTimeoutsMockVault = new OpenTimeoutsMockVault(2, 200, "{\"data\":{\"value\":\"mock\"}}");
final OpenTimeoutsMockVault openTimeoutsMockVault = new OpenTimeoutsMockVault(2, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpMockVault(openTimeoutsMockVault);
server.start();

Expand All @@ -61,7 +61,7 @@ public void testOpenTimeout_BeyondThreshold() throws Exception {
@Test
public void testReadTimeout_WithinThreshold() throws Exception {
// Mock Vault takes 2 seconds to respond
final ReadTimeoutsMockVault readTimeoutsMockVault = new ReadTimeoutsMockVault(2, 200, "{\"data\":{\"value\":\"mock\"}}");
final ReadTimeoutsMockVault readTimeoutsMockVault = new ReadTimeoutsMockVault(2, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpMockVault(readTimeoutsMockVault);
server.start();

Expand All @@ -82,7 +82,7 @@ public void testReadTimeout_WithinThreshold() throws Exception {
@Test(expected = VaultException.class)
public void testReadTimeout_BeyondThreshold() throws Exception {
// Mock Vault takes 2 seconds to respond
final ReadTimeoutsMockVault readTimeoutsMockVault = new ReadTimeoutsMockVault(3, 200, "{\"data\":{\"value\":\"mock\"}}");
final ReadTimeoutsMockVault readTimeoutsMockVault = new ReadTimeoutsMockVault(3, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}");
final Server server = VaultTestUtils.initHttpMockVault(readTimeoutsMockVault);
server.start();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
* <blockquote>
* <pre>{@code
* final Server server = new Server(8999);
* server.setHandler( new MockVault(200, "{\"data\":{\"value\":\"mock\"}}") );
* server.setHandler( new MockVault(200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}") );
* server.start();
*
* final VaultConfig vaultConfig = new VaultConfig().address("http://127.0.0.1:8999").token("mock_token").build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
* <blockquote>
* <pre>{@code
* final Server server = new Server(8999);
* server.setHandler( new OpenTimeoutsMockVault(2, 200, "{\"data\":{\"value\":\"mock\"}}") );
* server.setHandler( new OpenTimeoutsMockVault(2, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}") );
* server.start();
*
* final VaultConfig vaultConfig = new VaultConfig("http://127.0.0.1:8999", "mock_token");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* <blockquote>
* <pre>{@code
* final Server server = new Server(8999);
* server.setHandler( new ReadTimeoutsMockVault(2, 200, "{\"data\":{\"value\":\"mock\"}}") );
* server.setHandler( new ReadTimeoutsMockVault(2, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}") );
* server.start();
*
* final VaultConfig vaultConfig = new VaultConfig("http://127.0.0.1:8999", "mock_token");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
* <blockquote>
* <pre>{@code
* final Server server = new Server(8999);
* server.setHandler( new RetriesMockVault(5, 200, "{\"data\":{\"value\":\"mock\"}}") );
* server.setHandler( new RetriesMockVault(5, 200, "{\"data\":{\"data\":{\"value\":\"mock\"}}}") );
* server.start();
*
* final VaultConfig vaultConfig = new VaultConfig("http://127.0.0.1:8999", "mock_token");
Expand Down