Polishing.
Extract Object Mapper creation into singleton holder. Use as(StepVerifier) syntax instead of StepVerifier.create(publisher). Reduce nullability warnings. See gh-443.
This commit is contained in:
@@ -135,6 +135,24 @@ public class Versioned<T> {
|
||||
return metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the required {@link Metadata} for this versioned object. Throws
|
||||
* {@link IllegalStateException} if no metadata is associated.
|
||||
*
|
||||
* @return the non-null {@link Metadata} held by this for this versioned object.
|
||||
* @throws IllegalStateException if no metadata is present.
|
||||
*/
|
||||
public Metadata getRequiredMetadata() {
|
||||
|
||||
Metadata metadata = this.metadata;
|
||||
|
||||
if (metadata == null) {
|
||||
throw new IllegalStateException("Required Metadata is not present");
|
||||
}
|
||||
|
||||
return metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@literal true} if this versioned object has data associated, or
|
||||
* {@code false}, of the version is deleted or destroyed.
|
||||
|
||||
@@ -44,7 +44,10 @@ class AppIdAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator supplier = new AuthenticationStepsOperator(
|
||||
AppIdAuthentication.createAuthenticationSteps(options), webClient);
|
||||
|
||||
StepVerifier.create(supplier.getVaultToken()).expectNextCount(1).verifyComplete();
|
||||
supplier.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -58,6 +61,9 @@ class AppIdAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator supplier = new AuthenticationStepsOperator(
|
||||
AppIdAuthentication.createAuthenticationSteps(options), webClient);
|
||||
|
||||
StepVerifier.create(supplier.getVaultToken()).expectError().verify();
|
||||
supplier.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectError() //
|
||||
.verify();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,8 @@ class AppRoleAuthenticationIntegrationTestBase extends IntegrationTestSupport {
|
||||
|
||||
String getRoleId(String roleName) {
|
||||
return (String) getVaultOperations()
|
||||
.read(String.format("auth/approle/role/%s/role-id", roleName)).getData()
|
||||
.read(String.format("auth/approle/role/%s/role-id", roleName))
|
||||
.getRequiredData()
|
||||
.get("role_id");
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ class AppRoleAuthenticationIntegrationTests extends
|
||||
String roleId = getRoleId("with-secret-id");
|
||||
String secretId = (String) getVaultOperations()
|
||||
.write(String.format("auth/approle/role/%s/secret-id", "with-secret-id"),
|
||||
null).getData().get("secret_id");
|
||||
null).getRequiredData().get("secret_id");
|
||||
|
||||
AppRoleAuthenticationOptions options = AppRoleAuthenticationOptions.builder()
|
||||
.roleId(roleId).secretId(secretId).build();
|
||||
@@ -182,6 +182,6 @@ class AppRoleAuthenticationIntegrationTests extends
|
||||
|
||||
getVaultOperations().write(
|
||||
"auth/approle/role/with-secret-id/secret-id-accessor/destroy",
|
||||
customSecretIdResponse.getData());
|
||||
customSecretIdResponse.getRequiredData());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ class AppRoleAuthenticationStepsIntegrationTests extends
|
||||
|
||||
String secretId = (String) getVaultOperations()
|
||||
.write(String.format("auth/approle/role/%s/secret-id", "with-secret-id"),
|
||||
null).getData().get("secret_id");
|
||||
null).getRequiredData().get("secret_id");
|
||||
|
||||
VaultToken roleIdToken = generateWrappedRoleIdResponse();
|
||||
|
||||
@@ -109,7 +109,7 @@ class AppRoleAuthenticationStepsIntegrationTests extends
|
||||
|
||||
String secretId = (String) getVaultOperations()
|
||||
.write(String.format("auth/approle/role/%s/secret-id", "with-secret-id"),
|
||||
null).getData().get("secret_id");
|
||||
null).getRequiredData().get("secret_id");
|
||||
|
||||
AppRoleAuthenticationOptions options = AppRoleAuthenticationOptions.builder()
|
||||
.secretId(SecretId.provided(secretId)).appRole("with-secret-id")
|
||||
@@ -158,7 +158,7 @@ class AppRoleAuthenticationStepsIntegrationTests extends
|
||||
|
||||
getVaultOperations().write(
|
||||
"auth/approle/role/with-secret-id/secret-id-accessor/destroy",
|
||||
customSecretIdResponse.getData());
|
||||
customSecretIdResponse.getRequiredData());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.vault.VaultException;
|
||||
import org.springframework.vault.authentication.AppRoleAuthenticationOptions.SecretId;
|
||||
import org.springframework.vault.client.VaultClients;
|
||||
import org.springframework.vault.client.VaultClients.PrefixAwareUriTemplateHandler;
|
||||
import org.springframework.vault.support.ObjectMapperSupplier;
|
||||
import org.springframework.vault.support.VaultToken;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@@ -50,7 +51,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
|
||||
*/
|
||||
class AppRoleAuthenticationUnitTests {
|
||||
|
||||
static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
RestTemplate restTemplate;
|
||||
|
||||
|
||||
@@ -50,7 +50,8 @@ class AuthenticationStepsOperatorUnitTests {
|
||||
|
||||
AuthenticationSteps steps = AuthenticationSteps.just(VaultToken.of("my-token"));
|
||||
|
||||
StepVerifier.create(login(steps)).expectNext(VaultToken.of("my-token"))
|
||||
login(steps).as(StepVerifier::create) //
|
||||
.expectNext(VaultToken.of("my-token")) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@@ -60,7 +61,8 @@ class AuthenticationStepsOperatorUnitTests {
|
||||
AuthenticationSteps steps = AuthenticationSteps.fromSupplier(() -> "my-token")
|
||||
.login(VaultToken::of);
|
||||
|
||||
StepVerifier.create(login(steps)).expectNext(VaultToken.of("my-token"))
|
||||
login(steps).as(StepVerifier::create) //
|
||||
.expectNext(VaultToken.of("my-token")) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@@ -82,8 +84,9 @@ class AuthenticationStepsOperatorUnitTests {
|
||||
AuthenticationSteps steps = AuthenticationSteps.just(post("/auth/{path}/login",
|
||||
"cert").as(VaultResponse.class));
|
||||
|
||||
StepVerifier.create(login(steps, webClient))
|
||||
.expectNext(VaultToken.of("my-token")).verifyComplete();
|
||||
login(steps, webClient).as(StepVerifier::create) //
|
||||
.expectNext(VaultToken.of("my-token")) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -101,7 +104,9 @@ class AuthenticationStepsOperatorUnitTests {
|
||||
AuthenticationSteps steps = AuthenticationSteps.just(post("/auth/{path}/login",
|
||||
"cert").as(VaultResponse.class));
|
||||
|
||||
StepVerifier.create(login(steps, webClient)).expectError().verify();
|
||||
login(steps, webClient).as(StepVerifier::create) //
|
||||
.expectError() //
|
||||
.verify();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -140,8 +145,9 @@ class AuthenticationStepsOperatorUnitTests {
|
||||
it -> VaultToken.of(it.getLeft().getRequestId() + "-"
|
||||
+ it.getRight().getRequestId()));
|
||||
|
||||
StepVerifier.create(login(steps, webClient))
|
||||
.expectNext(VaultToken.of("left-right")).verifyComplete();
|
||||
login(steps, webClient).as(StepVerifier::create) //
|
||||
.expectNext(VaultToken.of("left-right")) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
private Mono<VaultToken> login(AuthenticationSteps steps) {
|
||||
|
||||
@@ -42,7 +42,10 @@ class ClientCertificateAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator operator = new AuthenticationStepsOperator(
|
||||
ClientCertificateAuthentication.createAuthenticationSteps(), webClient);
|
||||
|
||||
StepVerifier.create(operator.getVaultToken()).expectNextCount(1).verifyComplete();
|
||||
operator.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -55,7 +58,10 @@ class ClientCertificateAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator operator = new AuthenticationStepsOperator(
|
||||
ClientCertificateAuthentication.createAuthenticationSteps(), webClient);
|
||||
|
||||
StepVerifier.create(operator.getVaultToken()).expectNextCount(1).verifyComplete();
|
||||
operator.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -68,8 +74,9 @@ class ClientCertificateAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator operator = new AuthenticationStepsOperator(
|
||||
ClientCertificateAuthentication.createAuthenticationSteps(), webClient);
|
||||
|
||||
StepVerifier.create(operator.getVaultToken()).verifyError(
|
||||
VaultLoginException.class);
|
||||
operator.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.verifyError(VaultLoginException.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.springframework.vault.util.TestRestTemplateFactory;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link ClientCertificateAuthentication} using
|
||||
@@ -66,10 +66,8 @@ class ClientCertificateAuthenticationStepsIntegrationTests extends
|
||||
RestTemplate restTemplate = VaultClients.createRestTemplate(
|
||||
TestRestTemplateFactory.TEST_VAULT_ENDPOINT, clientHttpRequestFactory);
|
||||
|
||||
assertThatThrownBy(
|
||||
() -> new AuthenticationStepsExecutor(
|
||||
ClientCertificateAuthentication.createAuthenticationSteps(), restTemplate)
|
||||
.login())
|
||||
.isInstanceOf(NestedRuntimeException.class);
|
||||
assertThatExceptionOfType(NestedRuntimeException.class).isThrownBy(
|
||||
() -> new AuthenticationStepsExecutor(ClientCertificateAuthentication
|
||||
.createAuthenticationSteps(), restTemplate).login());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,9 +52,15 @@ class CubbyholeAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator operator = new AuthenticationStepsOperator(
|
||||
CubbyholeAuthentication.createAuthenticationSteps(options), webClient);
|
||||
|
||||
StepVerifier.create(operator.getVaultToken()).consumeNextWith(actual -> {
|
||||
operator.getVaultToken() //
|
||||
.as(StepVerifier::create)
|
||||
//
|
||||
.consumeNextWith(
|
||||
actual -> {
|
||||
|
||||
assertThat(actual).isNotEqualTo(Settings.token().getToken()).isNotNull();
|
||||
}).verifyComplete();
|
||||
assertThat(actual).isNotEqualTo(Settings.token().getToken())
|
||||
.isNotNull();
|
||||
}) //
|
||||
.verifyComplete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.springframework.test.web.client.MockRestServiceServer;
|
||||
import org.springframework.vault.VaultException;
|
||||
import org.springframework.vault.client.VaultHttpHeaders;
|
||||
import org.springframework.vault.client.VaultClients.PrefixAwareUriTemplateHandler;
|
||||
import org.springframework.vault.support.ObjectMapperSupplier;
|
||||
import org.springframework.vault.support.VaultToken;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@@ -44,7 +45,7 @@ import static org.springframework.test.web.client.response.MockRestResponseCreat
|
||||
*/
|
||||
class CubbyholeAuthenticationUnitTests {
|
||||
|
||||
static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
RestTemplate restTemplate;
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ import org.springframework.web.client.ResourceAccessException;
|
||||
import org.springframework.web.client.RestOperations;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
@@ -115,8 +116,8 @@ class LifecycleAwareSessionManagerUnitTests {
|
||||
|
||||
when(clientAuthentication.login()).thenThrow(new VaultLoginException("foo"));
|
||||
|
||||
assertThatThrownBy(() -> sessionManager.getSessionToken()).isInstanceOf(
|
||||
VaultLoginException.class);
|
||||
assertThatExceptionOfType(VaultLoginException.class).isThrownBy(
|
||||
() -> sessionManager.getSessionToken());
|
||||
verifyZeroInteractions(listener);
|
||||
verify(errorListener).onAuthenticationError(any(LoginFailedEvent.class));
|
||||
}
|
||||
|
||||
@@ -32,23 +32,19 @@ import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.test.StepVerifier;
|
||||
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.vault.VaultException;
|
||||
import org.springframework.vault.core.RestOperationsCallback;
|
||||
import org.springframework.vault.core.VaultTokenOperations;
|
||||
import org.springframework.vault.support.SslConfiguration;
|
||||
import org.springframework.vault.support.VaultToken;
|
||||
import org.springframework.vault.support.VaultTokenRequest;
|
||||
import org.springframework.vault.support.SslConfiguration.KeyStoreConfiguration;
|
||||
import org.springframework.vault.util.IntegrationTestSupport;
|
||||
import org.springframework.vault.util.RequiresVaultVersion;
|
||||
import org.springframework.web.client.HttpStatusCodeException;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.fail;
|
||||
import static org.springframework.vault.util.Settings.createSslConfiguration;
|
||||
import static org.springframework.vault.util.Settings.findWorkDir;
|
||||
|
||||
/**
|
||||
@@ -57,8 +53,7 @@ import static org.springframework.vault.util.Settings.findWorkDir;
|
||||
* @author Mark Paluch
|
||||
*/
|
||||
@RequiresVaultVersion("0.6.2")
|
||||
class ReactiveLifecycleAwareSessionManagerIntegrationTests extends
|
||||
IntegrationTestSupport {
|
||||
class ReactiveLifecycleAwareSessionManagerIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
private ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
|
||||
|
||||
@@ -101,7 +96,9 @@ class ReactiveLifecycleAwareSessionManagerIntegrationTests extends
|
||||
ReactiveLifecycleAwareSessionManager sessionManager = new ReactiveLifecycleAwareSessionManager(
|
||||
() -> Mono.just(loginToken), taskScheduler, prepare().getWebClient());
|
||||
|
||||
sessionManager.getVaultToken().as(StepVerifier::create).expectNext(loginToken)
|
||||
sessionManager.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(loginToken) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@@ -137,9 +134,13 @@ class ReactiveLifecycleAwareSessionManagerIntegrationTests extends
|
||||
}
|
||||
};
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNext(loginToken)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(loginToken) //
|
||||
.verifyComplete();
|
||||
sessionManager.renewToken().as(StepVerifier::create).expectNext(loginToken)
|
||||
sessionManager.renewToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(loginToken) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@@ -152,7 +153,9 @@ class ReactiveLifecycleAwareSessionManagerIntegrationTests extends
|
||||
() -> Flux.fromStream(Stream.of((VaultToken) loginToken)).next(),
|
||||
taskScheduler, prepare().getWebClient());
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNext(loginToken)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(loginToken) //
|
||||
.verifyComplete();
|
||||
sessionManager.destroy();
|
||||
|
||||
@@ -182,13 +185,4 @@ class ReactiveLifecycleAwareSessionManagerIntegrationTests extends
|
||||
|
||||
return LoginToken.of(token.getToken());
|
||||
}
|
||||
|
||||
static SslConfiguration prepareCertAuthenticationMethod() {
|
||||
|
||||
SslConfiguration original = createSslConfiguration();
|
||||
|
||||
return new SslConfiguration(KeyStoreConfiguration.of(new FileSystemResource(
|
||||
new File(findWorkDir(), "client-cert.jks")), "changeit".toCharArray()),
|
||||
original.getTrustStoreConfiguration());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,8 +134,10 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
|
||||
mockToken(LoginToken.of("login"));
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create)
|
||||
.expectNext(LoginToken.of("login")).verifyComplete();
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNext(LoginToken.of("login")) //
|
||||
.verifyComplete();
|
||||
verify(listener).onAuthenticationEvent(any(AfterLoginEvent.class));
|
||||
}
|
||||
|
||||
@@ -145,7 +147,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
when(tokenSupplier.getVaultToken()).thenReturn(
|
||||
Mono.error(new VaultLoginException("foo")));
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).verifyError();
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.verifyError();
|
||||
verifyZeroInteractions(listener);
|
||||
verify(errorListener).onAuthenticationError(any(LoginFailedEvent.class));
|
||||
}
|
||||
@@ -191,9 +195,11 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
Mono.error(new WebClientResponseException("forbidden", 403, "Forbidden",
|
||||
null, null, null)));
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).assertNext(it -> {
|
||||
assertThat(it).isExactlyInstanceOf(VaultToken.class);
|
||||
}).verifyComplete();
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.assertNext(it -> {
|
||||
assertThat(it).isExactlyInstanceOf(VaultToken.class);
|
||||
}).verifyComplete();
|
||||
verify(listener).onAuthenticationEvent(any(AfterLoginEvent.class));
|
||||
verify(errorListener).onAuthenticationError(any());
|
||||
}
|
||||
@@ -231,7 +237,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
mockToken(LoginToken.of("login"));
|
||||
when(responseSpec.bodyToMono(String.class)).thenReturn(Mono.just("OK"));
|
||||
|
||||
sessionManager.getVaultToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
|
||||
sessionManager.destroy();
|
||||
@@ -248,7 +256,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
mockToken(VaultToken.of("login"));
|
||||
|
||||
sessionManager.setTokenSelfLookupEnabled(false);
|
||||
sessionManager.renewToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.renewToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
sessionManager.destroy();
|
||||
|
||||
@@ -267,7 +277,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
Mono.error(new WebClientResponseException("forbidden", 403, "Forbidden",
|
||||
null, null, null)));
|
||||
|
||||
sessionManager.renewToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.renewToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
sessionManager.destroy();
|
||||
|
||||
@@ -279,7 +291,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
|
||||
mockToken(LoginToken.renewable("login".toCharArray(), Duration.ofSeconds(5)));
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
|
||||
verify(taskScheduler).schedule(any(Runnable.class), any(Trigger.class));
|
||||
@@ -300,7 +314,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
when(responseSpec.bodyToMono(VaultResponse.class)).thenReturn(
|
||||
Mono.just(vaultResponse));
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
|
||||
verify(taskScheduler).schedule(runnableCaptor.capture(), any(Trigger.class));
|
||||
@@ -326,7 +342,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
|
||||
ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
|
||||
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
verify(taskScheduler).schedule(runnableCaptor.capture(), any(Trigger.class));
|
||||
|
||||
@@ -368,7 +386,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
Duration.ofSeconds(2)))));
|
||||
|
||||
ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
verify(taskScheduler).schedule(runnableCaptor.capture(), any(Trigger.class));
|
||||
runnableCaptor.getValue().run();
|
||||
@@ -398,7 +418,9 @@ class ReactiveLifecycleAwareSessionManagerUnitTests {
|
||||
Mono.error(new RuntimeException("foo")));
|
||||
|
||||
ArgumentCaptor<Runnable> runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
|
||||
sessionManager.getSessionToken().as(StepVerifier::create).expectNextCount(1)
|
||||
sessionManager.getSessionToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
verify(taskScheduler).schedule(runnableCaptor.capture(), any(Trigger.class));
|
||||
runnableCaptor.getValue().run();
|
||||
|
||||
@@ -52,8 +52,8 @@ class TokenAuthenticationOperatorIntegrationTests extends
|
||||
AuthenticationStepsOperator operator = new AuthenticationStepsOperator(
|
||||
TokenAuthentication.createAuthenticationSteps(token, true), webClient);
|
||||
|
||||
StepVerifier
|
||||
.create(operator.getVaultToken())
|
||||
operator.getVaultToken()
|
||||
.as(StepVerifier::create)
|
||||
.consumeNextWith(
|
||||
actual -> {
|
||||
|
||||
@@ -81,9 +81,14 @@ class TokenAuthenticationOperatorIntegrationTests extends
|
||||
TokenAuthentication.createAuthenticationSteps(token, true), webClient);
|
||||
|
||||
// first usage
|
||||
StepVerifier.create(operator.getVaultToken()).expectNextCount(1).verifyComplete();
|
||||
operator.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectNextCount(1) //
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(operator.getVaultToken()).expectError(VaultException.class)
|
||||
operator.getVaultToken() //
|
||||
.as(StepVerifier::create) //
|
||||
.expectError(VaultException.class) //
|
||||
.verify();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.springframework.vault.util.TestRestTemplateFactory;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link TokenAuthentication} using
|
||||
@@ -76,6 +76,6 @@ class TokenAuthenticationStepsIntegrationTests extends
|
||||
TokenAuthentication.createAuthenticationSteps(token, true), restTemplate);
|
||||
|
||||
operator.login();
|
||||
assertThatThrownBy(operator::login).isInstanceOf(VaultException.class);
|
||||
assertThatExceptionOfType(VaultException.class).isThrownBy(operator::login);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,8 @@ class ReactiveVaultClientsUnitTests {
|
||||
.filter(ReactiveVaultClients.namespace("foo/bar")).build();
|
||||
|
||||
webClient.get().uri("/auth/foo").retrieve().bodyToMono(String.class)
|
||||
.as(StepVerifier::create).verifyComplete();
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
assertThat(request.getHeaders()).containsEntry(VaultHttpHeaders.VAULT_NAMESPACE,
|
||||
Collections.singletonList("foo/bar"));
|
||||
@@ -72,7 +73,8 @@ class ReactiveVaultClientsUnitTests {
|
||||
.filter(ReactiveVaultClients.namespace("foo/bar")).build();
|
||||
|
||||
webClient.get().uri("/auth/foo").header(VaultHttpHeaders.VAULT_NAMESPACE, "baz")
|
||||
.retrieve().bodyToMono(String.class).as(StepVerifier::create)
|
||||
.retrieve().bodyToMono(String.class) //
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
assertThat(request.getHeaders()).containsEntry(VaultHttpHeaders.VAULT_NAMESPACE,
|
||||
|
||||
@@ -30,6 +30,7 @@ import reactor.test.StepVerifier;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import org.springframework.vault.support.ObjectMapperSupplier;
|
||||
import org.springframework.vault.util.IntegrationTestSupport;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -43,47 +44,52 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
@ContextConfiguration(classes = VaultIntegrationTestConfiguration.class)
|
||||
class ReactiveVaultTemplateGenericIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
@Autowired
|
||||
ReactiveVaultOperations vaultOperations;
|
||||
|
||||
@Test
|
||||
void readShouldReturnAbsentKey() {
|
||||
StepVerifier.create(vaultOperations.read("secret/absent")).verifyComplete();
|
||||
vaultOperations.read("secret/absent").as(StepVerifier::create).verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
void readShouldReturnExistingKey() {
|
||||
|
||||
StepVerifier.create(
|
||||
vaultOperations.write("secret/mykey",
|
||||
Collections.singletonMap("hello", "world"))).verifyComplete();
|
||||
vaultOperations.write("secret/mykey", Collections.singletonMap("hello", "world"))
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier
|
||||
.create(vaultOperations.read("secret/mykey"))
|
||||
vaultOperations
|
||||
.read("secret/mykey")
|
||||
.as(StepVerifier::create)
|
||||
.consumeNextWith(
|
||||
actual -> assertThat(actual.getData()).containsEntry("hello",
|
||||
"world")).verifyComplete();
|
||||
|
||||
actual -> assertThat(actual.getRequiredData()).containsEntry(
|
||||
"hello", "world")) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
void readShouldReturnNestedPropertiesKey() throws IOException {
|
||||
|
||||
Map map = new ObjectMapper()
|
||||
Map map = OBJECT_MAPPER
|
||||
.readValue(
|
||||
"{ \"hello.array[0]\":\"array-value0\", \"hello.array[1]\":\"array-value1\" }",
|
||||
Map.class);
|
||||
|
||||
StepVerifier.create(vaultOperations.write("secret/mykey", map)).verifyComplete();
|
||||
vaultOperations.write("secret/mykey", map).as(StepVerifier::create)
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier
|
||||
.create(vaultOperations.read("secret/mykey"))
|
||||
vaultOperations
|
||||
.read("secret/mykey")
|
||||
.as(StepVerifier::create)
|
||||
.consumeNextWith(
|
||||
actual -> {
|
||||
assertThat(actual.getData()).containsEntry("hello.array[0]",
|
||||
"array-value0");
|
||||
assertThat(actual.getData()).containsEntry("hello.array[1]",
|
||||
"array-value1");
|
||||
assertThat(actual.getRequiredData()).containsEntry(
|
||||
"hello.array[0]", "array-value0");
|
||||
assertThat(actual.getRequiredData()).containsEntry(
|
||||
"hello.array[1]", "array-value1");
|
||||
}).verifyComplete();
|
||||
|
||||
}
|
||||
@@ -91,20 +97,24 @@ class ReactiveVaultTemplateGenericIntegrationTests extends IntegrationTestSuppor
|
||||
@Test
|
||||
void readShouldReturnNestedObjects() throws IOException {
|
||||
|
||||
Map map = new ObjectMapper().readValue(
|
||||
Map map = OBJECT_MAPPER.readValue(
|
||||
"{ \"array\": [ {\"hello\": \"world\"}, {\"hello1\": \"world1\"} ] }",
|
||||
Map.class);
|
||||
StepVerifier.create(vaultOperations.write("secret/mykey", map)).verifyComplete();
|
||||
vaultOperations.write("secret/mykey", map).as(StepVerifier::create)
|
||||
.verifyComplete();
|
||||
|
||||
List<Map<String, String>> expected = Arrays.asList(
|
||||
Collections.singletonMap("hello", "world"),
|
||||
Collections.singletonMap("hello1", "world1"));
|
||||
|
||||
StepVerifier.create(vaultOperations.read("secret/mykey"))
|
||||
.consumeNextWith(actual -> {
|
||||
assertThat(actual.getData()).containsEntry("array", expected);
|
||||
}).verifyComplete();
|
||||
|
||||
vaultOperations
|
||||
.read("secret/mykey")
|
||||
.as(StepVerifier::create)
|
||||
.consumeNextWith(
|
||||
actual -> {
|
||||
assertThat(actual.getRequiredData()).containsEntry("array",
|
||||
expected);
|
||||
}).verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -114,12 +124,15 @@ class ReactiveVaultTemplateGenericIntegrationTests extends IntegrationTestSuppor
|
||||
data.put("firstname", "Walter");
|
||||
data.put("password", "Secret");
|
||||
|
||||
StepVerifier.create(vaultOperations.write("secret/mykey", data)).verifyComplete();
|
||||
vaultOperations.write("secret/mykey", data) //
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(vaultOperations.read("secret/mykey", Person.class))
|
||||
vaultOperations.read("secret/mykey", Person.class) //
|
||||
.as(StepVerifier::create) //
|
||||
.consumeNextWith(actual -> {
|
||||
|
||||
Person person = actual.getData();
|
||||
Person person = actual.getRequiredData();
|
||||
assertThat(person.getFirstname()).isEqualTo("Walter");
|
||||
assertThat(person.getPassword()).isEqualTo("Secret");
|
||||
|
||||
@@ -129,11 +142,11 @@ class ReactiveVaultTemplateGenericIntegrationTests extends IntegrationTestSuppor
|
||||
@Test
|
||||
void listShouldReturnExistingKey() {
|
||||
|
||||
StepVerifier.create(
|
||||
vaultOperations.write("secret/mykey",
|
||||
Collections.singletonMap("hello", "world"))).verifyComplete();
|
||||
vaultOperations.write("secret/mykey", Collections.singletonMap("hello", "world"))
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(vaultOperations.list("secret").collectList())
|
||||
vaultOperations.list("secret").collectList().as(StepVerifier::create)
|
||||
.consumeNextWith(actual -> assertThat(actual).contains("mykey"))
|
||||
.verifyComplete();
|
||||
}
|
||||
@@ -141,19 +154,23 @@ class ReactiveVaultTemplateGenericIntegrationTests extends IntegrationTestSuppor
|
||||
@Test
|
||||
void deleteShouldRemoveKey() {
|
||||
|
||||
StepVerifier.create(
|
||||
vaultOperations.write("secret/mykey",
|
||||
Collections.singletonMap("hello", "world"))).verifyComplete();
|
||||
vaultOperations.write("secret/mykey", Collections.singletonMap("hello", "world"))
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(vaultOperations.delete("secret/mykey")).verifyComplete();
|
||||
vaultOperations.delete("secret/mykey") //
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
|
||||
StepVerifier.create(vaultOperations.read("secret/mykey")).verifyComplete();
|
||||
vaultOperations.read("secret/mykey") //
|
||||
.as(StepVerifier::create) //
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
void writeShouldReturnResponse() {
|
||||
|
||||
StepVerifier.create(vaultOperations.write("auth/token/create"))
|
||||
vaultOperations.write("auth/token/create").as(StepVerifier::create)
|
||||
.assertNext(response -> {
|
||||
|
||||
assertThat(response.getAuth()).isNotNull();
|
||||
|
||||
@@ -49,7 +49,7 @@ import org.springframework.vault.util.IntegrationTestSupport;
|
||||
import org.springframework.vault.util.RequiresVaultVersion;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.springframework.vault.util.Settings.findWorkDir;
|
||||
|
||||
/**
|
||||
@@ -107,7 +107,7 @@ class VaultPkiTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
VaultCertificateResponse certificateResponse = pkiOperations.issueCertificate(
|
||||
"testrole", request);
|
||||
|
||||
CertificateBundle data = certificateResponse.getData();
|
||||
CertificateBundle data = certificateResponse.getRequiredData();
|
||||
|
||||
assertThat(data.getPrivateKey()).isNotEmpty();
|
||||
assertThat(data.getCertificate()).isNotEmpty();
|
||||
@@ -127,7 +127,8 @@ class VaultPkiTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
VaultCertificateResponse certificateResponse = pkiOperations.issueCertificate(
|
||||
"testrole", request);
|
||||
|
||||
X509Certificate certificate = certificateResponse.getData().getX509Certificate();
|
||||
X509Certificate certificate = certificateResponse.getRequiredData()
|
||||
.getX509Certificate();
|
||||
|
||||
Instant now = Instant.now();
|
||||
assertThat(certificate.getNotAfter()).isAfter(
|
||||
@@ -162,7 +163,7 @@ class VaultPkiTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
VaultSignCertificateRequestResponse certificateResponse = pkiOperations
|
||||
.signCertificateRequest("testrole", csr, request);
|
||||
|
||||
Certificate data = certificateResponse.getData();
|
||||
Certificate data = certificateResponse.getRequiredData();
|
||||
|
||||
assertThat(data.getCertificate()).isNotEmpty();
|
||||
assertThat(data.getIssuingCaCertificate()).isNotEmpty();
|
||||
@@ -177,8 +178,8 @@ class VaultPkiTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
VaultCertificateRequest request = VaultCertificateRequest.create("not.supported");
|
||||
|
||||
assertThatThrownBy(() -> pkiOperations.issueCertificate("testrole", request))
|
||||
.isInstanceOf(VaultException.class);
|
||||
assertThatExceptionOfType(VaultException.class).isThrownBy(
|
||||
() -> pkiOperations.issueCertificate("testrole", request));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -190,9 +191,9 @@ class VaultPkiTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
VaultCertificateResponse certificateResponse = pkiOperations.issueCertificate(
|
||||
"testrole", request);
|
||||
|
||||
BigInteger serial = new BigInteger(certificateResponse.getData()
|
||||
BigInteger serial = new BigInteger(certificateResponse.getRequiredData()
|
||||
.getSerialNumber().replaceAll("\\:", ""), 16);
|
||||
pkiOperations.revoke(certificateResponse.getData().getSerialNumber());
|
||||
pkiOperations.revoke(certificateResponse.getRequiredData().getSerialNumber());
|
||||
|
||||
try (InputStream in = pkiOperations.getCrl(Encoding.DER)) {
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ class VaultSysTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
VaultResponse read = vaultOperations.read("secret/mykey");
|
||||
assertThat(read).isNotNull();
|
||||
assertThat(read.getData()).containsEntry("hello", "world");
|
||||
assertThat(read.getRequiredData()).containsEntry("hello", "world");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -155,7 +155,8 @@ class VaultSysTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
.opsForVersionedKeyValue("kVv2");
|
||||
|
||||
versionedOperations.put("secret/mykey", Collections.singletonMap("key", "value"));
|
||||
assertThat(versionedOperations.get("secret/mykey").getData()).containsEntry(
|
||||
assertThat(versionedOperations.get("secret/mykey").getRequiredData())
|
||||
.containsEntry(
|
||||
"key", "value");
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import org.springframework.vault.support.ObjectMapperSupplier;
|
||||
import org.springframework.vault.support.VaultResponse;
|
||||
import org.springframework.vault.support.VaultResponseSupport;
|
||||
import org.springframework.vault.util.IntegrationTestSupport;
|
||||
@@ -43,7 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
@ContextConfiguration(classes = VaultIntegrationTestConfiguration.class)
|
||||
class VaultTemplateGenericIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
@Autowired
|
||||
VaultOperations vaultOperations;
|
||||
@@ -63,7 +64,7 @@ class VaultTemplateGenericIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
VaultResponse read = vaultOperations.read("secret/mykey");
|
||||
assertThat(read).isNotNull();
|
||||
assertThat(read.getData()).containsEntry("hello", "world");
|
||||
assertThat(read.getRequiredData()).containsEntry("hello", "world");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -77,21 +78,23 @@ class VaultTemplateGenericIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
VaultResponse read = vaultOperations.read("secret/mykey");
|
||||
assertThat(read).isNotNull();
|
||||
assertThat(read.getData()).containsEntry("hello.array[0]", "array-value0");
|
||||
assertThat(read.getData()).containsEntry("hello.array[1]", "array-value1");
|
||||
assertThat(read.getRequiredData())
|
||||
.containsEntry("hello.array[0]", "array-value0");
|
||||
assertThat(read.getRequiredData())
|
||||
.containsEntry("hello.array[1]", "array-value1");
|
||||
}
|
||||
|
||||
@Test
|
||||
void readShouldReturnNestedObjects() throws Exception {
|
||||
|
||||
Map map = new ObjectMapper().readValue(
|
||||
Map map = OBJECT_MAPPER.readValue(
|
||||
"{ \"array\": [ {\"hello\": \"world\"}, {\"hello1\": \"world1\"} ] }",
|
||||
Map.class);
|
||||
vaultOperations.write("secret/mykey", map);
|
||||
|
||||
VaultResponse read = vaultOperations.read("secret/mykey");
|
||||
assertThat(read).isNotNull();
|
||||
assertThat(read.getData()).containsEntry(
|
||||
assertThat(read.getRequiredData()).containsEntry(
|
||||
"array",
|
||||
Arrays.asList(Collections.singletonMap("hello", "world"),
|
||||
Collections.singletonMap("hello1", "world1")));
|
||||
@@ -110,7 +113,7 @@ class VaultTemplateGenericIntegrationTests extends IntegrationTestSupport {
|
||||
Person.class);
|
||||
assertThat(read).isNotNull();
|
||||
|
||||
Person person = read.getData();
|
||||
Person person = read.getRequiredData();
|
||||
assertThat(person.getFirstname()).isEqualTo("Walter");
|
||||
assertThat(person.getPassword()).isEqualTo("Secret");
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ import org.springframework.vault.util.RequiresVaultVersion;
|
||||
import org.springframework.vault.util.Version;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.assertj.core.api.Assertions.fail;
|
||||
|
||||
/**
|
||||
@@ -620,8 +620,8 @@ class VaultTransitTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
VaultHmacRequest request = VaultHmacRequest.builder()
|
||||
.plaintext(Plaintext.of("hello-world")).algorithm("blah-512").build();
|
||||
|
||||
assertThatThrownBy(() -> transitOperations.getHmac(keyName, request))
|
||||
.isInstanceOf(VaultException.class);
|
||||
assertThatExceptionOfType(VaultException.class).isThrownBy(
|
||||
() -> transitOperations.getHmac(keyName, request));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -653,9 +653,8 @@ class VaultTransitTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
transitOperations.createKey("mykey");
|
||||
|
||||
assertThatThrownBy(
|
||||
() -> transitOperations.sign("mykey", Plaintext.of("hello-world")))
|
||||
.isInstanceOf(VaultException.class);
|
||||
assertThatExceptionOfType(VaultException.class).isThrownBy(
|
||||
() -> transitOperations.sign("mykey", Plaintext.of("hello-world")));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -772,9 +771,8 @@ class VaultTransitTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
vaultOperations.write("transit/keys/export",
|
||||
Collections.singletonMap("exportable", true));
|
||||
|
||||
assertThatThrownBy(
|
||||
() -> transitOperations.exportKey("export", TransitKeyType.SIGNING_KEY))
|
||||
.isInstanceOf(VaultException.class);
|
||||
assertThatExceptionOfType(VaultException.class).isThrownBy(
|
||||
() -> transitOperations.exportKey("export", TransitKeyType.SIGNING_KEY));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -47,8 +47,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@RequiresVaultVersion(VaultInitializer.VERSIONING_INTRODUCED_WITH_VALUE)
|
||||
@ContextConfiguration(classes = VaultIntegrationTestConfiguration.class)
|
||||
class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
IntegrationTestSupport {
|
||||
class VaultVersionedKeyValueTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
|
||||
@Autowired
|
||||
VaultOperations vaultOperations;
|
||||
@@ -87,7 +86,7 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
|
||||
Versioned<Person> versioned = versionedOperations.get(key, Person.class);
|
||||
|
||||
assertThat(versioned.getData()).isEqualTo(person);
|
||||
assertThat(versioned.getRequiredData()).isEqualTo(person);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -118,8 +117,8 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
|
||||
Versioned<Map<String, Object>> loaded = versionedOperations.get(key);
|
||||
|
||||
assertThat(loaded.getData()).isEqualTo(secret);
|
||||
assertThat(loaded.getMetadata()).isNotNull();
|
||||
assertThat(loaded.getRequiredData()).isEqualTo(secret);
|
||||
assertThat(loaded.getRequiredMetadata()).isNotNull();
|
||||
assertThat(loaded.getVersion()).isEqualTo(Version.from(1));
|
||||
}
|
||||
|
||||
@@ -142,10 +141,10 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
versionedOperations.put(key, Collections.singletonMap("key", "v1"));
|
||||
versionedOperations.put(key, Collections.singletonMap("key", "v2"));
|
||||
|
||||
assertThat(versionedOperations.get(key, Version.from(1)).getData()).isEqualTo(
|
||||
Collections.singletonMap("key", "v1"));
|
||||
assertThat(versionedOperations.get(key, Version.from(2)).getData()).isEqualTo(
|
||||
Collections.singletonMap("key", "v2"));
|
||||
assertThat(versionedOperations.get(key, Version.from(1)).getRequiredData())
|
||||
.isEqualTo(Collections.singletonMap("key", "v1"));
|
||||
assertThat(versionedOperations.get(key, Version.from(2)).getRequiredData())
|
||||
.isEqualTo(Collections.singletonMap("key", "v2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -162,8 +161,8 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
|
||||
assertThat(versioned.getData()).isNull();
|
||||
assertThat(versioned.getVersion()).isEqualTo(Version.from(2));
|
||||
assertThat(versioned.getMetadata().isDestroyed()).isFalse();
|
||||
assertThat(versioned.getMetadata().getDeletedAt()).isBetween(
|
||||
assertThat(versioned.getRequiredMetadata().isDestroyed()).isFalse();
|
||||
assertThat(versioned.getRequiredMetadata().getDeletedAt()).isBetween(
|
||||
Instant.now().minusSeconds(60), Instant.now().plusSeconds(60));
|
||||
}
|
||||
|
||||
@@ -180,10 +179,11 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
|
||||
Versioned<Map<String, Object>> versioned = versionedOperations.get(key);
|
||||
|
||||
assertThat(versioned.getData()).isEqualTo(Collections.singletonMap("key", "v2"));
|
||||
assertThat(versioned.getRequiredData()).isEqualTo(
|
||||
Collections.singletonMap("key", "v2"));
|
||||
assertThat(versioned.getVersion()).isEqualTo(Version.from(2));
|
||||
assertThat(versioned.getMetadata().isDestroyed()).isFalse();
|
||||
assertThat(versioned.getMetadata().getDeletedAt()).isNull();
|
||||
assertThat(versioned.getRequiredMetadata().isDestroyed()).isFalse();
|
||||
assertThat(versioned.getRequiredMetadata().getDeletedAt()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -201,8 +201,8 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
|
||||
assertThat(versioned.getData()).isNull();
|
||||
assertThat(versioned.getVersion()).isEqualTo(Version.from(1));
|
||||
assertThat(versioned.getMetadata().isDestroyed()).isFalse();
|
||||
assertThat(versioned.getMetadata().getDeletedAt()).isBetween(
|
||||
assertThat(versioned.getRequiredMetadata().isDestroyed()).isFalse();
|
||||
assertThat(versioned.getRequiredMetadata().getDeletedAt()).isBetween(
|
||||
Instant.now().minusSeconds(60), Instant.now().plusSeconds(60));
|
||||
}
|
||||
|
||||
@@ -220,8 +220,8 @@ class VaultVersionedKeyValueTemplateIntegrationTests extends
|
||||
|
||||
assertThat(versioned.getData()).isNull();
|
||||
assertThat(versioned.getVersion()).isEqualTo(Version.from(2));
|
||||
assertThat(versioned.getMetadata().isDestroyed()).isTrue();
|
||||
assertThat(versioned.getMetadata().getDeletedAt()).isNull();
|
||||
assertThat(versioned.getRequiredMetadata().isDestroyed()).isTrue();
|
||||
assertThat(versioned.getRequiredMetadata().getDeletedAt()).isNull();
|
||||
}
|
||||
|
||||
@Data
|
||||
|
||||
@@ -101,7 +101,7 @@ class VaultWrappingTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
WrappedMetadata metadata = wrappingOperations.wrap(map, Duration.ofSeconds(100));
|
||||
VaultResponse response = wrappingOperations.read(metadata.getToken());
|
||||
|
||||
assertThat(response.getData())
|
||||
assertThat(response.getRequiredData())
|
||||
.isEqualTo(Collections.singletonMap("key", "value"));
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ class VaultWrappingTemplateIntegrationTests extends IntegrationTestSupport {
|
||||
VaultResponseSupport<Secret> response = wrappingOperations.read(
|
||||
metadata.getToken(), Secret.class);
|
||||
|
||||
assertThat(response.getData()).isEqualTo(new Secret("value"));
|
||||
assertThat(response.getRequiredData()).isEqualTo(new Secret("value"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -38,7 +38,7 @@ public class VaultApp {
|
||||
|
||||
VaultResponseSupport<Secrets> response = vaultTemplate.read("secret/myapp",
|
||||
Secrets.class);
|
||||
System.out.println(response.getData().getUsername());
|
||||
System.out.println(response.getRequiredData().getUsername());
|
||||
|
||||
vaultTemplate.delete("secret/myapp");
|
||||
}
|
||||
|
||||
@@ -33,12 +33,14 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*/
|
||||
class CertificateBundleUnitTests {
|
||||
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
CertificateBundle certificateBundle;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@BeforeEach
|
||||
void before() throws Exception {
|
||||
Map<String, String> data = new ObjectMapper().readValue(
|
||||
Map<String, String> data = OBJECT_MAPPER.readValue(
|
||||
getClass().getResource("/certificate.json"), Map.class);
|
||||
|
||||
certificateBundle = CertificateBundle.of(data.get("serial_number"),
|
||||
|
||||
@@ -32,12 +32,14 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*/
|
||||
class CertificateUnitTests {
|
||||
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
Certificate certificate;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@BeforeEach
|
||||
void before() throws Exception {
|
||||
Map<String, String> data = new ObjectMapper().readValue(
|
||||
Map<String, String> data = OBJECT_MAPPER.readValue(
|
||||
getClass().getResource("/certificate.json"), Map.class);
|
||||
|
||||
certificate = Certificate.of(data.get("serial_number"), data.get("certificate"),
|
||||
|
||||
@@ -31,7 +31,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
@SuppressWarnings("unchecked")
|
||||
class JsonMapFlattenerUnitTests {
|
||||
|
||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
@Test
|
||||
void shouldPreserveFlatMap() {
|
||||
@@ -44,7 +44,7 @@ class JsonMapFlattenerUnitTests {
|
||||
@Test
|
||||
void shouldFlattenNestedObject() throws Exception {
|
||||
|
||||
Map<String, Object> map = objectMapper.readValue(
|
||||
Map<String, Object> map = OBJECT_MAPPER.readValue(
|
||||
"{\"key\": { \"nested\":true} }", Map.class);
|
||||
Map<String, Object> result = JsonMapFlattener.flatten(map);
|
||||
|
||||
@@ -54,7 +54,7 @@ class JsonMapFlattenerUnitTests {
|
||||
@Test
|
||||
void shouldFlattenDeeplyNestedObject() throws Exception {
|
||||
|
||||
Map<String, Object> map = objectMapper.readValue(
|
||||
Map<String, Object> map = OBJECT_MAPPER.readValue(
|
||||
"{\"key\": { \"nested\": {\"anotherLevel\": \"value\"} } }", Map.class);
|
||||
Map<String, Object> result = JsonMapFlattener.flatten(map);
|
||||
|
||||
@@ -64,7 +64,7 @@ class JsonMapFlattenerUnitTests {
|
||||
@Test
|
||||
void shouldFlattenNestedListOfSimpleObjects() throws Exception {
|
||||
|
||||
Map<String, Object> map = objectMapper.readValue(
|
||||
Map<String, Object> map = OBJECT_MAPPER.readValue(
|
||||
"{\"key\": [\"one\", \"two\"], \"dotted.key\": [\"one\", \"two\"] }",
|
||||
Map.class);
|
||||
Map<String, Object> result = JsonMapFlattener.flatten(map);
|
||||
@@ -77,7 +77,7 @@ class JsonMapFlattenerUnitTests {
|
||||
@Test
|
||||
void shouldFlattenNestedListOfComplexObject() throws Exception {
|
||||
|
||||
Map<String, Object> map = objectMapper.readValue(
|
||||
Map<String, Object> map = OBJECT_MAPPER.readValue(
|
||||
"{\"key\": [{ \"nested\":\"value\"}, { \"nested\":\"other-value\"}] }",
|
||||
Map.class);
|
||||
Map<String, Object> result = JsonMapFlattener.flatten(map);
|
||||
@@ -89,7 +89,7 @@ class JsonMapFlattenerUnitTests {
|
||||
@Test
|
||||
void shouldFlattenDeeplyNestedListOfComplexObject() throws Exception {
|
||||
|
||||
Map<String, Object> map = objectMapper
|
||||
Map<String, Object> map = OBJECT_MAPPER
|
||||
.readValue(
|
||||
"{\"key\": { \"level1\": [{ \"nested\":\"value\"}, { \"nested\":\"other-value\"}]} }",
|
||||
Map.class);
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.vault.support;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
/**
|
||||
* {@link ObjectMapper} supplier for testing holding a singleton {@link ObjectMapper}
|
||||
* instance.
|
||||
* @author Mark Paluch
|
||||
*/
|
||||
public class ObjectMapperSupplier {
|
||||
|
||||
private final static ObjectMapperSupplier instance = new ObjectMapperSupplier();
|
||||
|
||||
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
public static ObjectMapper get() {
|
||||
return instance.objectMapper;
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ import org.springframework.util.StreamUtils;
|
||||
import org.springframework.vault.support.Policy.Rule;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link Policy} JSON serialization/deserialization.
|
||||
@@ -38,7 +38,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
*/
|
||||
class PolicySerializationUnitTests {
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
ObjectMapper OBJECT_MAPPER = ObjectMapperSupplier.get();
|
||||
|
||||
@Test
|
||||
void shouldSerialize() throws Exception {
|
||||
@@ -58,7 +58,7 @@ class PolicySerializationUnitTests {
|
||||
try (InputStream is = new ClassPathResource("policy.json").getInputStream()) {
|
||||
|
||||
String expected = StreamUtils.copyToString(is, StandardCharsets.UTF_8);
|
||||
JSONAssert.assertEquals(expected, objectMapper.writeValueAsString(policy),
|
||||
JSONAssert.assertEquals(expected, OBJECT_MAPPER.writeValueAsString(policy),
|
||||
JSONCompareMode.STRICT);
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ class PolicySerializationUnitTests {
|
||||
|
||||
try (InputStream is = new ClassPathResource("policy.json").getInputStream()) {
|
||||
|
||||
Policy actual = objectMapper.readValue(is, Policy.class);
|
||||
Policy actual = OBJECT_MAPPER.readValue(is, Policy.class);
|
||||
|
||||
assertThat(actual.getRules()).hasSameClassAs(expected.getRules());
|
||||
|
||||
@@ -111,24 +111,24 @@ class PolicySerializationUnitTests {
|
||||
@Test
|
||||
void shouldDeserializeEmptyPolicy() throws Exception {
|
||||
|
||||
assertThat(objectMapper.readValue("{}", Policy.class)).isEqualTo(Policy.empty());
|
||||
assertThat(OBJECT_MAPPER.readValue("{}", Policy.class)).isEqualTo(Policy.empty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRejectUnknownFieldNames() throws Exception {
|
||||
|
||||
assertThatThrownBy(
|
||||
() -> objectMapper.readValue("{\"foo\":1, \"path\": {} }", Policy.class))
|
||||
.isInstanceOf(IllegalArgumentException.class);
|
||||
assertThatThrownBy(
|
||||
() -> objectMapper.readValue("{\"foo\":\"bar\"}", Policy.class))
|
||||
.isInstanceOf(IllegalArgumentException.class);
|
||||
assertThatIllegalArgumentException()
|
||||
.isThrownBy(
|
||||
() -> OBJECT_MAPPER.readValue("{\"foo\":1, \"path\": {} }",
|
||||
Policy.class));
|
||||
assertThatIllegalArgumentException().isThrownBy(
|
||||
() -> OBJECT_MAPPER.readValue("{\"foo\":\"bar\"}", Policy.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldDeserializePolicyWithEmptyRules() throws Exception {
|
||||
|
||||
Policy actual = objectMapper.readValue("{ \"path\": {} }", Policy.class);
|
||||
Policy actual = OBJECT_MAPPER.readValue("{ \"path\": {} }", Policy.class);
|
||||
|
||||
assertThat(actual).isEqualTo(Policy.empty());
|
||||
}
|
||||
@@ -136,7 +136,7 @@ class PolicySerializationUnitTests {
|
||||
@Test
|
||||
void shouldDeserializeRuleWithHour() throws Exception {
|
||||
|
||||
Policy actual = objectMapper.readValue(
|
||||
Policy actual = OBJECT_MAPPER.readValue(
|
||||
"{ \"path\": { \"secret\" : {\"min_wrapping_ttl\":\"1h\"} } }",
|
||||
Policy.class);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user