Skip to content

Commit 10ddb4d

Browse files
committed
Use VaultTestContextRunner consistently where possible.
Also, refine method naming and return a new instance of the runner to avoid shared mutable state. See gh-874 Original pull request: gh-875
1 parent 2249ff1 commit 10ddb4d

18 files changed

+189
-117
lines changed

spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@
4343
*
4444
* @author Mark Paluch
4545
*/
46-
// FIXME: 4.0.0
47-
@Disabled("NoClassDefFoundError: org/springframework/http/client/Netty4ClientHttpRequestFactory")
4846
public class AwsSecretIntegrationTests extends IntegrationTestSupport {
4947

5048
private static final String AWS_REGION = "eu-west-1";

spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationTests.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@
3737
*
3838
* @author Mark Paluch
3939
*/
40-
// FIXME: 4.0.0
41-
@Disabled("NoClassDefFoundError: org/springframework/http/client/Netty4ClientHttpRequestFactory")
42-
4340
@SpringBootTest(classes = CustomBootstrapConfiguration.class,
4441
properties = { "VaultConfigAwsBootstrapConfigurationTests.custom.config=true",
4542
"spring.cloud.vault.aws.role=foo", "spring.cloud.bootstrap.enabled=true" })

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/ApplicationFailFastTests.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.springframework.boot.autoconfigure.SpringBootApplication;
2323
import org.springframework.boot.builder.SpringApplicationBuilder;
24+
import org.springframework.cloud.vault.util.VaultTestContextRunner;
2425

2526
import static org.assertj.core.api.Assertions.assertThat;
2627
import static org.assertj.core.api.Assertions.fail;
@@ -31,15 +32,17 @@
3132
* @author Mark Paluch
3233
*/
3334
@SpringBootApplication
34-
3535
public class ApplicationFailFastTests {
3636

3737
@Test
3838
public void contextLoadsWithFailFastUsingLeasing() {
3939
try {
40-
new SpringApplicationBuilder().sources(ApplicationFailFastTests.class)
41-
.run("--server.port=0", "--spring.cloud.bootstrap.enabled=true", "--spring.cloud.vault.failFast=true",
42-
"--spring.cloud.vault.config.lifecycle.enabled=true", "--spring.cloud.vault.port=9999");
40+
VaultTestContextRunner.create()
41+
.withSettings(it -> it.bootstrap(true).failFast())
42+
.withProperties("spring.cloud.vault.config.lifecycle.enabled", "true")
43+
.withProperties("spring.cloud.vault.port", 9999)
44+
.run(ctx -> {
45+
});
4346
fail("failFast option did not produce an exception");
4447
}
4548
catch (Exception e) {
@@ -50,10 +53,14 @@ public void contextLoadsWithFailFastUsingLeasing() {
5053
@Test
5154
public void contextLoadsWithFailFastWithoutLeasing() {
5255
try {
53-
new SpringApplicationBuilder().sources(ApplicationFailFastTests.class)
54-
.run("--server.port=0", "--spring.cloud.bootstrap.enabled=true", "--spring.cloud.vault.failFast=true",
55-
"--spring.cloud.vault.config.lifecycle.enabled=false",
56-
"--spring.cloud.vault.session.lifecycle.enabled=false", "--spring.cloud.vault.port=9999");
56+
VaultTestContextRunner.create()
57+
.withSettings(it -> it.bootstrap(true).failFast())
58+
.withProperties("spring.cloud.vault.config.lifecycle.enabled", false)
59+
.withProperties("spring.cloud.vault.session.lifecycle.enabled", false)
60+
.withProperties("spring.cloud.vault.port", 9999)
61+
.withProperties("server.port", 0)
62+
.run(ctx -> {
63+
});
5764
fail("failFast option did not produce an exception");
5865
}
5966
catch (Exception e) {

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/ReactiveVaultOperationsTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@
4545
*/
4646

4747
@SpringBootTest(classes = ReactiveVaultOperationsTests.TestApplication.class,
48-
properties = { "spring.cloud.vault.host=foo", "spring.cloud.vault.uri=https://localhost:8200",
49-
"spring.cloud.bootstrap.enabled=true" })
48+
properties = { "spring.cloud.bootstrap.enabled=true" })
5049
public class ReactiveVaultOperationsTests {
5150

5251
@Autowired

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigAppRoleTests.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
import org.springframework.beans.factory.annotation.Value;
2727
import org.springframework.boot.SpringApplication;
2828
import org.springframework.boot.autoconfigure.SpringBootApplication;
29-
import org.springframework.boot.test.context.SpringBootTest;
3029
import org.springframework.cloud.vault.util.Settings;
3130
import org.springframework.cloud.vault.util.VaultRule;
31+
import org.springframework.cloud.vault.util.VaultTestContextRunner;
3232
import org.springframework.cloud.vault.util.Version;
3333
import org.springframework.vault.core.VaultOperations;
3434

@@ -45,16 +45,12 @@
4545
*
4646
* @author Mark Paluch
4747
*/
48-
49-
@SpringBootTest(classes = VaultConfigAppRoleTests.TestApplication.class,
50-
properties = { "spring.cloud.vault.authentication=approle",
51-
"spring.cloud.vault.application-name=VaultConfigAppRoleTests", "spring.cloud.bootstrap.enabled=true" })
52-
// see
53-
// https://github.com/spring-cloud/spring-cloud-commons/issues/214
5448
public class VaultConfigAppRoleTests {
5549

56-
@Value("${vault.value}")
57-
String configValue;
50+
VaultTestContextRunner contextRunner = VaultTestContextRunner.of(VaultConfigAppRoleTests.class)
51+
.withAuthentication(VaultProperties.AuthenticationMethod.APPROLE)
52+
.withConfiguration(VaultConfigAppRoleTests.TestApplication.class)
53+
.withSettings(s -> s.bootstrap());
5854

5955
@BeforeAll
6056
public static void beforeClass() {
@@ -107,12 +103,18 @@ public static void beforeClass() {
107103

108104
@Test
109105
public void contextLoads() {
110-
assertThat(this.configValue).isEqualTo("foo");
106+
this.contextRunner.run(ctx -> {
107+
TestApplication application = ctx.getBean(TestApplication.class);
108+
assertThat(application.configValue).isEqualTo("foo");
109+
});
111110
}
112111

113112
@SpringBootApplication
114113
public static class TestApplication {
115114

115+
@Value("${vault.value}")
116+
String configValue;
117+
116118
public static void main(String[] args) {
117119
SpringApplication.run(TestApplication.class, args);
118120
}

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigCubbyholeAuthenticationTests.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import org.springframework.beans.factory.annotation.Value;
2626
import org.springframework.boot.SpringApplication;
2727
import org.springframework.boot.autoconfigure.SpringBootApplication;
28-
import org.springframework.boot.test.context.SpringBootTest;
2928
import org.springframework.cloud.vault.util.VaultRule;
29+
import org.springframework.cloud.vault.util.VaultTestContextRunner;
3030
import org.springframework.cloud.vault.util.Version;
3131
import org.springframework.http.HttpEntity;
3232
import org.springframework.http.HttpHeaders;
@@ -46,15 +46,12 @@
4646
*
4747
* @author Mark Paluch
4848
*/
49-
50-
@SpringBootTest(classes = VaultConfigCubbyholeAuthenticationTests.TestApplication.class,
51-
properties = { "spring.cloud.vault.authentication=cubbyhole",
52-
"spring.cloud.vault.kv.applicationName=VaultConfigCubbyholeAuthenticationTests",
53-
"spring.cloud.bootstrap.enabled=true" })
5449
public class VaultConfigCubbyholeAuthenticationTests {
5550

56-
@Value("${vault.value}")
57-
String configValue;
51+
VaultTestContextRunner contextRunner = VaultTestContextRunner.of(VaultConfigCubbyholeAuthenticationTests.class)
52+
.withAuthentication(VaultProperties.AuthenticationMethod.CUBBYHOLE)
53+
.withConfiguration(VaultConfigCubbyholeAuthenticationTests.TestApplication.class)
54+
.withSettings(s -> s.bootstrap());
5855

5956
@BeforeAll
6057
public static void beforeClass() {
@@ -88,12 +85,18 @@ public static void afterClass() {
8885

8986
@Test
9087
public void contextLoads() {
91-
assertThat(this.configValue).isEqualTo(getClass().getSimpleName());
88+
this.contextRunner.run(ctx -> {
89+
TestApplication application = ctx.getBean(TestApplication.class);
90+
assertThat(application.configValue).isEqualTo(getClass().getSimpleName());
91+
});
9292
}
9393

9494
@SpringBootApplication
9595
public static class TestApplication {
9696

97+
@Value("${vault.value}")
98+
String configValue;
99+
97100
public static void main(String[] args) {
98101
SpringApplication.run(TestApplication.class, args);
99102
}

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigKubernetesTests.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
import org.springframework.beans.factory.annotation.Value;
3030
import org.springframework.boot.SpringApplication;
3131
import org.springframework.boot.autoconfigure.SpringBootApplication;
32-
import org.springframework.boot.test.context.SpringBootTest;
3332
import org.springframework.cloud.vault.util.VaultRule;
33+
import org.springframework.cloud.vault.util.VaultTestContextRunner;
3434
import org.springframework.cloud.vault.util.Version;
3535
import org.springframework.util.StringUtils;
3636
import org.springframework.vault.core.VaultOperations;
@@ -46,17 +46,17 @@
4646
* Integration test using config infrastructure with Kubernetes authentication.
4747
*
4848
* @author Michal Budzyn
49+
* @author Mark Paluch
4950
*/
50-
51-
@SpringBootTest(classes = VaultConfigKubernetesTests.TestApplication.class,
52-
properties = { "spring.cloud.vault.authentication=kubernetes", "spring.cloud.vault.kubernetes.role=my-role",
53-
"spring.cloud.vault.kubernetes.service-account-token-file=../work/minikube/hello-minikube-token",
54-
"spring.cloud.vault.application-name=VaultConfigKubernetesTests",
55-
"spring.cloud.bootstrap.enabled=true" })
5651
public class VaultConfigKubernetesTests {
5752

58-
@Value("${vault.value}")
59-
String configValue;
53+
VaultTestContextRunner contextRunner = VaultTestContextRunner.of(VaultConfigKubernetesTests.class)
54+
.withAuthentication(VaultProperties.AuthenticationMethod.KUBERNETES)
55+
.withConfiguration(VaultConfigTlsCertAuthenticationMountPathTests.TestApplication.class)
56+
.withProperties("spring.cloud.vault.kubernetes.service-account-token-file",
57+
"../work/minikube/hello-minikube-token")
58+
.withProperties("spring.cloud.vault.kubernetes.role", "my-role")
59+
.withSettings(s -> s.bootstrap());
6060

6161
@BeforeAll
6262
public static void beforeClass() {
@@ -100,12 +100,18 @@ public static void beforeClass() {
100100

101101
@Test
102102
public void contextLoads() {
103-
assertThat(this.configValue).isEqualTo("foo");
103+
this.contextRunner.run(ctx -> {
104+
TestApplication app = ctx.getBean(TestApplication.class);
105+
assertThat(app.configValue).isEqualTo("foo");
106+
});
104107
}
105108

106109
@SpringBootApplication
107110
public static class TestApplication {
108111

112+
@Value("${vault.value}")
113+
String configValue;
114+
109115
public static void main(String[] args) {
110116
SpringApplication.run(TestApplication.class, args);
111117
}

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderSingleLocationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
* @author Mark Paluch
4646
*/
4747

48-
@SpringBootTest(classes = VaultConfigLoaderSingleLocationTests.TestApplication.class, properties = {
49-
"spring.cloud.vault.uri=https://localhost:8200", "spring.config.import=vault:secret/config-location" })
48+
@SpringBootTest(classes = VaultConfigLoaderSingleLocationTests.TestApplication.class,
49+
properties = { "spring.config.import=vault:secret/config-location" })
5050
public class VaultConfigLoaderSingleLocationTests {
5151

5252
@Autowired

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@
5050
*/
5151

5252
@SpringBootTest(classes = VaultConfigLoaderTests.TestApplication.class,
53-
properties = { "spring.cloud.vault.uri=https://localhost:8200",
54-
"spring.cloud.vault.application-name=config-data", "spring.config.import=vault:" })
53+
properties = { "spring.cloud.vault.application-name=config-data", "spring.config.import=vault:" })
5554
public class VaultConfigLoaderTests {
5655

5756
@Value("${vault.value}")

spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@
4949
*/
5050

5151
@SpringBootTest(classes = VaultConfigTests.TestApplication.class,
52-
properties = { "spring.cloud.vault.host=foo", "spring.cloud.vault.port=80",
53-
"spring.cloud.vault.uri=https://localhost:8200", "spring.cloud.vault.application-name=testVaultApp",
54-
"spring.cloud.bootstrap.enabled=true" })
52+
properties = { "spring.cloud.vault.application-name=testVaultApp", "spring.cloud.bootstrap.enabled=true" })
5553
public class VaultConfigTests {
5654

5755
@Value("${vault.value}")

0 commit comments

Comments
 (0)