Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
622b13f508
|
|||
0f0b008f2f
|
|||
34322b389c
|
|||
7a813cdda3
|
|||
d9dbdad75b
|
|||
c97308fb4f
|
|||
fea27910bb
|
|||
4d79ef6634
|
|||
402567a0db
|
|||
00422ea00c
|
|||
01e1c6e8c7
|
|||
e322a74818
|
|||
f9fe57230f
|
|||
e0c33b51e4
|
|||
5e6dcc64cd
|
|||
70b7338f3e
|
|||
489e450dc8
|
|||
909eab762c
|
|||
abba4dff93
|
|||
712fab04e1
|
|||
39ac32a2f6
|
@ -25,7 +25,7 @@ steps:
|
|||||||
- name: setup-vault
|
- name: setup-vault
|
||||||
image: alpine:latest
|
image: alpine:latest
|
||||||
environment:
|
environment:
|
||||||
VAULT_VERSION: 1.12.0
|
VAULT_VERSION: 1.13.3
|
||||||
commands:
|
commands:
|
||||||
- wget -q -O vault_$${VAULT_VERSION}_linux_amd64.zip https://releases.hashicorp.com/vault/$${VAULT_VERSION}/vault_$${VAULT_VERSION}_linux_amd64.zip
|
- wget -q -O vault_$${VAULT_VERSION}_linux_amd64.zip https://releases.hashicorp.com/vault/$${VAULT_VERSION}/vault_$${VAULT_VERSION}_linux_amd64.zip
|
||||||
- wget -q -O - https://releases.hashicorp.com/vault/$${VAULT_VERSION}/vault_$${VAULT_VERSION}_SHA256SUMS | grep linux_amd64 | sha256sum -c
|
- wget -q -O - https://releases.hashicorp.com/vault/$${VAULT_VERSION}/vault_$${VAULT_VERSION}_SHA256SUMS | grep linux_amd64 | sha256sum -c
|
||||||
@ -40,7 +40,7 @@ steps:
|
|||||||
- name: unit-integration-tests
|
- name: unit-integration-tests
|
||||||
image: maven:3-eclipse-temurin-17
|
image: maven:3-eclipse-temurin-17
|
||||||
environment:
|
environment:
|
||||||
VAULT_VERSION: 1.12.0
|
VAULT_VERSION: 1.13.3
|
||||||
commands:
|
commands:
|
||||||
- export PATH=.bin:$${PATH}
|
- export PATH=.bin:$${PATH}
|
||||||
- mvn -B -P integration-test verify
|
- mvn -B -P integration-test verify
|
||||||
|
9
.github/workflows/ci.yml
vendored
9
.github/workflows/ci.yml
vendored
@ -5,11 +5,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
jdk: [ 11, 17, 19 ]
|
jdk: [ 11, 17, 20 ]
|
||||||
vault: [ '1.2.0', '1.11.4', '1.12.0' ]
|
vault: [ '1.2.0', '1.11.11', '1.13.3' ]
|
||||||
include:
|
include:
|
||||||
- jdk: 17
|
- jdk: 17
|
||||||
vault: '1.11.4'
|
vault: '1.11.11'
|
||||||
analysis: true
|
analysis: true
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@ -40,12 +40,11 @@ jobs:
|
|||||||
if: github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/')
|
if: github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/heads/release/')
|
||||||
run: mvn -B -P coverage verify
|
run: mvn -B -P coverage verify
|
||||||
- name: Analysis
|
- name: Analysis
|
||||||
if: matrix.analysis && github.event_name == 'push'
|
if: matrix.analysis
|
||||||
run: >
|
run: >
|
||||||
mvn -B sonar:sonar
|
mvn -B sonar:sonar
|
||||||
-Dsonar.host.url=https://sonarcloud.io
|
-Dsonar.host.url=https://sonarcloud.io
|
||||||
-Dsonar.organization=stklcode-github
|
-Dsonar.organization=stklcode-github
|
||||||
-Dsonar.login=$SONAR_TOKEN
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
||||||
|
19
.gitignore
vendored
19
.gitignore
vendored
@ -1,5 +1,16 @@
|
|||||||
/target/
|
target/
|
||||||
/*.iml
|
pom.xml.tag
|
||||||
/.idea/
|
pom.xml.releaseBackup
|
||||||
/*.project
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
|
||||||
|
.idea
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
.bin
|
||||||
|
|
||||||
*~
|
*~
|
30
CHANGELOG.md
30
CHANGELOG.md
@ -1,3 +1,33 @@
|
|||||||
|
## 1.1.4 (2023-06-15)
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
* Use `[+-]XX:XX` notation for timezone in date/time parsing
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
* Use explicit UTF-8 encoding for parsing responses
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
* Updated Jackson to 2.15.2
|
||||||
|
|
||||||
|
### Test
|
||||||
|
* Tested against Vault 1.2.0 to 1.13.3
|
||||||
|
|
||||||
|
|
||||||
|
## 1.1.3 (2023-01-31)
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
* AppID components (deprecated since 0.4) are marked for removal with the next major release
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
* Updated Jackson to 2.14.2
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
* Minor internal refactoring
|
||||||
|
|
||||||
|
### Test
|
||||||
|
* Tested against Vault 1.2.0 to 1.12.2
|
||||||
|
|
||||||
|
|
||||||
## 1.1.2 (2022-10-26)
|
## 1.1.2 (2022-10-26)
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
@ -32,7 +32,7 @@ Java Vault Connector is a connector library for [Vault](https://www.vaultproject
|
|||||||
* SQL secret handling
|
* SQL secret handling
|
||||||
* KV v1 and v2 support
|
* KV v1 and v2 support
|
||||||
* Connector Factory with builder pattern
|
* Connector Factory with builder pattern
|
||||||
* Tested against Vault 1.2.0 to 1.12.0
|
* Tested against Vault 1.2 to 1.13
|
||||||
|
|
||||||
|
|
||||||
## Maven Artifact
|
## Maven Artifact
|
||||||
@ -40,7 +40,7 @@ Java Vault Connector is a connector library for [Vault](https://www.vaultproject
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>de.stklcode.jvault</groupId>
|
<groupId>de.stklcode.jvault</groupId>
|
||||||
<artifactId>jvault-connector</artifactId>
|
<artifactId>jvault-connector</artifactId>
|
||||||
<version>1.1.2</version>
|
<version>1.1.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
42
pom.xml
42
pom.xml
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<groupId>de.stklcode.jvault</groupId>
|
<groupId>de.stklcode.jvault</groupId>
|
||||||
<artifactId>jvault-connector</artifactId>
|
<artifactId>jvault-connector</artifactId>
|
||||||
<version>1.1.2</version>
|
<version>1.1.4</version>
|
||||||
|
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
@ -51,7 +51,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
<version>3.10.1</version>
|
<version>3.11.0</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<source>11</source>
|
<source>11</source>
|
||||||
<target>11</target>
|
<target>11</target>
|
||||||
@ -65,17 +65,23 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
<version>3.0.0</version>
|
<version>3.1.1</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-failsafe-plugin</artifactId>
|
<artifactId>maven-failsafe-plugin</artifactId>
|
||||||
<version>2.22.2</version>
|
<version>3.1.2</version>
|
||||||
|
<configuration>
|
||||||
|
<argLine>
|
||||||
|
@{argLine}
|
||||||
|
--add-opens de.stklcode.jvault.connector/de.stklcode.jvault.connector.test=com.fasterxml.jackson.databind
|
||||||
|
</argLine>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-install-plugin</artifactId>
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.1.1</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
@ -92,17 +98,17 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-resources-plugin</artifactId>
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
<version>3.3.0</version>
|
<version>3.3.1</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-source-plugin</artifactId>
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.3.0</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
<version>2.22.2</version>
|
<version>3.1.2</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<argLine>
|
<argLine>
|
||||||
@{argLine}
|
@{argLine}
|
||||||
@ -119,7 +125,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.jacoco</groupId>
|
<groupId>org.jacoco</groupId>
|
||||||
<artifactId>jacoco-maven-plugin</artifactId>
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
<version>0.8.8</version>
|
<version>0.8.10</version>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.sonarsource.scanner.maven</groupId>
|
<groupId>org.sonarsource.scanner.maven</groupId>
|
||||||
@ -134,19 +140,19 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>2.13.4.2</version>
|
<version>2.15.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter</artifactId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<version>5.9.1</version>
|
<version>5.9.3</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
<artifactId>mockito-core</artifactId>
|
<artifactId>mockito-core</artifactId>
|
||||||
<version>4.8.1</version>
|
<version>5.3.1</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -158,19 +164,19 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.tomakehurst</groupId>
|
<groupId>com.github.tomakehurst</groupId>
|
||||||
<artifactId>wiremock-jre8</artifactId>
|
<artifactId>wiremock-jre8</artifactId>
|
||||||
<version>2.34.0</version>
|
<version>2.35.0</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-io</groupId>
|
<groupId>commons-io</groupId>
|
||||||
<artifactId>commons-io</artifactId>
|
<artifactId>commons-io</artifactId>
|
||||||
<version>2.11.0</version>
|
<version>2.13.0</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>nl.jqno.equalsverifier</groupId>
|
<groupId>nl.jqno.equalsverifier</groupId>
|
||||||
<artifactId>equalsverifier</artifactId>
|
<artifactId>equalsverifier</artifactId>
|
||||||
<version>3.10.1</version>
|
<version>3.14.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -215,7 +221,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
<version>3.4.1</version>
|
<version>3.5.0</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<source>11</source>
|
<source>11</source>
|
||||||
</configuration>
|
</configuration>
|
||||||
@ -239,7 +245,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-gpg-plugin</artifactId>
|
<artifactId>maven-gpg-plugin</artifactId>
|
||||||
<version>3.0.1</version>
|
<version>3.1.0</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>sign-artifacts</id>
|
<id>sign-artifacts</id>
|
||||||
@ -310,7 +316,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.owasp</groupId>
|
<groupId>org.owasp</groupId>
|
||||||
<artifactId>dependency-check-maven</artifactId>
|
<artifactId>dependency-check-maven</artifactId>
|
||||||
<version>7.2.1</version>
|
<version>8.2.1</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<goals>
|
<goals>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -41,24 +41,30 @@ import static java.util.Collections.singletonMap;
|
|||||||
* @since 0.1
|
* @since 0.1
|
||||||
*/
|
*/
|
||||||
public class HTTPVaultConnector implements VaultConnector {
|
public class HTTPVaultConnector implements VaultConnector {
|
||||||
private static final String PATH_SEAL_STATUS = "sys/seal-status";
|
private static final String PATH_SYS = "sys";
|
||||||
private static final String PATH_SEAL = "sys/seal";
|
private static final String PATH_SYS_AUTH = PATH_SYS + "/auth";
|
||||||
private static final String PATH_UNSEAL = "sys/unseal";
|
private static final String PATH_RENEW = PATH_SYS + "/leases/renew";
|
||||||
private static final String PATH_RENEW = "sys/leases/renew";
|
private static final String PATH_REVOKE = PATH_SYS + "/leases/revoke/";
|
||||||
private static final String PATH_AUTH = "sys/auth";
|
private static final String PATH_HEALTH = PATH_SYS + "/health";
|
||||||
private static final String PATH_TOKEN = "auth/token";
|
private static final String PATH_SEAL = PATH_SYS + "/seal";
|
||||||
|
private static final String PATH_SEAL_STATUS = PATH_SYS + "/seal-status";
|
||||||
|
private static final String PATH_UNSEAL = PATH_SYS + "/unseal";
|
||||||
|
|
||||||
|
|
||||||
|
private static final String PATH_AUTH = "auth";
|
||||||
|
private static final String PATH_AUTH_TOKEN = PATH_AUTH + "/token";
|
||||||
private static final String PATH_LOOKUP = "/lookup";
|
private static final String PATH_LOOKUP = "/lookup";
|
||||||
private static final String PATH_CREATE = "/create";
|
private static final String PATH_CREATE = "/create";
|
||||||
private static final String PATH_ROLES = "/roles";
|
private static final String PATH_ROLES = "/roles";
|
||||||
private static final String PATH_CREATE_ORPHAN = "/create-orphan";
|
private static final String PATH_CREATE_ORPHAN = "/create-orphan";
|
||||||
private static final String PATH_AUTH_USERPASS = "auth/userpass/login/";
|
private static final String PATH_AUTH_USERPASS = PATH_AUTH + "/userpass/login/";
|
||||||
private static final String PATH_AUTH_APPID = "auth/app-id/";
|
private static final String PATH_AUTH_APPID = PATH_AUTH + "/app-id";
|
||||||
private static final String PATH_AUTH_APPROLE = "auth/approle/";
|
private static final String PATH_AUTH_APPROLE = PATH_AUTH + "/approle";
|
||||||
private static final String PATH_AUTH_APPROLE_ROLE = "auth/approle/role/%s%s";
|
private static final String PATH_AUTH_APPROLE_ROLE = PATH_AUTH_APPROLE + "/role/%s%s";
|
||||||
private static final String PATH_REVOKE = "sys/leases/revoke/";
|
|
||||||
private static final String PATH_HEALTH = "sys/health";
|
|
||||||
private static final String PATH_DATA = "/data/";
|
private static final String PATH_DATA = "/data/";
|
||||||
private static final String PATH_METADATA = "/metadata/";
|
private static final String PATH_METADATA = "/metadata/";
|
||||||
|
private static final String PATH_LOGIN = "/login";
|
||||||
private static final String PATH_DELETE = "/delete/";
|
private static final String PATH_DELETE = "/delete/";
|
||||||
private static final String PATH_UNDELETE = "/undelete/";
|
private static final String PATH_UNDELETE = "/undelete/";
|
||||||
private static final String PATH_DESTROY = "/destroy/";
|
private static final String PATH_DESTROY = "/destroy/";
|
||||||
@ -139,11 +145,10 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final SealResponse unseal(final String key, final Boolean reset) throws VaultConnectorException {
|
public final SealResponse unseal(final String key, final Boolean reset) throws VaultConnectorException {
|
||||||
Map<String, String> param = new HashMap<>(2, 1);
|
Map<String, String> param = mapOfStrings(
|
||||||
param.put("key", key);
|
"key", key,
|
||||||
if (reset != null) {
|
"reset", reset
|
||||||
param.put("reset", reset.toString());
|
);
|
||||||
}
|
|
||||||
|
|
||||||
return request.put(PATH_UNSEAL, param, token, SealResponse.class);
|
return request.put(PATH_UNSEAL, param, token, SealResponse.class);
|
||||||
}
|
}
|
||||||
@ -172,7 +177,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
@Override
|
@Override
|
||||||
public final List<AuthBackend> getAuthBackends() throws VaultConnectorException {
|
public final List<AuthBackend> getAuthBackends() throws VaultConnectorException {
|
||||||
/* Issue request and parse response */
|
/* Issue request and parse response */
|
||||||
AuthMethodsResponse amr = request.get(PATH_AUTH, emptyMap(), token, AuthMethodsResponse.class);
|
AuthMethodsResponse amr = request.get(PATH_SYS_AUTH, emptyMap(), token, AuthMethodsResponse.class);
|
||||||
|
|
||||||
return amr.getSupportedMethods().values().stream().map(AuthMethod::getType).collect(Collectors.toList());
|
return amr.getSupportedMethods().values().stream().map(AuthMethod::getType).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
@ -182,7 +187,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
/* set token */
|
/* set token */
|
||||||
this.token = token;
|
this.token = token;
|
||||||
this.tokenTTL = 0;
|
this.tokenTTL = 0;
|
||||||
TokenResponse res = request.post(PATH_TOKEN + PATH_LOOKUP, emptyMap(), token, TokenResponse.class);
|
TokenResponse res = request.post(PATH_AUTH_TOKEN + PATH_LOOKUP, emptyMap(), token, TokenResponse.class);
|
||||||
authorized = true;
|
authorized = true;
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
@ -196,10 +201,10 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
public final AuthResponse authAppId(final String appID, final String userID) throws VaultConnectorException {
|
public final AuthResponse authAppId(final String appID, final String userID) throws VaultConnectorException {
|
||||||
return queryAuth(
|
return queryAuth(
|
||||||
PATH_AUTH_APPID + "login",
|
PATH_AUTH_APPID + PATH_LOGIN,
|
||||||
Map.of(
|
Map.of(
|
||||||
"app_id", appID,
|
"app_id", appID,
|
||||||
"user_id", userID
|
"user_id", userID
|
||||||
@ -209,12 +214,11 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final AuthResponse authAppRole(final String roleID, final String secretID) throws VaultConnectorException {
|
public final AuthResponse authAppRole(final String roleID, final String secretID) throws VaultConnectorException {
|
||||||
final Map<String, String> payload = new HashMap<>(2, 1);
|
final Map<String, String> payload = mapOfStrings(
|
||||||
payload.put("role_id", roleID);
|
"role_id", roleID,
|
||||||
if (secretID != null) {
|
"secret_id", secretID
|
||||||
payload.put("secret_id", secretID);
|
);
|
||||||
}
|
return queryAuth(PATH_AUTH_APPROLE + PATH_LOGIN, payload);
|
||||||
return queryAuth(PATH_AUTH_APPROLE + "login", payload);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -238,14 +242,14 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
public final boolean registerAppId(final String appID, final String policy, final String displayName)
|
public final boolean registerAppId(final String appID, final String policy, final String displayName)
|
||||||
throws VaultConnectorException {
|
throws VaultConnectorException {
|
||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
/* Issue request and expect code 204 with empty response */
|
/* Issue request and expect code 204 with empty response */
|
||||||
request.postWithoutResponse(
|
request.postWithoutResponse(
|
||||||
PATH_AUTH_APPID + "map/app-id/" + appID,
|
PATH_AUTH_APPID + "/map/app-id/" + appID,
|
||||||
Map.of(
|
Map.of(
|
||||||
"value", policy,
|
"value", policy,
|
||||||
"display_name", displayName
|
"display_name", displayName
|
||||||
@ -257,13 +261,13 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
public final boolean registerUserId(final String appID, final String userID) throws VaultConnectorException {
|
public final boolean registerUserId(final String appID, final String userID) throws VaultConnectorException {
|
||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
/* Issue request and expect code 204 with empty response */
|
/* Issue request and expect code 204 with empty response */
|
||||||
request.postWithoutResponse(
|
request.postWithoutResponse(
|
||||||
PATH_AUTH_APPID + "map/user-id/" + userID,
|
PATH_AUTH_APPID + "/map/user-id/" + userID,
|
||||||
singletonMap("value", appID),
|
singletonMap("value", appID),
|
||||||
token
|
token
|
||||||
);
|
);
|
||||||
@ -384,7 +388,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
SecretListResponse secrets = request.get(
|
SecretListResponse secrets = request.get(
|
||||||
PATH_AUTH_APPROLE + "role?list=true",
|
PATH_AUTH_APPROLE + "/role?list=true",
|
||||||
emptyMap(),
|
emptyMap(),
|
||||||
token,
|
token,
|
||||||
SecretListResponse.class
|
SecretListResponse.class
|
||||||
@ -418,10 +422,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
public final SecretResponse readSecretVersion(final String mount, final String key, final Integer version) throws VaultConnectorException {
|
public final SecretResponse readSecretVersion(final String mount, final String key, final Integer version) throws VaultConnectorException {
|
||||||
requireAuth();
|
requireAuth();
|
||||||
/* Request HTTP response and parse secret metadata */
|
/* Request HTTP response and parse secret metadata */
|
||||||
Map<String, String> args = new HashMap<>(1, 1);
|
Map<String, String> args = mapOfStrings("version", version);
|
||||||
if (version != null) {
|
|
||||||
args.put("version", version.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
return request.get(mount + PATH_DATA + key, args, token, MetaSecretResponse.class);
|
return request.get(mount + PATH_DATA + key, args, token, MetaSecretResponse.class);
|
||||||
}
|
}
|
||||||
@ -438,11 +439,10 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
public void updateSecretMetadata(final String mount, final String key, final Integer maxVersions, final boolean casRequired) throws VaultConnectorException {
|
public void updateSecretMetadata(final String mount, final String key, final Integer maxVersions, final boolean casRequired) throws VaultConnectorException {
|
||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
Map<String, Object> payload = new HashMap<>(2, 1);
|
Map<String, Object> payload = mapOf(
|
||||||
if (maxVersions != null) {
|
"max_versions", maxVersions,
|
||||||
payload.put("max_versions", maxVersions);
|
"cas_required", casRequired
|
||||||
}
|
);
|
||||||
payload.put("cas_required", casRequired);
|
|
||||||
|
|
||||||
write(mount + PATH_METADATA + key, payload);
|
write(mount + PATH_METADATA + key, payload);
|
||||||
}
|
}
|
||||||
@ -456,12 +456,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add CAS value to options map if present.
|
// Add CAS value to options map if present.
|
||||||
Map<String, Object> options;
|
Map<String, Object> options = mapOf("cas", cas);
|
||||||
if (cas != null) {
|
|
||||||
options = singletonMap("cas", cas);
|
|
||||||
} else {
|
|
||||||
options = emptyMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Issue request and parse metadata response */
|
/* Issue request and parse metadata response */
|
||||||
return request.post(
|
return request.post(
|
||||||
@ -572,11 +567,10 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
public final SecretResponse renew(final String leaseID, final Integer increment) throws VaultConnectorException {
|
public final SecretResponse renew(final String leaseID, final Integer increment) throws VaultConnectorException {
|
||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
Map<String, String> payload = new HashMap<>(2, 1);
|
Map<String, String> payload = mapOfStrings(
|
||||||
payload.put("lease_id", leaseID);
|
"lease_id", leaseID,
|
||||||
if (increment != null) {
|
"increment", increment
|
||||||
payload.put("increment", increment.toString());
|
);
|
||||||
}
|
|
||||||
|
|
||||||
/* Issue request and parse secret response */
|
/* Issue request and parse secret response */
|
||||||
return request.put(PATH_RENEW, payload, token, SecretResponse.class);
|
return request.put(PATH_RENEW, payload, token, SecretResponse.class);
|
||||||
@ -584,12 +578,12 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final AuthResponse createToken(final Token token) throws VaultConnectorException {
|
public final AuthResponse createToken(final Token token) throws VaultConnectorException {
|
||||||
return createTokenInternal(token, PATH_TOKEN + PATH_CREATE);
|
return createTokenInternal(token, PATH_AUTH_TOKEN + PATH_CREATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final AuthResponse createToken(final Token token, final boolean orphan) throws VaultConnectorException {
|
public final AuthResponse createToken(final Token token, final boolean orphan) throws VaultConnectorException {
|
||||||
return createTokenInternal(token, PATH_TOKEN + PATH_CREATE_ORPHAN);
|
return createTokenInternal(token, PATH_AUTH_TOKEN + PATH_CREATE_ORPHAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -597,7 +591,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
if (role == null || role.isEmpty()) {
|
if (role == null || role.isEmpty()) {
|
||||||
throw new InvalidRequestException("No role name specified.");
|
throw new InvalidRequestException("No role name specified.");
|
||||||
}
|
}
|
||||||
return createTokenInternal(token, PATH_TOKEN + PATH_CREATE + "/" + role);
|
return createTokenInternal(token, PATH_AUTH_TOKEN + PATH_CREATE + "/" + role);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -632,7 +626,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
|
|
||||||
/* Request HTTP response and parse Secret */
|
/* Request HTTP response and parse Secret */
|
||||||
return request.get(
|
return request.get(
|
||||||
PATH_TOKEN + PATH_LOOKUP,
|
PATH_AUTH_TOKEN + PATH_LOOKUP,
|
||||||
singletonMap("token", token),
|
singletonMap("token", token),
|
||||||
token,
|
token,
|
||||||
TokenResponse.class
|
TokenResponse.class
|
||||||
@ -650,7 +644,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Issue request and expect code 204 with empty response.
|
// Issue request and expect code 204 with empty response.
|
||||||
request.postWithoutResponse(PATH_TOKEN + PATH_ROLES + "/" + name, role, token);
|
request.postWithoutResponse(PATH_AUTH_TOKEN + PATH_ROLES + "/" + name, role, token);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -660,14 +654,14 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
// Request HTTP response and parse response.
|
// Request HTTP response and parse response.
|
||||||
return request.get(PATH_TOKEN + PATH_ROLES + "/" + name, emptyMap(), token, TokenRoleResponse.class);
|
return request.get(PATH_AUTH_TOKEN + PATH_ROLES + "/" + name, emptyMap(), token, TokenRoleResponse.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> listTokenRoles() throws VaultConnectorException {
|
public List<String> listTokenRoles() throws VaultConnectorException {
|
||||||
requireAuth();
|
requireAuth();
|
||||||
|
|
||||||
return list(PATH_TOKEN + PATH_ROLES);
|
return list(PATH_AUTH_TOKEN + PATH_ROLES);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -679,7 +673,7 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Issue request and expect code 204 with empty response.
|
// Issue request and expect code 204 with empty response.
|
||||||
request.deleteWithoutResponse(PATH_TOKEN + PATH_ROLES + "/" + name, token);
|
request.deleteWithoutResponse(PATH_AUTH_TOKEN + PATH_ROLES + "/" + name, token);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -695,4 +689,42 @@ public class HTTPVaultConnector implements VaultConnector {
|
|||||||
throw new AuthorizationRequiredException();
|
throw new AuthorizationRequiredException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a map of non-null {@link String} keys and values
|
||||||
|
*
|
||||||
|
* @param keyValues Key-value tuples as vararg.
|
||||||
|
* @return The map of non-null keys and values.
|
||||||
|
*/
|
||||||
|
private static Map<String, String> mapOfStrings(Object... keyValues) {
|
||||||
|
Map<String, String> map = new HashMap<>(keyValues.length / 2, 1);
|
||||||
|
for (int i = 0; i < keyValues.length -1; i = i + 2) {
|
||||||
|
Object key = keyValues[i];
|
||||||
|
Object val = keyValues[i + 1];
|
||||||
|
if (key instanceof String && val != null) {
|
||||||
|
map.put((String) key, val.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a map of non-null {@link String} keys and {@link Object} values
|
||||||
|
*
|
||||||
|
* @param keyValues Key-value tuples as vararg.
|
||||||
|
* @return The map of non-null keys and values.
|
||||||
|
*/
|
||||||
|
private static Map<String, Object> mapOf(Object... keyValues) {
|
||||||
|
Map<String, Object> map = new HashMap<>(keyValues.length / 2, 1);
|
||||||
|
for (int i = 0; i < keyValues.length; i = i + 2) {
|
||||||
|
Object key = keyValues[i];
|
||||||
|
Object val = keyValues[i + 1];
|
||||||
|
if (key instanceof String && val != null) {
|
||||||
|
map.put((String) key, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -119,9 +119,10 @@ public interface VaultConnector extends AutoCloseable, Serializable {
|
|||||||
* @param userID The User ID
|
* @param userID The User ID
|
||||||
* @return The {@link AuthResponse}
|
* @return The {@link AuthResponse}
|
||||||
* @throws VaultConnectorException on error
|
* @throws VaultConnectorException on error
|
||||||
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole. Consider using {@link #authAppRole} instead.
|
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole. App-ID was removed in Vault 1.12.
|
||||||
|
* Consider using {@link #authAppRole} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
AuthResponse authAppId(final String appID, final String userID) throws VaultConnectorException;
|
AuthResponse authAppId(final String appID, final String userID) throws VaultConnectorException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -155,9 +156,10 @@ public interface VaultConnector extends AutoCloseable, Serializable {
|
|||||||
* @param displayName Arbitrary name to display
|
* @param displayName Arbitrary name to display
|
||||||
* @return {@code true} on success
|
* @return {@code true} on success
|
||||||
* @throws VaultConnectorException on error
|
* @throws VaultConnectorException on error
|
||||||
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole. Consider using {@link #createAppRole} instead.
|
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole. App-ID was removed in Vault 1.12.
|
||||||
|
* Consider using {@link #createAppRole} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
boolean registerAppId(final String appID, final String policy, final String displayName)
|
boolean registerAppId(final String appID, final String policy, final String displayName)
|
||||||
throws VaultConnectorException;
|
throws VaultConnectorException;
|
||||||
|
|
||||||
@ -349,10 +351,10 @@ public interface VaultConnector extends AutoCloseable, Serializable {
|
|||||||
* @param userID The User-ID
|
* @param userID The User-ID
|
||||||
* @return {@code true} on success
|
* @return {@code true} on success
|
||||||
* @throws VaultConnectorException on error
|
* @throws VaultConnectorException on error
|
||||||
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole.
|
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole. App-ID was removed in Vault 1.12.
|
||||||
* Consider using {@link #createAppRoleSecret} instead.
|
* Consider using {@link #createAppRoleSecret} instead.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
boolean registerUserId(final String appID, final String userID) throws VaultConnectorException;
|
boolean registerUserId(final String appID, final String userID) throws VaultConnectorException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -364,9 +366,9 @@ public interface VaultConnector extends AutoCloseable, Serializable {
|
|||||||
* @param userID The User-ID
|
* @param userID The User-ID
|
||||||
* @return {@code true} on success
|
* @return {@code true} on success
|
||||||
* @throws VaultConnectorException on error
|
* @throws VaultConnectorException on error
|
||||||
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole.
|
* @deprecated As of Vault 0.6.1 App-ID is superseded by AppRole. App-ID was removed in Vault 1.12.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "0.4", forRemoval = false)
|
@Deprecated(since = "0.4", forRemoval = true)
|
||||||
default boolean registerAppUserId(final String appID,
|
default boolean registerAppUserId(final String appID,
|
||||||
final String policy,
|
final String policy,
|
||||||
final String displayName,
|
final String displayName,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -399,7 +399,7 @@ public final class RequestHelper implements Serializable {
|
|||||||
* @throws InvalidResponseException on reading errors
|
* @throws InvalidResponseException on reading errors
|
||||||
*/
|
*/
|
||||||
private String handleResult(final HttpResponse<InputStream> response) throws InvalidResponseException {
|
private String handleResult(final HttpResponse<InputStream> response) throws InvalidResponseException {
|
||||||
try (var reader = new BufferedReader(new InputStreamReader(response.body()))) {
|
try (var reader = new BufferedReader(new InputStreamReader(response.body(), UTF_8))) {
|
||||||
return reader.lines().collect(Collectors.joining("\n"));
|
return reader.lines().collect(Collectors.joining("\n"));
|
||||||
} catch (IOException ignored) {
|
} catch (IOException ignored) {
|
||||||
throw new InvalidResponseException(Error.READ_RESPONSE, 200);
|
throw new InvalidResponseException(Error.READ_RESPONSE, 200);
|
||||||
@ -414,7 +414,7 @@ public final class RequestHelper implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private void handleError(final HttpResponse<InputStream> response) throws VaultConnectorException {
|
private void handleError(final HttpResponse<InputStream> response) throws VaultConnectorException {
|
||||||
if (response.body() != null) {
|
if (response.body() != null) {
|
||||||
try (var reader = new BufferedReader(new InputStreamReader(response.body()))) {
|
try (var reader = new BufferedReader(new InputStreamReader(response.body(), UTF_8))) {
|
||||||
var responseString = reader.lines().collect(Collectors.joining("\n"));
|
var responseString = reader.lines().collect(Collectors.joining("\n"));
|
||||||
ErrorResponse er = jsonMapper.readValue(responseString, ErrorResponse.class);
|
ErrorResponse er = jsonMapper.readValue(responseString, ErrorResponse.class);
|
||||||
/* Check for "permission denied" response */
|
/* Check for "permission denied" response */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -24,6 +24,7 @@ package de.stklcode.jvault.connector.model;
|
|||||||
*/
|
*/
|
||||||
public enum AuthBackend {
|
public enum AuthBackend {
|
||||||
TOKEN("token"),
|
TOKEN("token"),
|
||||||
|
@Deprecated(since = "1.1.3", forRemoval = true)
|
||||||
APPID("app-id"),
|
APPID("app-id"),
|
||||||
APPROLE("approle"),
|
APPROLE("approle"),
|
||||||
USERPASS("userpass"),
|
USERPASS("userpass"),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -37,7 +37,7 @@ import java.util.Objects;
|
|||||||
public final class SecretMetadata implements Serializable {
|
public final class SecretMetadata implements Serializable {
|
||||||
private static final long serialVersionUID = 1684891108903409038L;
|
private static final long serialVersionUID = 1684891108903409038L;
|
||||||
|
|
||||||
private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSX");
|
private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX");
|
||||||
|
|
||||||
@JsonProperty("created_time")
|
@JsonProperty("created_time")
|
||||||
private String createdTimeString;
|
private String createdTimeString;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -36,7 +36,7 @@ import java.util.Objects;
|
|||||||
public final class VersionMetadata implements Serializable {
|
public final class VersionMetadata implements Serializable {
|
||||||
private static final long serialVersionUID = -5286693953873839611L;
|
private static final long serialVersionUID = -5286693953873839611L;
|
||||||
|
|
||||||
private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSX");
|
private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX");
|
||||||
|
|
||||||
@JsonProperty("created_time")
|
@JsonProperty("created_time")
|
||||||
private String createdTimeString;
|
private String createdTimeString;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -51,7 +51,7 @@ import static org.junit.jupiter.api.Assumptions.assumeTrue;
|
|||||||
* @since 0.1
|
* @since 0.1
|
||||||
*/
|
*/
|
||||||
class HTTPVaultConnectorIT {
|
class HTTPVaultConnectorIT {
|
||||||
private static String VAULT_VERSION = "1.12.0"; // The vault version this test is supposed to run against.
|
private static String VAULT_VERSION = "1.13.3"; // The vault version this test is supposed to run against.
|
||||||
private static final String KEY1 = "E38bkCm0VhUvpdCKGQpcohhD9XmcHJ/2hreOSY019Lho";
|
private static final String KEY1 = "E38bkCm0VhUvpdCKGQpcohhD9XmcHJ/2hreOSY019Lho";
|
||||||
private static final String KEY2 = "O5OHwDleY3IiPdgw61cgHlhsrEm6tVJkrxhF6QAnILd1";
|
private static final String KEY2 = "O5OHwDleY3IiPdgw61cgHlhsrEm6tVJkrxhF6QAnILd1";
|
||||||
private static final String KEY3 = "mw7Bm3nbt/UWa/juDjjL2EPQ04kiJ0saC5JEXwJvXYsB";
|
private static final String KEY3 = "mw7Bm3nbt/UWa/juDjjL2EPQ04kiJ0saC5JEXwJvXYsB";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package de.stklcode.jvault.connector.model;
|
package de.stklcode.jvault.connector.model;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import nl.jqno.equalsverifier.EqualsVerifier;
|
import nl.jqno.equalsverifier.EqualsVerifier;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -16,6 +17,7 @@ import static org.junit.jupiter.api.Assertions.fail;
|
|||||||
*/
|
*/
|
||||||
public abstract class AbstractModelTest<T> {
|
public abstract class AbstractModelTest<T> {
|
||||||
protected final Class<?> modelClass;
|
protected final Class<?> modelClass;
|
||||||
|
protected final ObjectMapper objectMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test case constructor.
|
* Test case constructor.
|
||||||
@ -24,6 +26,7 @@ public abstract class AbstractModelTest<T> {
|
|||||||
*/
|
*/
|
||||||
protected AbstractModelTest(Class<T> modelClass) {
|
protected AbstractModelTest(Class<T> modelClass) {
|
||||||
this.modelClass = modelClass;
|
this.modelClass = modelClass;
|
||||||
|
this.objectMapper = new ObjectMapper();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package de.stklcode.jvault.connector.model;
|
package de.stklcode.jvault.connector.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -116,16 +115,14 @@ class AppRoleSecretTest extends AbstractModelTest<AppRoleSecret> {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
void jsonTest() throws NoSuchFieldException, IllegalAccessException {
|
void jsonTest() throws NoSuchFieldException, IllegalAccessException {
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
|
|
||||||
// A simple roundtrip first. All set fields should be present afterwards..
|
// A simple roundtrip first. All set fields should be present afterwards..
|
||||||
AppRoleSecret secret = new AppRoleSecret(TEST_ID, TEST_META, TEST_CIDR);
|
AppRoleSecret secret = new AppRoleSecret(TEST_ID, TEST_META, TEST_CIDR);
|
||||||
String secretJson = assertDoesNotThrow(() -> mapper.writeValueAsString(secret), "Serialization failed");
|
String secretJson = assertDoesNotThrow(() -> objectMapper.writeValueAsString(secret), "Serialization failed");
|
||||||
// CIDR list is comma-separated when used as input, but List otherwise, hence convert string to list.
|
// CIDR list is comma-separated when used as input, but List otherwise, hence convert string to list.
|
||||||
String secretJson2 = commaSeparatedToList(secretJson);
|
String secretJson2 = commaSeparatedToList(secretJson);
|
||||||
|
|
||||||
AppRoleSecret secret2 = assertDoesNotThrow(
|
AppRoleSecret secret2 = assertDoesNotThrow(
|
||||||
() -> mapper.readValue(secretJson2, AppRoleSecret.class),
|
() -> objectMapper.readValue(secretJson2, AppRoleSecret.class),
|
||||||
"Deserialization failed"
|
"Deserialization failed"
|
||||||
);
|
);
|
||||||
assertEquals(secret2.getId(), secret.getId());
|
assertEquals(secret2.getId(), secret.getId());
|
||||||
@ -145,9 +142,9 @@ class AppRoleSecretTest extends AbstractModelTest<AppRoleSecret> {
|
|||||||
assumeTrue(secret.getNumUses() == 678);
|
assumeTrue(secret.getNumUses() == 678);
|
||||||
setPrivateField(secret, "ttl", 12345);
|
setPrivateField(secret, "ttl", 12345);
|
||||||
assumeTrue(secret.getTtl() == 12345);
|
assumeTrue(secret.getTtl() == 12345);
|
||||||
String secretJson3 = assertDoesNotThrow(() -> mapper.writeValueAsString(secret), "Serialization failed");
|
String secretJson3 = assertDoesNotThrow(() -> objectMapper.writeValueAsString(secret), "Serialization failed");
|
||||||
secret2 = assertDoesNotThrow(
|
secret2 = assertDoesNotThrow(
|
||||||
() -> mapper.readValue(commaSeparatedToList(secretJson3), AppRoleSecret.class),
|
() -> objectMapper.readValue(commaSeparatedToList(secretJson3), AppRoleSecret.class),
|
||||||
"Deserialization failed"
|
"Deserialization failed"
|
||||||
);
|
);
|
||||||
assertEquals(secret2.getId(), secret.getId());
|
assertEquals(secret2.getId(), secret.getId());
|
||||||
@ -165,7 +162,7 @@ class AppRoleSecretTest extends AbstractModelTest<AppRoleSecret> {
|
|||||||
"\"cidr_list\":[\"203.0.113.0/24\",\"198.51.100.0/24\"],\"secret_id_accessor\":\"TEST_ACCESSOR\"," +
|
"\"cidr_list\":[\"203.0.113.0/24\",\"198.51.100.0/24\"],\"secret_id_accessor\":\"TEST_ACCESSOR\"," +
|
||||||
"\"creation_time\":\"TEST_CREATION\",\"expiration_time\":\"TEST_EXPIRATION\"," +
|
"\"creation_time\":\"TEST_CREATION\",\"expiration_time\":\"TEST_EXPIRATION\"," +
|
||||||
"\"last_updated_time\":\"TEST_LASTUPDATE\",\"secret_id_num_uses\":678,\"secret_id_ttl\":12345}";
|
"\"last_updated_time\":\"TEST_LASTUPDATE\",\"secret_id_num_uses\":678,\"secret_id_ttl\":12345}";
|
||||||
secret2 = assertDoesNotThrow(() -> mapper.readValue(secretJson4, AppRoleSecret.class), "Deserialization failed");
|
secret2 = assertDoesNotThrow(() -> objectMapper.readValue(secretJson4, AppRoleSecret.class), "Deserialization failed");
|
||||||
assertEquals("TEST_ACCESSOR", secret2.getAccessor());
|
assertEquals("TEST_ACCESSOR", secret2.getAccessor());
|
||||||
assertEquals("TEST_CREATION", secret2.getCreationTime());
|
assertEquals("TEST_CREATION", secret2.getCreationTime());
|
||||||
assertEquals("TEST_EXPIRATION", secret2.getExpirationTime());
|
assertEquals("TEST_EXPIRATION", secret2.getExpirationTime());
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model;
|
package de.stklcode.jvault.connector.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -110,7 +109,7 @@ class AppRoleTest extends AbstractModelTest<AppRole> {
|
|||||||
assertNull(role.getTokenType());
|
assertNull(role.getTokenType());
|
||||||
|
|
||||||
// Optional fields should be ignored, so JSON string should only contain role_name.
|
// Optional fields should be ignored, so JSON string should only contain role_name.
|
||||||
assertEquals(JSON_MIN, new ObjectMapper().writeValueAsString(role));
|
assertEquals(JSON_MIN, objectMapper.writeValueAsString(role));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -137,7 +136,7 @@ class AppRoleTest extends AbstractModelTest<AppRole> {
|
|||||||
assertEquals(TOKEN_TYPE.value(), role.getTokenType());
|
assertEquals(TOKEN_TYPE.value(), role.getTokenType());
|
||||||
|
|
||||||
// Verify that all parameters are included in JSON string.
|
// Verify that all parameters are included in JSON string.
|
||||||
assertEquals(JSON_FULL, new ObjectMapper().writeValueAsString(role));
|
assertEquals(JSON_FULL, objectMapper.writeValueAsString(role));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -33,6 +33,7 @@ class AuthBackendTest {
|
|||||||
* Test forType() method.
|
* Test forType() method.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
void forTypeTest() {
|
void forTypeTest() {
|
||||||
assertEquals(AuthBackend.TOKEN, AuthBackend.forType("token"));
|
assertEquals(AuthBackend.TOKEN, AuthBackend.forType("token"));
|
||||||
assertEquals(AuthBackend.APPID, AuthBackend.forType("app-id"));
|
assertEquals(AuthBackend.APPID, AuthBackend.forType("app-id"));
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model;
|
package de.stklcode.jvault.connector.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -133,7 +132,7 @@ class TokenRoleTest extends AbstractModelTest<TokenRole> {
|
|||||||
assertNull(role.getTokenType());
|
assertNull(role.getTokenType());
|
||||||
|
|
||||||
// Optional fields should be ignored, so JSON string should be empty.
|
// Optional fields should be ignored, so JSON string should be empty.
|
||||||
assertEquals("{}", new ObjectMapper().writeValueAsString(role));
|
assertEquals("{}", objectMapper.writeValueAsString(role));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -177,7 +176,7 @@ class TokenRoleTest extends AbstractModelTest<TokenRole> {
|
|||||||
assertEquals(role, new TokenRole());
|
assertEquals(role, new TokenRole());
|
||||||
|
|
||||||
// Optional fields should be ignored, so JSON string should be empty.
|
// Optional fields should be ignored, so JSON string should be empty.
|
||||||
assertEquals("{}", new ObjectMapper().writeValueAsString(role));
|
assertEquals("{}", objectMapper.writeValueAsString(role));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -208,6 +207,6 @@ class TokenRoleTest extends AbstractModelTest<TokenRole> {
|
|||||||
assertEquals(TOKEN_TYPE.value(), role.getTokenType());
|
assertEquals(TOKEN_TYPE.value(), role.getTokenType());
|
||||||
|
|
||||||
// Verify that all parameters are included in JSON string.
|
// Verify that all parameters are included in JSON string.
|
||||||
assertEquals(JSON_FULL, new ObjectMapper().writeValueAsString(role));
|
assertEquals(JSON_FULL, objectMapper.writeValueAsString(role));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model;
|
package de.stklcode.jvault.connector.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -103,7 +102,7 @@ class TokenTest extends AbstractModelTest<Token> {
|
|||||||
assertNull(token.getEntityAlias());
|
assertNull(token.getEntityAlias());
|
||||||
|
|
||||||
// Optional fields should be ignored, so JSON string should be empty.
|
// Optional fields should be ignored, so JSON string should be empty.
|
||||||
assertEquals("{}", new ObjectMapper().writeValueAsString(token));
|
assertEquals("{}", objectMapper.writeValueAsString(token));
|
||||||
|
|
||||||
// Empty builder should be equal to no-arg construction.
|
// Empty builder should be equal to no-arg construction.
|
||||||
assertEquals(token, new Token());
|
assertEquals(token, new Token());
|
||||||
@ -129,7 +128,7 @@ class TokenTest extends AbstractModelTest<Token> {
|
|||||||
assertEquals(PERIOD, token.getPeriod());
|
assertEquals(PERIOD, token.getPeriod());
|
||||||
|
|
||||||
// Verify that all parameters are included in JSON string.
|
// Verify that all parameters are included in JSON string.
|
||||||
assertEquals(JSON_FULL, new ObjectMapper().writeValueAsString(token));
|
assertEquals(JSON_FULL, objectMapper.writeValueAsString(token));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import de.stklcode.jvault.connector.model.AppRole;
|
import de.stklcode.jvault.connector.model.AppRole;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -69,7 +68,7 @@ class AppRoleResponseTest extends AbstractModelTest<AppRoleResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected AppRoleResponse createFull() {
|
protected AppRoleResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(RES_JSON, AppRoleResponse.class);
|
return objectMapper.readValue(RES_JSON, AppRoleResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -92,7 +91,7 @@ class AppRoleResponseTest extends AbstractModelTest<AppRoleResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
AppRoleResponse res = assertDoesNotThrow(
|
AppRoleResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_JSON, AppRoleResponse.class),
|
() -> objectMapper.readValue(RES_JSON, AppRoleResponse.class),
|
||||||
"AuthResponse deserialization failed"
|
"AuthResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import de.stklcode.jvault.connector.model.AuthBackend;
|
import de.stklcode.jvault.connector.model.AuthBackend;
|
||||||
import de.stklcode.jvault.connector.model.response.embedded.AuthMethod;
|
import de.stklcode.jvault.connector.model.response.embedded.AuthMethod;
|
||||||
@ -83,7 +82,7 @@ class AuthMethodsResponseTest extends AbstractModelTest<AuthMethodsResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected AuthMethodsResponse createFull() {
|
protected AuthMethodsResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(RES_JSON, AuthMethodsResponse.class);
|
return objectMapper.readValue(RES_JSON, AuthMethodsResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -106,7 +105,7 @@ class AuthMethodsResponseTest extends AbstractModelTest<AuthMethodsResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
AuthMethodsResponse res = assertDoesNotThrow(
|
AuthMethodsResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_JSON, AuthMethodsResponse.class),
|
() -> objectMapper.readValue(RES_JSON, AuthMethodsResponse.class),
|
||||||
"AuthResponse deserialization failed"
|
"AuthResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import de.stklcode.jvault.connector.model.response.embedded.AuthData;
|
import de.stklcode.jvault.connector.model.response.embedded.AuthData;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -76,7 +75,7 @@ class AuthResponseTest extends AbstractModelTest<AuthResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected AuthResponse createFull() {
|
protected AuthResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(RES_JSON, AuthResponse.class);
|
return objectMapper.readValue(RES_JSON, AuthResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -89,7 +88,7 @@ class AuthResponseTest extends AbstractModelTest<AuthResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
AuthResponse res = assertDoesNotThrow(
|
AuthResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_JSON, AuthResponse.class),
|
() -> objectMapper.readValue(RES_JSON, AuthResponse.class),
|
||||||
"AuthResponse deserialization failed"
|
"AuthResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.exception.InvalidResponseException;
|
import de.stklcode.jvault.connector.exception.InvalidResponseException;
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -52,7 +51,7 @@ class CredentialsResponseTest extends AbstractModelTest<CredentialsResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected CredentialsResponse createFull() {
|
protected CredentialsResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(JSON, CredentialsResponse.class);
|
return objectMapper.readValue(JSON, CredentialsResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -72,7 +71,7 @@ class CredentialsResponseTest extends AbstractModelTest<CredentialsResponse> {
|
|||||||
assertNull(res.getPassword(), "Password not present in data map should not return anything");
|
assertNull(res.getPassword(), "Password not present in data map should not return anything");
|
||||||
|
|
||||||
res = assertDoesNotThrow(
|
res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(JSON, CredentialsResponse.class),
|
() -> objectMapper.readValue(JSON, CredentialsResponse.class),
|
||||||
"Deserialization of CredentialsResponse failed"
|
"Deserialization of CredentialsResponse failed"
|
||||||
);
|
);
|
||||||
assertEquals(VAL_USER, res.getUsername(), "Incorrect username");
|
assertEquals(VAL_USER, res.getUsername(), "Incorrect username");
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -44,7 +43,7 @@ class ErrorResponseTest extends AbstractModelTest<ErrorResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected ErrorResponse createFull() {
|
protected ErrorResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(JSON, ErrorResponse.class);
|
return objectMapper.readValue(JSON, ErrorResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -56,16 +55,15 @@ class ErrorResponseTest extends AbstractModelTest<ErrorResponse> {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
ObjectMapper om = new ObjectMapper();
|
|
||||||
ErrorResponse res = assertDoesNotThrow(
|
ErrorResponse res = assertDoesNotThrow(
|
||||||
() -> om.readValue(JSON, ErrorResponse.class),
|
() -> objectMapper.readValue(JSON, ErrorResponse.class),
|
||||||
"ErrorResponse deserialization failed"
|
"ErrorResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
assertEquals(List.of(ERROR_1, ERROR_2), res.getErrors(), "Unexpected error messages");
|
assertEquals(List.of(ERROR_1, ERROR_2), res.getErrors(), "Unexpected error messages");
|
||||||
assertEquals(
|
assertEquals(
|
||||||
JSON,
|
JSON,
|
||||||
assertDoesNotThrow(() -> om.writeValueAsString(res), "ErrorResponse serialization failed"),
|
assertDoesNotThrow(() -> objectMapper.writeValueAsString(res), "ErrorResponse serialization failed"),
|
||||||
"Unexpected JSON string after serialization"
|
"Unexpected JSON string after serialization"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -74,13 +72,13 @@ class ErrorResponseTest extends AbstractModelTest<ErrorResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void testToString() {
|
void testToString() {
|
||||||
ErrorResponse res = assertDoesNotThrow(
|
ErrorResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(JSON, ErrorResponse.class),
|
() -> objectMapper.readValue(JSON, ErrorResponse.class),
|
||||||
"ErrorResponse deserialization failed"
|
"ErrorResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertEquals(ERROR_1, res.toString());
|
assertEquals(ERROR_1, res.toString());
|
||||||
|
|
||||||
res = assertDoesNotThrow(
|
res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(JSON_EMPTY, ErrorResponse.class),
|
() -> objectMapper.readValue(JSON_EMPTY, ErrorResponse.class),
|
||||||
"ErrorResponse deserialization failed with empty list"
|
"ErrorResponse deserialization failed with empty list"
|
||||||
);
|
);
|
||||||
assertEquals("error response", res.toString());
|
assertEquals("error response", res.toString());
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -61,7 +60,7 @@ class HealthResponseTest extends AbstractModelTest<HealthResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected HealthResponse createFull() {
|
protected HealthResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(RES_JSON, HealthResponse.class);
|
return objectMapper.readValue(RES_JSON, HealthResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -74,7 +73,7 @@ class HealthResponseTest extends AbstractModelTest<HealthResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
HealthResponse res = assertDoesNotThrow(
|
HealthResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_JSON, HealthResponse.class),
|
() -> objectMapper.readValue(RES_JSON, HealthResponse.class),
|
||||||
"Health deserialization failed"
|
"Health deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -40,7 +39,7 @@ class HelpResponseTest extends AbstractModelTest<HelpResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected HelpResponse createFull() {
|
protected HelpResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(JSON, HelpResponse.class);
|
return objectMapper.readValue(JSON, HelpResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -52,16 +51,15 @@ class HelpResponseTest extends AbstractModelTest<HelpResponse> {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
ObjectMapper om = new ObjectMapper();
|
|
||||||
HelpResponse res = assertDoesNotThrow(
|
HelpResponse res = assertDoesNotThrow(
|
||||||
() -> om.readValue(JSON, HelpResponse.class),
|
() -> objectMapper.readValue(JSON, HelpResponse.class),
|
||||||
"HelpResponse deserialization failed"
|
"HelpResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
assertEquals(HELP, res.getHelp(), "Unexpected help text");
|
assertEquals(HELP, res.getHelp(), "Unexpected help text");
|
||||||
assertEquals(
|
assertEquals(
|
||||||
JSON,
|
JSON,
|
||||||
assertDoesNotThrow(() -> om.writeValueAsString(res), "HelpResponse serialization failed"),
|
assertDoesNotThrow(() -> objectMapper.writeValueAsString(res), "HelpResponse serialization failed"),
|
||||||
"Unexpected JSON string after serialization"
|
"Unexpected JSON string after serialization"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -89,7 +88,7 @@ class MetaSecretResponseTest extends AbstractModelTest<MetaSecretResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected MetaSecretResponse createFull() {
|
protected MetaSecretResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(SECRET_JSON_V2, MetaSecretResponse.class);
|
return objectMapper.readValue(SECRET_JSON_V2, MetaSecretResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -103,7 +102,7 @@ class MetaSecretResponseTest extends AbstractModelTest<MetaSecretResponse> {
|
|||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
// KV v2 secret.
|
// KV v2 secret.
|
||||||
MetaSecretResponse res = assertDoesNotThrow(
|
MetaSecretResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(SECRET_JSON_V2, MetaSecretResponse.class),
|
() -> objectMapper.readValue(SECRET_JSON_V2, MetaSecretResponse.class),
|
||||||
"SecretResponse deserialization failed"
|
"SecretResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertSecretData(res);
|
assertSecretData(res);
|
||||||
@ -117,7 +116,7 @@ class MetaSecretResponseTest extends AbstractModelTest<MetaSecretResponse> {
|
|||||||
|
|
||||||
// Deleted KV v2 secret.
|
// Deleted KV v2 secret.
|
||||||
res = assertDoesNotThrow(
|
res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(SECRET_JSON_V2_2, MetaSecretResponse.class),
|
() -> objectMapper.readValue(SECRET_JSON_V2_2, MetaSecretResponse.class),
|
||||||
"SecretResponse deserialization failed"
|
"SecretResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertSecretData(res);
|
assertSecretData(res);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -71,7 +70,7 @@ class MetadataResponseTest extends AbstractModelTest<MetadataResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected MetadataResponse createFull() {
|
protected MetadataResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(META_JSON, MetadataResponse.class);
|
return objectMapper.readValue(META_JSON, MetadataResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -84,7 +83,7 @@ class MetadataResponseTest extends AbstractModelTest<MetadataResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
MetadataResponse res = assertDoesNotThrow(
|
MetadataResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(META_JSON, MetadataResponse.class),
|
() -> objectMapper.readValue(META_JSON, MetadataResponse.class),
|
||||||
"MetadataResponse deserialization failed"
|
"MetadataResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -60,7 +59,7 @@ class PlainSecretResponseTest extends AbstractModelTest<PlainSecretResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected PlainSecretResponse createFull() {
|
protected PlainSecretResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(SECRET_JSON, PlainSecretResponse.class);
|
return objectMapper.readValue(SECRET_JSON, PlainSecretResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -73,7 +72,7 @@ class PlainSecretResponseTest extends AbstractModelTest<PlainSecretResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
SecretResponse res = assertDoesNotThrow(
|
SecretResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(SECRET_JSON, PlainSecretResponse.class),
|
() -> objectMapper.readValue(SECRET_JSON, PlainSecretResponse.class),
|
||||||
"SecretResponse deserialization failed"
|
"SecretResponse deserialization failed"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -80,7 +79,7 @@ class SealResponseTest extends AbstractModelTest<SealResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected SealResponse createFull() {
|
protected SealResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(RES_UNSEALED, SealResponse.class);
|
return objectMapper.readValue(RES_UNSEALED, SealResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -94,7 +93,7 @@ class SealResponseTest extends AbstractModelTest<SealResponse> {
|
|||||||
void jsonRoundtripSealed() {
|
void jsonRoundtripSealed() {
|
||||||
// First test sealed Vault's response.
|
// First test sealed Vault's response.
|
||||||
SealResponse res = assertDoesNotThrow(
|
SealResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_SEALED, SealResponse.class),
|
() -> objectMapper.readValue(RES_SEALED, SealResponse.class),
|
||||||
"SealResponse deserialization failed"
|
"SealResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
@ -116,7 +115,7 @@ class SealResponseTest extends AbstractModelTest<SealResponse> {
|
|||||||
|
|
||||||
// Not test unsealed Vault's response.
|
// Not test unsealed Vault's response.
|
||||||
res = assertDoesNotThrow(
|
res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_UNSEALED, SealResponse.class),
|
() -> objectMapper.readValue(RES_UNSEALED, SealResponse.class),
|
||||||
"SealResponse deserialization failed"
|
"SealResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -54,7 +53,7 @@ class SecretListResponseTest extends AbstractModelTest<SecretListResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected SecretListResponse createFull() {
|
protected SecretListResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(JSON, SecretListResponse.class);
|
return objectMapper.readValue(JSON, SecretListResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -67,7 +66,7 @@ class SecretListResponseTest extends AbstractModelTest<SecretListResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void getKeysTest() {
|
void getKeysTest() {
|
||||||
SecretListResponse res = assertDoesNotThrow(
|
SecretListResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(JSON, SecretListResponse.class),
|
() -> objectMapper.readValue(JSON, SecretListResponse.class),
|
||||||
"SecretListResponse deserialization failed"
|
"SecretListResponse deserialization failed"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -50,7 +49,7 @@ class SecretVersionResponseTest extends AbstractModelTest<SecretVersionResponse>
|
|||||||
@Override
|
@Override
|
||||||
protected SecretVersionResponse createFull() {
|
protected SecretVersionResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(META_JSON, SecretVersionResponse.class);
|
return objectMapper.readValue(META_JSON, SecretVersionResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -63,7 +62,7 @@ class SecretVersionResponseTest extends AbstractModelTest<SecretVersionResponse>
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
SecretVersionResponse res = assertDoesNotThrow(
|
SecretVersionResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(META_JSON, SecretVersionResponse.class),
|
() -> objectMapper.readValue(META_JSON, SecretVersionResponse.class),
|
||||||
"SecretVersionResponse deserialization failed"
|
"SecretVersionResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -17,7 +17,6 @@
|
|||||||
package de.stklcode.jvault.connector.model.response;
|
package de.stklcode.jvault.connector.model.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
import de.stklcode.jvault.connector.model.AbstractModelTest;
|
||||||
import de.stklcode.jvault.connector.model.response.embedded.TokenData;
|
import de.stklcode.jvault.connector.model.response.embedded.TokenData;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -96,7 +95,7 @@ class TokenResponseTest extends AbstractModelTest<TokenResponse> {
|
|||||||
@Override
|
@Override
|
||||||
protected TokenResponse createFull() {
|
protected TokenResponse createFull() {
|
||||||
try {
|
try {
|
||||||
return new ObjectMapper().readValue(RES_JSON, TokenResponse.class);
|
return objectMapper.readValue(RES_JSON, TokenResponse.class);
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
fail("Creation of full model instance failed", e);
|
fail("Creation of full model instance failed", e);
|
||||||
return null;
|
return null;
|
||||||
@ -119,7 +118,7 @@ class TokenResponseTest extends AbstractModelTest<TokenResponse> {
|
|||||||
@Test
|
@Test
|
||||||
void jsonRoundtrip() {
|
void jsonRoundtrip() {
|
||||||
TokenResponse res = assertDoesNotThrow(
|
TokenResponse res = assertDoesNotThrow(
|
||||||
() -> new ObjectMapper().readValue(RES_JSON, TokenResponse.class),
|
() -> objectMapper.readValue(RES_JSON, TokenResponse.class),
|
||||||
"TokenResponse deserialization failed"
|
"TokenResponse deserialization failed"
|
||||||
);
|
);
|
||||||
assertNotNull(res, "Parsed response is NULL");
|
assertNotNull(res, "Parsed response is NULL");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016-2022 Stefan Kalscheuer
|
* Copyright 2016-2023 Stefan Kalscheuer
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
Reference in New Issue
Block a user