diff --git a/spring-vault-core/src/main/java/org/springframework/vault/support/Versioned.java b/spring-vault-core/src/main/java/org/springframework/vault/support/Versioned.java index 686d16f0..a90b4d68 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/support/Versioned.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/support/Versioned.java @@ -135,6 +135,24 @@ public class Versioned { 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. diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationOperatorIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationOperatorIntegrationTests.java index 71c339c9..696460ff 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationOperatorIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppIdAuthenticationOperatorIntegrationTests.java @@ -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(); } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTestBase.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTestBase.java index 2507e616..e667c89a 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTestBase.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTestBase.java @@ -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"); } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTests.java index a6744049..e3f82727 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationIntegrationTests.java @@ -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()); } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationStepsIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationStepsIntegrationTests.java index 685eb12d..604e2b52 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationStepsIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationStepsIntegrationTests.java @@ -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 diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationUnitTests.java index d41075eb..8a583e51 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AppRoleAuthenticationUnitTests.java @@ -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; diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AuthenticationStepsOperatorUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AuthenticationStepsOperatorUnitTests.java index 4a10c0c4..47bab553 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/AuthenticationStepsOperatorUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/AuthenticationStepsOperatorUnitTests.java @@ -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 login(AuthenticationSteps steps) { diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationOperatorIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationOperatorIntegrationTests.java index 22136232..3073dbbd 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationOperatorIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationOperatorIntegrationTests.java @@ -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 diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationStepsIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationStepsIntegrationTests.java index b462db49..c4ec4889 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationStepsIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ClientCertificateAuthenticationStepsIntegrationTests.java @@ -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()); } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationOperatorIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationOperatorIntegrationTests.java index b5b69e51..01a309aa 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationOperatorIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationOperatorIntegrationTests.java @@ -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(); } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationUnitTests.java index ec3884dc..a4e8413d 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/CubbyholeAuthenticationUnitTests.java @@ -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; diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/LifecycleAwareSessionManagerUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/LifecycleAwareSessionManagerUnitTests.java index 1a64e547..47908dfa 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/LifecycleAwareSessionManagerUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/LifecycleAwareSessionManagerUnitTests.java @@ -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)); } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerIntegrationTests.java index 2e86646b..b15f111d 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerIntegrationTests.java @@ -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()); - } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerUnitTests.java index f92d4f9a..632cdc96 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/ReactiveLifecycleAwareSessionManagerUnitTests.java @@ -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 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 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 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(); diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationOperatorIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationOperatorIntegrationTests.java index 431c7cc7..08989f25 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationOperatorIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationOperatorIntegrationTests.java @@ -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(); } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationStepsIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationStepsIntegrationTests.java index 5f6eaeaf..3cf85810 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationStepsIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/authentication/TokenAuthenticationStepsIntegrationTests.java @@ -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); } } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsUnitTests.java index 2a21dcd5..d5eebd73 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/client/ReactiveVaultClientsUnitTests.java @@ -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, diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/ReactiveVaultTemplateGenericIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/ReactiveVaultTemplateGenericIntegrationTests.java index 0a6bb54d..3c3a5e2d 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/ReactiveVaultTemplateGenericIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/ReactiveVaultTemplateGenericIntegrationTests.java @@ -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> 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(); diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java index 66c5d0ab..817d3f98 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultPkiTemplateIntegrationTests.java @@ -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)) { diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java index 48907ac3..ec5667d3 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultSysTemplateIntegrationTests.java @@ -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"); } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTemplateGenericIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTemplateGenericIntegrationTests.java index 5517ea48..126b4c38 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTemplateGenericIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTemplateGenericIntegrationTests.java @@ -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"); } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTransitTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTransitTemplateIntegrationTests.java index 67030807..6c2e0d7e 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTransitTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultTransitTemplateIntegrationTests.java @@ -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 diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultVersionedKeyValueTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultVersionedKeyValueTemplateIntegrationTests.java index d6d61691..a6190aef 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultVersionedKeyValueTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultVersionedKeyValueTemplateIntegrationTests.java @@ -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 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> 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> 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 diff --git a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultWrappingTemplateIntegrationTests.java b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultWrappingTemplateIntegrationTests.java index 63f5db6d..7b79cb04 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/core/VaultWrappingTemplateIntegrationTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/core/VaultWrappingTemplateIntegrationTests.java @@ -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 response = wrappingOperations.read( metadata.getToken(), Secret.class); - assertThat(response.getData()).isEqualTo(new Secret("value")); + assertThat(response.getRequiredData()).isEqualTo(new Secret("value")); } @Test diff --git a/spring-vault-core/src/test/java/org/springframework/vault/demo/VaultApp.java b/spring-vault-core/src/test/java/org/springframework/vault/demo/VaultApp.java index f6ae5411..09d562bf 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/demo/VaultApp.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/demo/VaultApp.java @@ -38,7 +38,7 @@ public class VaultApp { VaultResponseSupport response = vaultTemplate.read("secret/myapp", Secrets.class); - System.out.println(response.getData().getUsername()); + System.out.println(response.getRequiredData().getUsername()); vaultTemplate.delete("secret/myapp"); } diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java index c006e676..1dbf29db 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateBundleUnitTests.java @@ -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 data = new ObjectMapper().readValue( + Map data = OBJECT_MAPPER.readValue( getClass().getResource("/certificate.json"), Map.class); certificateBundle = CertificateBundle.of(data.get("serial_number"), diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java index e3bddb5e..6a4dbca8 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/CertificateUnitTests.java @@ -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 data = new ObjectMapper().readValue( + Map data = OBJECT_MAPPER.readValue( getClass().getResource("/certificate.json"), Map.class); certificate = Certificate.of(data.get("serial_number"), data.get("certificate"), diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/JsonMapFlattenerUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/JsonMapFlattenerUnitTests.java index fef93f9d..803207b7 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/JsonMapFlattenerUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/JsonMapFlattenerUnitTests.java @@ -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 map = objectMapper.readValue( + Map map = OBJECT_MAPPER.readValue( "{\"key\": { \"nested\":true} }", Map.class); Map result = JsonMapFlattener.flatten(map); @@ -54,7 +54,7 @@ class JsonMapFlattenerUnitTests { @Test void shouldFlattenDeeplyNestedObject() throws Exception { - Map map = objectMapper.readValue( + Map map = OBJECT_MAPPER.readValue( "{\"key\": { \"nested\": {\"anotherLevel\": \"value\"} } }", Map.class); Map result = JsonMapFlattener.flatten(map); @@ -64,7 +64,7 @@ class JsonMapFlattenerUnitTests { @Test void shouldFlattenNestedListOfSimpleObjects() throws Exception { - Map map = objectMapper.readValue( + Map map = OBJECT_MAPPER.readValue( "{\"key\": [\"one\", \"two\"], \"dotted.key\": [\"one\", \"two\"] }", Map.class); Map result = JsonMapFlattener.flatten(map); @@ -77,7 +77,7 @@ class JsonMapFlattenerUnitTests { @Test void shouldFlattenNestedListOfComplexObject() throws Exception { - Map map = objectMapper.readValue( + Map map = OBJECT_MAPPER.readValue( "{\"key\": [{ \"nested\":\"value\"}, { \"nested\":\"other-value\"}] }", Map.class); Map result = JsonMapFlattener.flatten(map); @@ -89,7 +89,7 @@ class JsonMapFlattenerUnitTests { @Test void shouldFlattenDeeplyNestedListOfComplexObject() throws Exception { - Map map = objectMapper + Map map = OBJECT_MAPPER .readValue( "{\"key\": { \"level1\": [{ \"nested\":\"value\"}, { \"nested\":\"other-value\"}]} }", Map.class); diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/ObjectMapperSupplier.java b/spring-vault-core/src/test/java/org/springframework/vault/support/ObjectMapperSupplier.java new file mode 100644 index 00000000..71b336e1 --- /dev/null +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/ObjectMapperSupplier.java @@ -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; + } +} diff --git a/spring-vault-core/src/test/java/org/springframework/vault/support/PolicySerializationUnitTests.java b/spring-vault-core/src/test/java/org/springframework/vault/support/PolicySerializationUnitTests.java index b8ec794d..5466afc5 100644 --- a/spring-vault-core/src/test/java/org/springframework/vault/support/PolicySerializationUnitTests.java +++ b/spring-vault-core/src/test/java/org/springframework/vault/support/PolicySerializationUnitTests.java @@ -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);