From 8302e662ebc0e7fedc10796d940b22ded20ed62e Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 10 Jun 2016 15:08:50 +0200 Subject: [PATCH] Polishing. Adopt changed relative paths. Move setup scripts back to src/test/bash. Original pull request: #8. --- .travis.yml | 4 +-- pom.xml | 18 ++++++------- spring-cloud-vault-config/pom.xml | 14 +++++----- .../vault/configclient/VaultAppIdTests.java | 5 +++- .../configclient/VaultCassandraTests.java | 9 ++++--- .../vault/configclient/VaultMySqlTests.java | 12 ++++----- .../configclient/VaultPostgreSqlTests.java | 6 ++++- .../cloud/vault/configclient/VaultTests.java | 8 +++++- .../cloud/vault/util/Settings.java | 27 ++++++++++++++++--- .../src/test/resources/bootstrap.yml | 2 +- .../test/bash/create_certificates.sh | 0 .../src => src}/test/bash/env.sh | 0 .../src => src}/test/bash/install_vault.sh | 0 .../src => src}/test/bash/local_run_vault.sh | 2 +- .../src => src}/test/bash/openssl.cnf | 0 15 files changed, 70 insertions(+), 37 deletions(-) rename {spring-cloud-vault-config/src => src}/test/bash/create_certificates.sh (100%) rename {spring-cloud-vault-config/src => src}/test/bash/env.sh (100%) rename {spring-cloud-vault-config/src => src}/test/bash/install_vault.sh (100%) rename {spring-cloud-vault-config/src => src}/test/bash/local_run_vault.sh (74%) rename {spring-cloud-vault-config/src => src}/test/bash/openssl.cnf (100%) diff --git a/.travis.yml b/.travis.yml index 342b20be..eb7b2185 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ install: - mkdir -p download - test -f download/apache-cassandra-2.2.6-bin.tar.gz || wget http://www-eu.apache.org/dist/cassandra/2.2.6/apache-cassandra-2.2.6-bin.tar.gz -O download/apache-cassandra-2.2.6-bin.tar.gz - tar xzf download/apache-cassandra-2.2.6-bin.tar.gz - - cp -f src/test/resources/cassandra.yaml apache-cassandra-2.2.6/conf + - cp -f spring-cloud-vault-config/src/test/resources/cassandra.yaml apache-cassandra-2.2.6/conf - apache-cassandra-2.2.6/bin/cassandra - src/test/bash/create_certificates.sh - src/test/bash/install_vault.sh @@ -33,4 +33,4 @@ after_script: cache: directories: - '$HOME/.m2/repository' - - 'download' \ No newline at end of file + - 'download' diff --git a/pom.xml b/pom.xml index 48bdfc46..1075742b 100644 --- a/pom.xml +++ b/pom.xml @@ -2,6 +2,14 @@ 4.0.0 + + + org.springframework.cloud + spring-cloud-build + 1.1.0.BUILD-SNAPSHOT + + + org.springframework.cloud spring-cloud-vault-config-parent @@ -11,18 +19,10 @@ spring-cloud-vault-config Configuration Integration with Hashicorp Vault - - org.springframework.cloud - spring-cloud-build - 1.1.0.BUILD-SNAPSHOT - - - - spring-cloud-vault-config docs - + diff --git a/spring-cloud-vault-config/pom.xml b/spring-cloud-vault-config/pom.xml index 68cc9505..7291541b 100644 --- a/spring-cloud-vault-config/pom.xml +++ b/spring-cloud-vault-config/pom.xml @@ -2,6 +2,13 @@ 4.0.0 + + + org.springframework.cloud + spring-cloud-vault-config-parent + 1.0.0.BUILD-SNAPSHOT + .. + org.springframework.cloud spring-cloud-vault-config @@ -11,13 +18,6 @@ spring-cloud-vault-config Configuration Integration with Hashicorp Vault - - org.springframework.cloud - spring-cloud-vault-config-parent - 1.0.1.BUILD-SNAPSHOT - .. - - UTF-8 1.7 diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultAppIdTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultAppIdTests.java index 879e474f..0fb33b1f 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultAppIdTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultAppIdTests.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.cloud.vault.configclient; import static org.assertj.core.api.Assertions.*; @@ -35,6 +34,10 @@ import org.springframework.cloud.vault.util.VaultRule; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** + * 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/configclient/VaultCassandraTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultCassandraTests.java index 82613af6..74725aa8 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultCassandraTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultCassandraTests.java @@ -13,10 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.cloud.vault.configclient; -import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.*; import static org.junit.Assume.*; import java.net.InetSocketAddress; @@ -43,7 +42,11 @@ import com.datastax.driver.core.PlainTextAuthProvider; import com.datastax.driver.core.Session; /** - * Integration tests using the cassandra secret backend. + * Integration tests using the cassandra 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}. + * + * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = VaultCassandraTests.TestApplication.class) diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultMySqlTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultMySqlTests.java index 1257418d..c3eebfa6 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultMySqlTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultMySqlTests.java @@ -13,23 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.cloud.vault.configclient; import static org.junit.Assume.*; -import static org.assertj.core.api.Assertions.*; -import static org.junit.Assume.*; - import java.net.InetSocketAddress; -import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Collections; import javax.sql.DataSource; -import com.mysql.jdbc.MySQLConnection; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,7 +38,11 @@ import org.springframework.cloud.vault.util.VaultRule; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** - * Integration tests using the mysql secret backend. + * Integration tests using the mysql 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}. + * + * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = VaultMySqlTests.TestApplication.class) diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultPostgreSqlTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultPostgreSqlTests.java index 142565cc..42104f8e 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultPostgreSqlTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultPostgreSqlTests.java @@ -42,7 +42,11 @@ import org.springframework.cloud.vault.util.VaultRule; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** - * Integration tests using the postgresql secret backend. + * Integration tests using the postgresql 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}. + * + * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = VaultPostgreSqlTests.TestApplication.class) diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultTests.java index 513a545c..6e3689ca 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/configclient/VaultTests.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.cloud.vault.configclient; import static org.assertj.core.api.Assertions.*; @@ -30,6 +29,13 @@ import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.cloud.vault.util.VaultRule; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +/** + * 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) @SpringApplicationConfiguration(classes = VaultTests.TestApplication.class) public class VaultTests { 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 b8503a95..de3093e1 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 @@ -15,6 +15,8 @@ */ package org.springframework.cloud.vault.util; +import java.io.File; + import org.springframework.cloud.vault.VaultProperties; import org.springframework.cloud.vault.VaultToken; import org.springframework.core.io.FileSystemResource; @@ -27,24 +29,41 @@ import org.springframework.core.io.FileSystemResource; public class Settings { /** - * * @return the vault properties. */ public static VaultProperties createVaultProperties() { + File workDir = findWorkDir(new File(System.getProperty("user.dir"))); + VaultProperties vaultProperties = new VaultProperties(); vaultProperties.getSsl().setTrustStorePassword("changeit"); - vaultProperties.getSsl().setTrustStore(new FileSystemResource("work/keystore.jks")); + vaultProperties.getSsl().setTrustStore(new FileSystemResource(new File(workDir, "keystore.jks"))); vaultProperties.setToken(token().getToken()); return vaultProperties; } + private static File findWorkDir(File file) { + + File searchLevel = file; + while (searchLevel.getParentFile() != null && searchLevel.getParentFile() != searchLevel) { + + File work = new File(searchLevel, "work"); + if (work.isDirectory() && work.exists()) { + return work; + } + + searchLevel = searchLevel.getParentFile(); + } + + throw new IllegalStateException( + String.format("Cannot find work directory in %s or any parent directories", file.getAbsoluteFile())); + } + /** * @return the token to use during tests. */ public static VaultToken token() { - return VaultToken.of(System.getProperty("vault.token", - "00000000-0000-0000-0000-000000000000")); + return VaultToken.of(System.getProperty("vault.token", "00000000-0000-0000-0000-000000000000")); } } diff --git a/spring-cloud-vault-config/src/test/resources/bootstrap.yml b/spring-cloud-vault-config/src/test/resources/bootstrap.yml index 05b0ca87..c598d962 100644 --- a/spring-cloud-vault-config/src/test/resources/bootstrap.yml +++ b/spring-cloud-vault-config/src/test/resources/bootstrap.yml @@ -1,5 +1,5 @@ spring: application.name: testVaultApp cloud.vault.token: 00000000-0000-0000-0000-000000000000 - cloud.vault.ssl.trust-store: file:work/keystore.jks + cloud.vault.ssl.trust-store: file:../work/keystore.jks cloud.vault.ssl.trust-store-password: changeit diff --git a/spring-cloud-vault-config/src/test/bash/create_certificates.sh b/src/test/bash/create_certificates.sh similarity index 100% rename from spring-cloud-vault-config/src/test/bash/create_certificates.sh rename to src/test/bash/create_certificates.sh diff --git a/spring-cloud-vault-config/src/test/bash/env.sh b/src/test/bash/env.sh similarity index 100% rename from spring-cloud-vault-config/src/test/bash/env.sh rename to src/test/bash/env.sh diff --git a/spring-cloud-vault-config/src/test/bash/install_vault.sh b/src/test/bash/install_vault.sh similarity index 100% rename from spring-cloud-vault-config/src/test/bash/install_vault.sh rename to src/test/bash/install_vault.sh diff --git a/spring-cloud-vault-config/src/test/bash/local_run_vault.sh b/src/test/bash/local_run_vault.sh similarity index 74% rename from spring-cloud-vault-config/src/test/bash/local_run_vault.sh rename to src/test/bash/local_run_vault.sh index 4d3828b0..297ab467 100755 --- a/spring-cloud-vault-config/src/test/bash/local_run_vault.sh +++ b/src/test/bash/local_run_vault.sh @@ -5,5 +5,5 @@ ########################################################################### BASEDIR=`dirname $0`/../../.. -./vault/vault server -config=${BASEDIR}/src/test/resources/vault.conf +./vault/vault server -config=${BASEDIR}/spring-cloud-vault-config/src/test/resources/vault.conf exit $? diff --git a/spring-cloud-vault-config/src/test/bash/openssl.cnf b/src/test/bash/openssl.cnf similarity index 100% rename from spring-cloud-vault-config/src/test/bash/openssl.cnf rename to src/test/bash/openssl.cnf