From c2cee8572e70725665f8b866803311e3866af8bc Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 15 May 2017 17:25:14 +0200 Subject: [PATCH] Polishing. --- .../vault/config/aws/VaultConfigAwsTests.java | 8 +++--- .../LeasingVaultPropertySourceLocator.java | 2 +- .../vault/config/PropertyNameTransformer.java | 5 ++-- ...BootstrapHealthIndicatorConfiguration.java | 11 ++++---- .../vault/config/VaultHealthIndicator.java | 11 +++++--- .../vault/config/VaultConfigAppIdTests.java | 13 +++++----- .../vault/config/VaultConfigAppRoleTests.java | 15 +++++------ ...ultConfigCubbyholeAuthenticationTests.java | 1 + .../config/VaultConfigDisabledTests.java | 8 +++--- ...aultConfigGenericBackendDisabledTests.java | 20 +++++++-------- .../cloud/vault/config/VaultConfigTests.java | 1 + .../config/VaultConfigWithContextTests.java | 13 +++++----- .../VaultConfigWithVaultConfigurerTests.java | 1 + .../config/VaultHealthIndicatorUnitTests.java | 25 ++++++++++--------- .../VaultPropertySourceLocatorUnitTests.java | 3 --- 15 files changed, 72 insertions(+), 65 deletions(-) diff --git a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java index 217696cb..7114d5c8 100644 --- a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java +++ b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java @@ -15,9 +15,6 @@ */ package org.springframework.cloud.vault.config.aws; -import static org.assertj.core.api.Assertions.*; -import static org.junit.Assume.*; - import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -25,6 +22,7 @@ import java.util.Map; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -34,11 +32,15 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.StringUtils; import org.springframework.vault.core.VaultOperations; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assume.assumeTrue; + /** * Integration tests using the aws secret backend. In case this test should fail because * of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is * referenced with {@code ../work/keystore.jks}. + * *

* This test requires AWS credentials and a region, see {@link #AWS_ACCESS_KEY}, * {@link #AWS_SECRET_KEY} and the {@link SpringBootTest} properties to be provided diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/LeasingVaultPropertySourceLocator.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/LeasingVaultPropertySourceLocator.java index 37589b5d..b8d2706e 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/LeasingVaultPropertySourceLocator.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/LeasingVaultPropertySourceLocator.java @@ -91,7 +91,7 @@ class LeasingVaultPropertySourceLocator extends VaultPropertySourceLocatorSuppor /** * Decorated {@link PropertySource} creation to catch and throw the first error that - * occurred durin initial secret retrieval. + * occurred during initial secret retrieval. * * @param secret * @param accessor diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/PropertyNameTransformer.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/PropertyNameTransformer.java index 735d6812..849bf795 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/PropertyNameTransformer.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/PropertyNameTransformer.java @@ -25,14 +25,15 @@ import org.springframework.vault.core.util.PropertyTransformer; /** * {@link PropertyTransformer} to transform a {@link Map} of properties by applying key * name translation. + * *

* Existing keys will be transformed to a target key name while retaining the original * value. Key name translation will leave other, not specified key names untouched. * * @author Mark Paluch */ -public class PropertyNameTransformer extends PropertyTransformerSupport implements - PropertyTransformer { +public class PropertyNameTransformer extends PropertyTransformerSupport + implements PropertyTransformer { private final Map nameMapping = new HashMap<>(); diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapHealthIndicatorConfiguration.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapHealthIndicatorConfiguration.java index 29006dd8..7629d3d3 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapHealthIndicatorConfiguration.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapHealthIndicatorConfiguration.java @@ -24,25 +24,26 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.vault.core.VaultOperations; /** * @author Stuart Ingram + * @author Mark Paluch */ @Configuration @ConditionalOnBean(VaultBootstrapConfiguration.class) @ConditionalOnProperty(name = "spring.cloud.vault.enabled", matchIfMissing = true) @ConditionalOnExpression("${health.vault.enabled:true}") @AutoConfigureBefore({ EndpointAutoConfiguration.class }) -@AutoConfigureAfter({ VaultBootstrapConfiguration.class, HealthIndicatorAutoConfiguration.class }) +@AutoConfigureAfter({ VaultBootstrapConfiguration.class, + HealthIndicatorAutoConfiguration.class }) public class VaultBootstrapHealthIndicatorConfiguration { @Bean @ConditionalOnMissingBean(name = "vaultHealthIndicator") - public HealthIndicator vaultHealthIndicator() { - return new VaultHealthIndicator(); + public HealthIndicator vaultHealthIndicator(VaultOperations vaultOperations) { + return new VaultHealthIndicator(vaultOperations); } - } diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java index a1132990..998d8c90 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultHealthIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 the original author or authors. + * Copyright 2016-2017 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. @@ -15,7 +15,6 @@ */ package org.springframework.cloud.vault.config; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.vault.core.VaultOperations; @@ -23,11 +22,15 @@ import org.springframework.vault.support.VaultHealth; /** * @author Stuart Ingram + * @author Mark Paluch */ public class VaultHealthIndicator implements HealthIndicator { - @Autowired - private VaultOperations vaultOperations; + private final VaultOperations vaultOperations; + + public VaultHealthIndicator(VaultOperations vaultOperations) { + this.vaultOperations = vaultOperations; + } @Override public Health health() { diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppIdTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppIdTests.java index 8ec55b67..b53bd95e 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppIdTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppIdTests.java @@ -19,6 +19,10 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -29,19 +33,16 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.vault.authentication.IpAddressUserId; import org.springframework.vault.core.VaultOperations; -import static org.assertj.core.api.Assertions.*; - -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import static org.assertj.core.api.Assertions.assertThat; /** * Integration test using config infrastructure with AppId authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is * referenced with {@code ../work/keystore.jks}. - * + * * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppRoleTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppRoleTests.java index 54c62710..4941cb48 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppRoleTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppRoleTests.java @@ -19,6 +19,10 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -29,20 +33,17 @@ import org.springframework.cloud.vault.util.Version; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.vault.core.VaultOperations; -import static org.assertj.core.api.Assertions.*; -import static org.junit.Assume.*; - -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assume.assumeTrue; /** * Integration test using config infrastructure with AppRole authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is * referenced with {@code ../work/keystore.jks}. - * + * * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigCubbyholeAuthenticationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigCubbyholeAuthenticationTests.java index ab89c416..53395a9a 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigCubbyholeAuthenticationTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigCubbyholeAuthenticationTests.java @@ -41,6 +41,7 @@ import static org.junit.Assume.assumeTrue; /** * Integration test using config infrastructure with Cubbyhole authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigDisabledTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigDisabledTests.java index 5f3ddc84..95c8bedb 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigDisabledTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigDisabledTests.java @@ -35,6 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** * Integration test using config infrastructure with token authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is @@ -52,11 +53,8 @@ public class VaultConfigDisabledTests { VaultRule vaultRule = new VaultRule(); vaultRule.before(); - vaultRule - .prepare() - .getVaultOperations() - .write("secret/testVaultApp", - Collections.singletonMap("vault.value", "foo")); + vaultRule.prepare().getVaultOperations().write("secret/testVaultApp", + Collections.singletonMap("vault.value", "foo")); } @Autowired diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigGenericBackendDisabledTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigGenericBackendDisabledTests.java index d12102ba..4a7310a8 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigGenericBackendDisabledTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigGenericBackendDisabledTests.java @@ -17,6 +17,10 @@ package org.springframework.cloud.vault.config; import java.util.Collections; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -25,19 +29,16 @@ import org.springframework.cloud.vault.util.VaultRule; import org.springframework.core.env.Environment; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.assertj.core.api.Assertions.*; - -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import static org.assertj.core.api.Assertions.assertThat; /** * Integration test using config infrastructure with token authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is * referenced with {@code ../work/keystore.jks}. - * + * * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) @@ -50,11 +51,8 @@ public class VaultConfigGenericBackendDisabledTests { VaultRule vaultRule = new VaultRule(); vaultRule.before(); - vaultRule - .prepare() - .getVaultOperations() - .write("secret/testVaultApp", - Collections.singletonMap("vault.value", "foo")); + vaultRule.prepare().getVaultOperations().write("secret/testVaultApp", + Collections.singletonMap("vault.value", "foo")); } @Autowired diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java index a640fb49..6a428db7 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java @@ -40,6 +40,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** * Integration test using config infrastructure with token authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithContextTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithContextTests.java index 084f86d3..65605696 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithContextTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithContextTests.java @@ -17,6 +17,10 @@ package org.springframework.cloud.vault.config; import java.util.Collections; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -26,19 +30,16 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.vault.core.VaultOperations; -import static org.assertj.core.api.Assertions.*; - -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import static org.assertj.core.api.Assertions.assertThat; /** * Integration test using config infrastructure with token authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is * referenced with {@code ../work/keystore.jks}. - * + * * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithVaultConfigurerTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithVaultConfigurerTests.java index 069266b0..945ffa77 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithVaultConfigurerTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigWithVaultConfigurerTests.java @@ -35,6 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** * Integration test using config infrastructure with token authentication. + * *

* In case this test should fail because of SSL make sure you run the test within the * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java index a2391bc0..0c675e35 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultHealthIndicatorUnitTests.java @@ -15,21 +15,21 @@ */ package org.springframework.cloud.vault.config; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; import org.springframework.vault.core.VaultOperations; import org.springframework.vault.core.VaultSysOperations; import org.springframework.vault.support.VaultHealth; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.when; /** * Unit tests for {@link VaultHealthIndicator}. @@ -39,9 +39,6 @@ import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class VaultHealthIndicatorUnitTests { - @InjectMocks - VaultHealthIndicator healthIndicator = new VaultHealthIndicator(); - @Mock VaultOperations vaultOperations; @@ -51,9 +48,13 @@ public class VaultHealthIndicatorUnitTests { @Mock VaultHealth healthResponse; + VaultHealthIndicator healthIndicator; + @Before public void before() throws Exception { + healthIndicator = new VaultHealthIndicator(vaultOperations); + when(vaultOperations.opsForSys()).thenReturn(vaultSysOperations); when(vaultSysOperations.health()).thenReturn(healthResponse); } diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorUnitTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorUnitTests.java index 4e58b578..2cf5c894 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorUnitTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceLocatorUnitTests.java @@ -46,9 +46,6 @@ public class VaultPropertySourceLocatorUnitTests { @Mock private ConfigurableEnvironment configurableEnvironment; - @Mock - private VaultPropertySource vaultPropertySource; - @Before public void before() { propertySourceLocator = new VaultPropertySourceLocator(operations,