diff --git a/config/vaultconfig.json b/config/vaultconfig.json
new file mode 100644
index 00000000..18b0f8cc
--- /dev/null
+++ b/config/vaultconfig.json
@@ -0,0 +1,15 @@
+{
+ "storage": {
+ "inmem": {}
+ },
+ "listener": {
+ "tcp": {
+ "address": "0.0.0.0:8200",
+ "tls_cert_file": "/tmp/localhost.cert.pem",
+ "tls_key_file": "/tmp/localhost.decrypted.key.pem"
+ }
+ },
+ "plugin_directory": "plugins",
+ "api_addr": "https://0.0.0.0:8200",
+ "disable_mlock": true
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0b72be56..c47a4395 100644
--- a/pom.xml
+++ b/pom.xml
@@ -181,6 +181,13 @@
3.18.1
test
+
+
+ org.testcontainers
+ vault
+ 1.21.4
+ test
+
@@ -209,6 +216,25 @@
org.apache.maven.plugins
maven-checkstyle-plugin
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 3.6.3
+
+
+ generate-certificates
+ generate-sources
+
+ ./src/test/bash/create_certificates.sh
+
+
+ exec
+
+
+ false
+
+
+
@@ -301,14 +327,6 @@
false
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/libs-milestone-local
-
- false
-
-
spring-releases
Spring Releases
@@ -330,18 +348,10 @@
false
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/libs-milestone-local
-
- false
-
-
spring-releases
Spring Releases
- https://repo.spring.io/libs-release-local
+ https://repo.spring.io/release
false
diff --git a/spring-cloud-vault-config-aws/pom.xml b/spring-cloud-vault-config-aws/pom.xml
index 37b9e40a..0df8be9a 100644
--- a/spring-cloud-vault-config-aws/pom.xml
+++ b/spring-cloud-vault-config-aws/pom.xml
@@ -38,12 +38,6 @@
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
io.netty
netty-all
diff --git a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java
index 1281d43d..8004ffdf 100644
--- a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java
@@ -33,7 +33,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfiguration.AwsSecretBackendMetadataFactory.forAws;
/**
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 72a69038..81f41c26 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
@@ -32,7 +32,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the aws secret backend. In case this test should fail because
diff --git a/spring-cloud-vault-config-consul/pom.xml b/spring-cloud-vault-config-consul/pom.xml
index 2bf8a4d3..8d12a2a0 100644
--- a/spring-cloud-vault-config-consul/pom.xml
+++ b/spring-cloud-vault-config-consul/pom.xml
@@ -40,12 +40,6 @@
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
org.apache.httpcomponents.client5
httpclient5
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java
index 101422d5..6f839fb6 100644
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java
@@ -32,7 +32,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests for {@link VaultConfigTemplate} using the consul secret backend. This
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java
index 5db96ad4..818f0baf 100644
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java
+++ b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java
@@ -36,7 +36,7 @@
import org.springframework.vault.support.VaultHealth;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Tests for {@link DiscoveryBootstrapConfigurationTests}.
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java
index f19f85c0..5c6f4726 100644
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java
+++ b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java
@@ -30,7 +30,7 @@
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestTemplate;
-import static org.junit.Assume.assumeFalse;
+import static org.junit.jupiter.api.Assumptions.assumeFalse;
/**
* Utility to setup Consul.
@@ -72,8 +72,8 @@ static void setupConsul(VaultOperations vaultOperations, String consulBackend) {
}
catch (HttpStatusCodeException e) {
- assumeFalse("Skipping because Consul is not configured as we expect it to be",
- e.getStatusCode().is4xxClientError());
+ assumeFalse(e.getStatusCode().is4xxClientError(),
+ "Skipping because Consul is not configured as we expect it to be");
throw e;
}
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulConfigDataTests.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulConfigDataTests.java
index b3a49b06..68c303df 100644
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulConfigDataTests.java
+++ b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulConfigDataTests.java
@@ -38,7 +38,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Tests for {@link VaultConfigConsulConfigDataTests}.
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulTests.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulTests.java
index 39902a2b..576750a3 100644
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulTests.java
+++ b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulTests.java
@@ -45,8 +45,8 @@
import org.springframework.web.client.RestTemplate;
import static org.assertj.core.api.Java6Assertions.assertThat;
-import static org.junit.Assume.assumeFalse;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeFalse;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the consul secret backend. In case this test should fail
@@ -135,8 +135,8 @@ public static void beforeClass() {
}
catch (HttpStatusCodeException e) {
- assumeFalse("Skipping because Consul is not configured as we expect it to be",
- e.getStatusCode().is4xxClientError());
+ assumeFalse(e.getStatusCode().is4xxClientError(),
+ "Skipping because Consul is not configured as we expect it to be");
throw e;
}
diff --git a/spring-cloud-vault-config-databases/pom.xml b/spring-cloud-vault-config-databases/pom.xml
index 00b61450..cf1ec387 100644
--- a/spring-cloud-vault-config-databases/pom.xml
+++ b/spring-cloud-vault-config-databases/pom.xml
@@ -36,12 +36,6 @@
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
org.apache.cassandra
java-driver-core
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CassandraSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CassandraSecretIntegrationTests.java
index 1e83c121..0c23723b 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CassandraSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CassandraSecretIntegrationTests.java
@@ -32,7 +32,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CouchbaseSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CouchbaseSecretIntegrationTests.java
index 2a19a35c..6833877b 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CouchbaseSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/CouchbaseSecretIntegrationTests.java
@@ -33,7 +33,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/ElasticsearchSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/ElasticsearchSecretIntegrationTests.java
index b3c111cd..df18af11 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/ElasticsearchSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/ElasticsearchSecretIntegrationTests.java
@@ -33,7 +33,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MongoSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MongoSecretIntegrationTests.java
index 650e0a4d..6e3d734e 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MongoSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MongoSecretIntegrationTests.java
@@ -34,7 +34,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlDatabaseSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlDatabaseSecretIntegrationTests.java
index d520e6df..f1ad7f0a 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlDatabaseSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlDatabaseSecretIntegrationTests.java
@@ -31,7 +31,7 @@
import org.springframework.cloud.vault.util.Version;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlSecretIntegrationTests.java
index 527bf515..aed6b010 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/MySqlSecretIntegrationTests.java
@@ -32,7 +32,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/PostgreSqlSecretIntegrationTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/PostgreSqlSecretIntegrationTests.java
index 88ffce09..0395243d 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/PostgreSqlSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/PostgreSqlSecretIntegrationTests.java
@@ -32,7 +32,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.databases.VaultConfigDatabaseBootstrapConfiguration.DatabaseSecretBackendMetadataFactory.forDatabase;
/**
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCassandraTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCassandraTests.java
index 73b82d26..1b743816 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCassandraTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCassandraTests.java
@@ -34,7 +34,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the cassandra secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseDatabaseTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseDatabaseTests.java
index af3cddb2..a0921cfb 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseDatabaseTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseDatabaseTests.java
@@ -36,7 +36,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the database secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseTests.java
index d43598eb..4100634f 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigCouchbaseTests.java
@@ -35,7 +35,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the couchbase secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMongoTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMongoTests.java
index 90861cdb..ca104c08 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMongoTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMongoTests.java
@@ -39,7 +39,7 @@
import org.springframework.cloud.vault.util.Version;
import org.springframework.vault.core.VaultOperations;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the mongodb secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabaseTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabaseTests.java
index e3d01129..f29ec832 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabaseTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabaseTests.java
@@ -34,7 +34,7 @@
import org.springframework.cloud.vault.util.VaultRule;
import org.springframework.cloud.vault.util.Version;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the database secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesBootstrapTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesBootstrapTests.java
index 95c2e0e3..2271961f 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesBootstrapTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesBootstrapTests.java
@@ -37,7 +37,7 @@
import org.springframework.cloud.vault.util.Version;
import org.springframework.vault.core.VaultOperations;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the database secret backend with multi-database support. In
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesTests.java
index c3dea56b..c24a6fae 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlDatabasesTests.java
@@ -34,7 +34,7 @@
import org.springframework.cloud.vault.util.VaultRule;
import org.springframework.cloud.vault.util.Version;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the database secret backend with multi-database support. In
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlTests.java
index a1422df8..0f514c28 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigMySqlTests.java
@@ -35,7 +35,7 @@
import org.springframework.cloud.vault.util.VaultRule;
import org.springframework.vault.core.VaultOperations;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the mysql secret backend. In case this test should fail because
diff --git a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigPostgreSqlTests.java b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigPostgreSqlTests.java
index 7b0bc84d..199124d1 100644
--- a/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigPostgreSqlTests.java
+++ b/spring-cloud-vault-config-databases/src/test/java/org/springframework/cloud/vault/config/databases/VaultConfigPostgreSqlTests.java
@@ -37,7 +37,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the postgresql secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config-rabbitmq/pom.xml b/spring-cloud-vault-config-rabbitmq/pom.xml
index 474ad96e..d9a83315 100644
--- a/spring-cloud-vault-config-rabbitmq/pom.xml
+++ b/spring-cloud-vault-config-rabbitmq/pom.xml
@@ -38,12 +38,6 @@
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
org.apache.httpcomponents.client5
httpclient5
diff --git a/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/RabbitMqSecretIntegrationTests.java b/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/RabbitMqSecretIntegrationTests.java
index 7ec36b66..2ebed952 100644
--- a/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/RabbitMqSecretIntegrationTests.java
+++ b/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/RabbitMqSecretIntegrationTests.java
@@ -34,7 +34,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.config.rabbitmq.VaultConfigRabbitMqBootstrapConfiguration.RabbitMqSecretBackendMetadataFactory.forRabbitMq;
/**
diff --git a/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/VaultConfigRabbitMqTests.java b/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/VaultConfigRabbitMqTests.java
index f0edcdd5..662d56d3 100644
--- a/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/VaultConfigRabbitMqTests.java
+++ b/spring-cloud-vault-config-rabbitmq/src/test/java/org/springframework/cloud/vault/config/rabbitmq/VaultConfigRabbitMqTests.java
@@ -37,7 +37,7 @@
import org.springframework.cloud.vault.util.Version;
import org.springframework.vault.core.VaultOperations;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests using the rabbitmq secret backend. In case this test should fail
diff --git a/spring-cloud-vault-config/pom.xml b/spring-cloud-vault-config/pom.xml
index 3c32ab75..bce7e1d0 100644
--- a/spring-cloud-vault-config/pom.xml
+++ b/spring-cloud-vault-config/pom.xml
@@ -180,11 +180,6 @@
test
-
- org.junit.vintage
- junit-vintage-engine
- test
-
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/ReactiveVaultOperationsTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/ReactiveVaultOperationsTests.java
index 133c3342..41fd6637 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/ReactiveVaultOperationsTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/ReactiveVaultOperationsTests.java
@@ -44,8 +44,7 @@
* @author Mark Paluch
*/
@SpringBootTest(classes = ReactiveVaultOperationsTests.TestApplication.class,
- properties = { "spring.cloud.vault.host=foo", "spring.cloud.vault.uri=https://localhost:8200",
- "spring.cloud.bootstrap.enabled=true" })
+ properties = { "spring.cloud.bootstrap.enabled=true" })
public class ReactiveVaultOperationsTests {
@Autowired
@@ -56,12 +55,13 @@ public static void beforeClass() {
VaultRule vaultRule = new VaultRule();
vaultRule.before();
+ VaultRule.initializeSystemProperties();
Map object = new HashMap<>();
object.put("vault.value", "foo");
object.put("nested", Collections.singletonMap("key", "value"));
- vaultRule.prepare().getVaultOperations().write("secret/testVaultApp", object);
+ VaultRule.prepare().getVaultOperations().write("secret/testVaultApp", object);
}
@Test
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 831024da..f4c812f3 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
@@ -33,7 +33,7 @@
import org.springframework.vault.core.VaultOperations;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration test using config infrastructure with AppRole authentication.
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 8968f77c..4b03440a 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
@@ -34,7 +34,7 @@
import org.springframework.vault.support.VaultResponse;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration test using config infrastructure with Cubbyhole authentication.
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigKubernetesTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigKubernetesTests.java
index 41e22515..4c8b0f02 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigKubernetesTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigKubernetesTests.java
@@ -39,7 +39,7 @@
import org.springframework.vault.support.Policy.Rule;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.springframework.cloud.vault.util.Settings.findWorkDir;
/**
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderSingleLocationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderSingleLocationTests.java
index 58d11b15..4998cb71 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderSingleLocationTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderSingleLocationTests.java
@@ -44,8 +44,8 @@
*
* @author Mark Paluch
*/
-@SpringBootTest(classes = VaultConfigLoaderSingleLocationTests.TestApplication.class, properties = {
- "spring.cloud.vault.uri=https://localhost:8200", "spring.config.import=vault:secret/config-location" })
+@SpringBootTest(classes = VaultConfigLoaderSingleLocationTests.TestApplication.class,
+ properties = { "spring.config.import=vault:secret/config-location" })
public class VaultConfigLoaderSingleLocationTests {
@Autowired
@@ -59,12 +59,13 @@ public static void beforeClass() {
VaultRule vaultRule = new VaultRule();
vaultRule.before();
+ VaultRule.initializeSystemProperties();
Map object = new HashMap<>();
object.put("vault-key", "config-data works");
object.put("nested", Collections.singletonMap("key", "value"));
- vaultRule.prepare().getVaultOperations().write("secret/config-location", object);
+ VaultRule.prepare().getVaultOperations().write("secret/config-location", object);
}
@Test
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderTests.java
index 47a7810e..34e45e8e 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigLoaderTests.java
@@ -48,8 +48,7 @@
* @author Mark Paluch
*/
@SpringBootTest(classes = VaultConfigLoaderTests.TestApplication.class,
- properties = { "spring.cloud.vault.uri=https://localhost:8200",
- "spring.cloud.vault.application-name=config-data", "spring.config.import=vault:" })
+ properties = { "spring.cloud.vault.application-name=config-data", "spring.config.import=vault:" })
public class VaultConfigLoaderTests {
@Value("${vault.value}")
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTemplateIntegrationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTemplateIntegrationTests.java
index a2f8c6ea..f6dfdd51 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTemplateIntegrationTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTemplateIntegrationTests.java
@@ -26,7 +26,7 @@
import org.springframework.cloud.vault.util.Version;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests for {@link VaultConfigTemplate}.
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 c7033fe0..88a8fa4f 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
@@ -48,9 +48,7 @@
* @author Mark Paluch
*/
@SpringBootTest(classes = VaultConfigTests.TestApplication.class,
- properties = { "spring.cloud.vault.host=foo", "spring.cloud.vault.port=80",
- "spring.cloud.vault.uri=https://localhost:8200", "spring.cloud.vault.application-name=testVaultApp",
- "spring.cloud.bootstrap.enabled=true" })
+ properties = { "spring.cloud.vault.application-name=testVaultApp", "spring.cloud.bootstrap.enabled=true" })
public class VaultConfigTests {
@Value("${vault.value}")
@@ -67,12 +65,13 @@ public static void beforeClass() {
VaultRule vaultRule = new VaultRule();
vaultRule.before();
+ VaultRule.initializeSystemProperties();
Map object = new HashMap<>();
object.put("vault.value", "foo");
object.put("nested", Collections.singletonMap("key", "value"));
- vaultRule.prepare().getVaultOperations().write("secret/testVaultApp", object);
+ VaultRule.prepare().getVaultOperations().write("secret/testVaultApp", object);
}
@Test
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTlsCertAuthenticationMountPathTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTlsCertAuthenticationMountPathTests.java
index 23d99d71..b836544d 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTlsCertAuthenticationMountPathTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTlsCertAuthenticationMountPathTests.java
@@ -61,6 +61,7 @@ public static void beforeClass() {
VaultRule vaultRule = new VaultRule();
vaultRule.before();
+ VaultRule.initializeSystemProperties();
VaultProperties vaultProperties = Settings.createVaultProperties();
@@ -73,7 +74,7 @@ public static void beforeClass() {
.authMount(vaultProperties.getSsl().getCertAuthPath(), VaultMount.builder().type("cert").build());
}
- VaultOperations vaultOperations = vaultRule.prepare().getVaultOperations();
+ VaultOperations vaultOperations = VaultRule.prepare().getVaultOperations();
String rules = "path \"*\" {\n capabilities = [\"read\"]\n}";
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultNamespaceTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultNamespaceTests.java
index 6722f6ec..51ff2d27 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultNamespaceTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultNamespaceTests.java
@@ -22,8 +22,7 @@
import java.util.List;
import java.util.Map;
-import org.junit.Assume;
-import org.junit.ClassRule;
+import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Mono;
@@ -31,6 +30,7 @@
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.Status;
+import org.springframework.cloud.vault.util.PrepareVault;
import org.springframework.cloud.vault.util.Settings;
import org.springframework.cloud.vault.util.TestRestTemplateFactory;
import org.springframework.cloud.vault.util.VaultRule;
@@ -58,9 +58,6 @@
public class VaultNamespaceTests {
- @ClassRule
- public static VaultRule vaultRule = new VaultRule();
-
static final Policy POLICY = Policy.of(Policy.Rule.builder()
.path("/*")
.capabilities(Policy.BuiltinCapabilities.READ, Policy.BuiltinCapabilities.CREATE,
@@ -78,15 +75,15 @@ public class VaultNamespaceTests {
@BeforeEach
public void before() {
- Assume.assumeTrue("Namespaces require enterprise version",
- this.vaultRule.prepare().getVersion().isEnterprise());
+ PrepareVault prepareVault = VaultRule.prepare();
+ Assumptions.assumeTrue(prepareVault.getVersion().isEnterprise(), "Namespaces require enterprise version");
List namespaces = new ArrayList<>(Arrays.asList("dev/", "marketing/"));
- List list = this.vaultRule.prepare().getVaultOperations().list("sys/namespaces");
+ List list = prepareVault.getVaultOperations().list("sys/namespaces");
namespaces.removeAll(list);
for (String namespace : namespaces) {
- this.vaultRule.prepare().getVaultOperations().write("sys/namespaces/" + namespace.replaceAll("/", ""));
+ prepareVault.getVaultOperations().write("sys/namespaces/" + namespace.replaceAll("/", ""));
}
this.maketingRestTemplate = RestTemplateBuilder.builder()
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceIntegrationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceIntegrationTests.java
index 85871c29..6af6a792 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceIntegrationTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultPropertySourceIntegrationTests.java
@@ -26,7 +26,7 @@
import org.springframework.cloud.vault.util.Version;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration tests for {@link VaultPropertySource}.
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultVersionedKvBackendConfigTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultVersionedKvBackendConfigTests.java
index d2d9718e..a9011db7 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultVersionedKvBackendConfigTests.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultVersionedKvBackendConfigTests.java
@@ -37,7 +37,7 @@
import org.springframework.web.client.RestTemplate;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Integration test using config infrastructure with token authentication.
@@ -51,10 +51,8 @@
*/
@SpringBootTest(classes = VaultVersionedKvBackendConfigTests.TestApplication.class,
- properties = { "spring.cloud.vault.host=foo", "spring.cloud.vault.port=80",
- "spring.cloud.vault.uri=https://localhost:8200", "spring.cloud.vault.kv.enabled=true",
- "spring.cloud.vault.kv.backend=versioned", "spring.cloud.vault.application-name=testVaultApp",
- "spring.cloud.bootstrap.enabled=true" })
+ properties = { "spring.cloud.vault.kv.enabled=true", "spring.cloud.vault.kv.backend=versioned",
+ "spring.cloud.vault.application-name=testVaultApp", "spring.cloud.bootstrap.enabled=true" })
public class VaultVersionedKvBackendConfigTests {
@Value("${vault.value}")
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/IntegrationTestSupport.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/IntegrationTestSupport.java
index ea2efe7b..88976f9e 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/IntegrationTestSupport.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/IntegrationTestSupport.java
@@ -29,7 +29,7 @@ public abstract class IntegrationTestSupport {
public final VaultRule vaultRule = new VaultRule();
public final PrepareVault prepare() {
- return this.vaultRule.prepare();
+ return VaultRule.prepare();
}
}
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/Settings.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/Settings.java
index 052b33af..f7244009 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/Settings.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/Settings.java
@@ -73,11 +73,41 @@ public static File findWorkDir() {
* @throws IllegalStateException If the {@code work} directory cannot be found.
*/
public static File findWorkDir(File directory) {
+ return findDir(directory, "work");
+ }
+
+ /**
+ * Find the {@code work} directory, starting at the {@code user.dir} directory. Search
+ * is performed by walking the parent directories.
+ * @return the {@link File} pointing to the {@code work} directory
+ * @throws IllegalStateException If the {@code work} directory cannot be found.
+ */
+ public static File findConfigDir() {
+ return findConfigDir(new File(System.getProperty("user.dir")));
+ }
+
+ /**
+ * Find the {@code work} directory, starting at the given {@code directory}. Search is
+ * performed by walking the parent directories.
+ * @return the {@link File} pointing to the {@code work} directory
+ * @throws IllegalStateException If the {@code work} directory cannot be found.
+ */
+ public static File findConfigDir(File directory) {
+ return findDir(directory, "config");
+ }
+
+ /**
+ * Find the {@code toFind} directory, starting at the given {@code dirToSearch}.
+ * Search is performed by walking the parent directories.
+ * @return the {@link File} pointing to the {@code toFind} directory
+ * @throws IllegalStateException If the {@code toFind} directory cannot be found.
+ */
+ public static File findDir(File dirToSearch, String toFind) {
- File searchLevel = directory;
+ File searchLevel = dirToSearch;
while (searchLevel.getParentFile() != null && searchLevel.getParentFile() != searchLevel) {
- File work = new File(searchLevel, "work");
+ File work = new File(searchLevel, toFind);
if (work.isDirectory() && work.exists()) {
return work;
}
@@ -86,7 +116,7 @@ public static File findWorkDir(File directory) {
}
throw new IllegalStateException(String.format("Cannot find work directory in %s or any parent directories",
- directory.getAbsoluteFile()));
+ dirToSearch.getAbsoluteFile()));
}
/**
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java
index f47b6b61..48298a57 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/TestRestTemplateFactory.java
@@ -39,7 +39,13 @@
*/
public class TestRestTemplateFactory {
- public static final VaultEndpoint TEST_VAULT_ENDPOINT = new VaultEndpoint();
+ public static final VaultEndpoint TEST_VAULT_ENDPOINT;
+
+ static {
+ VaultRule.createContainer();
+ VaultRule.initializeSystemProperties();
+ TEST_VAULT_ENDPOINT = VaultRule.vaultEndpoint();
+ }
private static final AtomicReference factoryCache = new AtomicReference<>();
diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/VaultRule.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/VaultRule.java
index 69b3d101..3c89f292 100644
--- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/VaultRule.java
+++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/util/VaultRule.java
@@ -16,13 +16,29 @@
package org.springframework.cloud.vault.util;
+import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
+import java.util.HashMap;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.utility.MountableFile;
+import org.testcontainers.vault.VaultContainer;
+
+import org.springframework.cloud.vault.config.VaultProperties;
+import org.springframework.context.ApplicationContextInitializer;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.env.MapPropertySource;
+import org.springframework.core.env.MutablePropertySources;
+import org.springframework.core.io.FileSystemResource;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.util.Assert;
import org.springframework.vault.authentication.SessionManager;
@@ -31,13 +47,18 @@
import org.springframework.vault.support.SslConfiguration;
import org.springframework.vault.support.VaultToken;
-public class VaultRule implements BeforeEachCallback {
+public class VaultRule implements BeforeEachCallback,
+ /* ParameterResolver, */ ApplicationContextInitializer {
+
+ static final Logger logger = LoggerFactory.getLogger(VaultRule.class);
public static final Version VERSIONING_INTRODUCED_WITH = Version.parse("0.10.0");
+ public static final VaultContainer vaultContainer = createContainer();
+
private final VaultEndpoint vaultEndpoint;
- private final PrepareVault prepareVault;
+ private static PrepareVault prepareVault = null;
private VaultToken token;
@@ -48,7 +69,7 @@ public class VaultRule implements BeforeEachCallback {
* @see VaultEndpoint
*/
public VaultRule() {
- this(Settings.createSslConfiguration(), TestRestTemplateFactory.TEST_VAULT_ENDPOINT);
+ this(Settings.createSslConfiguration(), null);
}
/**
@@ -60,15 +81,95 @@ public VaultRule() {
public VaultRule(SslConfiguration sslConfiguration, VaultEndpoint vaultEndpoint) {
Assert.notNull(sslConfiguration, "SslConfiguration must not be null");
- Assert.notNull(vaultEndpoint, "VaultEndpoint must not be null");
ClientHttpRequestFactory requestFactory = TestRestTemplateFactory.create(sslConfiguration).getRequestFactory();
- VaultTemplate vaultTemplate = new VaultTemplate(vaultEndpoint, requestFactory, new PreparingSessionManager());
+ startVault();
+ if (vaultEndpoint == null) {
+ this.vaultEndpoint = vaultEndpoint();
+ // this.vaultEndpoint.setScheme("http"); // ignore ssl for now
+ }
+ else {
+ this.vaultEndpoint = vaultEndpoint;
+ }
+
+ VaultTemplate vaultTemplate = new VaultTemplate(this.vaultEndpoint, requestFactory,
+ new PreparingSessionManager());
this.token = Settings.token();
- this.prepareVault = new PrepareVault(vaultTemplate);
- this.vaultEndpoint = vaultEndpoint;
+ prepareVault = new PrepareVault(vaultTemplate);
+ }
+
+ public static VaultEndpoint vaultEndpoint() {
+ return VaultEndpoint.create(vaultContainer.getHost(), vaultContainer.getMappedPort(8200));
+ }
+
+ public static PrepareVault prepare() {
+ return prepareVault;
+ }
+
+ public static void startVault() {
+ if (vaultContainer != null && !vaultContainer.isRunning()) {
+ vaultContainer.start();
+ }
+ }
+
+ @SuppressWarnings({ "rawtypes" })
+ public static VaultContainer createContainer() {
+ return createContainer("1.11.0");
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public static VaultContainer createContainer(String version) {
+ Path config = Settings.findConfigDir().toPath();
+ String vaultConfig = null;
+ try {
+ vaultConfig = new FileSystemResource(config.resolve("vaultconfig.json"))
+ .getContentAsString(StandardCharsets.UTF_8);
+ vaultConfig = vaultConfig.replaceAll("\\n", "");
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ Path work = Settings.findWorkDir().toPath();
+ String dockerImageName = "hashicorp/vault:" + version;
+ VaultContainer container = (VaultContainer) new VaultContainer(dockerImageName)
+ // .withEnv("VAULT_LOG_LEVEL", "debug")
+ .withEnv("VAULT_LOCAL_CONFIG", vaultConfig)
+ .withCopyFileToContainer(MountableFile.forHostPath(work.resolve("ca/certs/localhost.cert.pem"), 0777),
+ "/tmp/localhost.cert.pem")
+ .withCopyFileToContainer(
+ MountableFile.forHostPath(work.resolve("ca/private/localhost.decrypted.key.pem"), 0777),
+ "/tmp/localhost.decrypted.key.pem")
+ .withCommand("server")
+ .withLogConsumer(new Slf4jLogConsumer(logger).withSeparateOutputStreams());
+ // because of the tls setup, resetting wait to default for now
+ container.setWaitStrategy(Wait.defaultWaitStrategy());
+ return container;
+ }
+
+ public static void initializeSystemProperties() {
+ startVault();
+ Integer mappedPort = vaultContainer.getMappedPort(8200);
+
+ System.setProperty(VaultProperties.PREFIX + ".port", String.valueOf(mappedPort));
+ System.setProperty(VaultProperties.PREFIX + ".host", vaultContainer.getHost());
+ }
+
+ @Override
+ public void initialize(ConfigurableApplicationContext context) {
+ startVault();
+
+ MutablePropertySources sources = context.getEnvironment().getPropertySources();
+
+ if (!sources.contains("vaultTestcontainer")) {
+ Integer mappedPort = vaultContainer.getMappedPort(8200);
+ HashMap map = new HashMap<>();
+ map.put(VaultProperties.PREFIX + ".port", String.valueOf(mappedPort));
+ map.put(VaultProperties.PREFIX + ".host", vaultContainer.getHost());
+
+ sources.addFirst(new MapPropertySource("vaultTestcontainer", map));
+ }
}
@Override
@@ -88,24 +189,31 @@ public void before() {
this.vaultEndpoint.getPort(), getClass().getSimpleName()));
}
- if (!this.prepareVault.isAvailable()) {
+ if (!prepareVault.isAvailable()) {
- this.token = this.prepareVault.initializeVault();
- this.prepareVault.awaitAvailable();
- this.prepareVault.createToken(Settings.token().getToken(), "root");
+ this.token = prepareVault.initializeVault();
+ prepareVault.awaitAvailable();
+ prepareVault.createToken(Settings.token().getToken(), "root");
- if (this.prepareVault.getVersion().isGreaterThanOrEqualTo(VERSIONING_INTRODUCED_WITH)) {
- this.prepareVault.ensureUnversionedSecretsEngine();
- this.prepareVault.mountVersionedKvSecretsEngine();
+ if (prepareVault.getVersion().isGreaterThanOrEqualTo(VERSIONING_INTRODUCED_WITH)) {
+ prepareVault.ensureUnversionedSecretsEngine();
+ prepareVault.mountVersionedKvSecretsEngine();
}
this.token = Settings.token();
}
+ initializeSystemProperties();
}
- public PrepareVault prepare() {
- return this.prepareVault;
- }
+ /*
+ * @Override public boolean supportsParameter(ParameterContext parameterContext,
+ * ExtensionContext extensionContext) throws ParameterResolutionException { return
+ * parameterContext.getParameter().getType().equals(PrepareVault.class); }
+ *
+ * @Override public Object resolveParameter(ParameterContext parameterContext,
+ * ExtensionContext extensionContext) throws ParameterResolutionException { return
+ * prepareVault; }
+ */
private class PreparingSessionManager implements SessionManager {
diff --git a/spring-cloud-vault-config/src/test/resources/logback-test.xml b/spring-cloud-vault-config/src/test/resources/logback-test.xml
new file mode 100644
index 00000000..a42f8ffc
--- /dev/null
+++ b/spring-cloud-vault-config/src/test/resources/logback-test.xml
@@ -0,0 +1,17 @@
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file