You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by pa...@apache.org on 2016/11/19 22:50:35 UTC
[34/35] zest-java git commit: http: fix tests using keystores broken
in isolation
http: fix tests using keystores broken in isolation
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/4b7d771d
Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/4b7d771d
Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/4b7d771d
Branch: refs/heads/develop
Commit: 4b7d771da80ce7ed86fa049d4ffc0b72a0b3ebc0
Parents: 6f97f0d
Author: Paul Merlin <pa...@apache.org>
Authored: Sat Nov 19 23:45:28 2016 +0100
Committer: Paul Merlin <pa...@apache.org>
Committed: Sat Nov 19 23:45:28 2016 +0100
----------------------------------------------------------------------
.../library/http/AbstractSecureJettyTest.java | 59 ++++++++++++++------
.../http/MutualSecureJettyServiceTest.java | 4 +-
.../library/http/SecureJettyServiceTest.java | 4 +-
3 files changed, 45 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zest-java/blob/4b7d771d/libraries/http/src/test/java/org/apache/zest/library/http/AbstractSecureJettyTest.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/AbstractSecureJettyTest.java b/libraries/http/src/test/java/org/apache/zest/library/http/AbstractSecureJettyTest.java
index 75d87c9..def298e 100644
--- a/libraries/http/src/test/java/org/apache/zest/library/http/AbstractSecureJettyTest.java
+++ b/libraries/http/src/test/java/org/apache/zest/library/http/AbstractSecureJettyTest.java
@@ -20,15 +20,16 @@
package org.apache.zest.library.http;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.nio.file.Files;
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManagerFactory;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.CloseableHttpClient;
@@ -37,6 +38,8 @@ import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
/**
* Base class for SecureJettyMixin tests.
@@ -48,17 +51,17 @@ public abstract class AbstractSecureJettyTest
{
protected static final int HTTPS_PORT = 8441;
protected static final String KS_PASSWORD = "changeit";
- protected static final String CLIENT_KEYSTORE_PATH = "src/test/resources/org/apache/zest/library/http/zest-lib-http-unittests-client-cert.jceks";
- protected static final File CLIENT_KEYSTORE_FILE = new File( CLIENT_KEYSTORE_PATH );
- protected static final String SERVER_KEYSTORE_PATH = "src/test/resources/org/apache/zest/library/http/zest-lib-http-unittests-server-cert.jceks";
- protected static final File SERVER_KEYSTORE_FILE = new File( SERVER_KEYSTORE_PATH );
- protected static final String TRUSTSTORE_PATH = "src/test/resources/org/apache/zest/library/http/zest-lib-http-unittests-ca.jceks";
- protected static final File TRUSTSTORE_FILE = new File( TRUSTSTORE_PATH );
+ protected static final String CLIENT_KEYSTORE_FILENAME = "zest-lib-http-unittests-client-cert.jceks";
+ protected static final String SERVER_KEYSTORE_FILENAME = "zest-lib-http-unittests-server-cert.jceks";
+ protected static final String TRUSTSTORE_FILENAME = "zest-lib-http-unittests-ca.jceks";
// These two clients use a HostnameVerifier that don't do any check, don't do this in production code
protected CloseableHttpClient trustHttpClient;
protected CloseableHttpClient mutualHttpClient;
+ @Rule
+ public final TemporaryFolder tmpDir = new TemporaryFolder();
+
@Before
public void beforeSecure()
throws GeneralSecurityException, IOException
@@ -98,14 +101,7 @@ public abstract class AbstractSecureJettyTest
{
defaultHostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
defaultSSLSocketFactory = HttpsURLConnection.getDefaultSSLSocketFactory();
- HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier()
- {
- @Override
- public boolean verify( String string, SSLSession ssls )
- {
- return true;
- }
- } );
+ HttpsURLConnection.setDefaultHostnameVerifier( ( string, ssls ) -> true );
HttpsURLConnection.setDefaultSSLSocketFactory( buildTrustSSLContext().getSocketFactory() );
}
@@ -147,7 +143,10 @@ public abstract class AbstractSecureJettyTest
throws IOException, GeneralSecurityException
{
KeyStore truststore = KeyStore.getInstance( "JCEKS" );
- truststore.load( new FileInputStream( TRUSTSTORE_FILE ), KS_PASSWORD.toCharArray() );
+ try( InputStream stream = AbstractSecureJettyTest.class.getResourceAsStream( TRUSTSTORE_FILENAME ) )
+ {
+ truststore.load( stream, KS_PASSWORD.toCharArray() );
+ }
return truststore;
}
@@ -155,7 +154,31 @@ public abstract class AbstractSecureJettyTest
throws IOException, GeneralSecurityException
{
KeyStore keystore = KeyStore.getInstance( "JCEKS" );
- keystore.load( new FileInputStream( CLIENT_KEYSTORE_FILE ), KS_PASSWORD.toCharArray() );
+ try( InputStream stream = AbstractSecureJettyTest.class.getResourceAsStream( CLIENT_KEYSTORE_FILENAME ) )
+ {
+ keystore.load( stream, KS_PASSWORD.toCharArray() );
+ }
return keystore;
}
+
+ protected synchronized File getKeyStoreFile( String filename )
+ {
+ try
+ {
+ File file = new File( tmpDir.getRoot(), filename );
+ if( file.exists() )
+ {
+ return file;
+ }
+ try( InputStream stream = AbstractSecureJettyTest.class.getResourceAsStream( filename ) )
+ {
+ Files.copy( stream, file.toPath() );
+ }
+ return file;
+ }
+ catch( IOException ex )
+ {
+ throw new UncheckedIOException( ex );
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/zest-java/blob/4b7d771d/libraries/http/src/test/java/org/apache/zest/library/http/MutualSecureJettyServiceTest.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/MutualSecureJettyServiceTest.java b/libraries/http/src/test/java/org/apache/zest/library/http/MutualSecureJettyServiceTest.java
index 228c791..caedeb3 100644
--- a/libraries/http/src/test/java/org/apache/zest/library/http/MutualSecureJettyServiceTest.java
+++ b/libraries/http/src/test/java/org/apache/zest/library/http/MutualSecureJettyServiceTest.java
@@ -46,11 +46,11 @@ public class MutualSecureJettyServiceTest
config.hostName().set( "127.0.0.1" );
config.port().set( HTTPS_PORT );
- config.keystorePath().set( SERVER_KEYSTORE_PATH );
+ config.keystorePath().set( getKeyStoreFile( SERVER_KEYSTORE_FILENAME ).getAbsolutePath() );
config.keystoreType().set( "JCEKS" );
config.keystorePassword().set( KS_PASSWORD );
- config.truststorePath().set( TRUSTSTORE_PATH );
+ config.truststorePath().set( getKeyStoreFile( TRUSTSTORE_FILENAME ).getAbsolutePath() );
config.truststoreType().set( "JCEKS" );
config.truststorePassword().set( KS_PASSWORD );
http://git-wip-us.apache.org/repos/asf/zest-java/blob/4b7d771d/libraries/http/src/test/java/org/apache/zest/library/http/SecureJettyServiceTest.java
----------------------------------------------------------------------
diff --git a/libraries/http/src/test/java/org/apache/zest/library/http/SecureJettyServiceTest.java b/libraries/http/src/test/java/org/apache/zest/library/http/SecureJettyServiceTest.java
index 68352b8..159dfaf 100644
--- a/libraries/http/src/test/java/org/apache/zest/library/http/SecureJettyServiceTest.java
+++ b/libraries/http/src/test/java/org/apache/zest/library/http/SecureJettyServiceTest.java
@@ -53,8 +53,8 @@ public class SecureJettyServiceTest
// START SNIPPET: configssl
SecureJettyConfiguration config = configModule.forMixin( SecureJettyConfiguration.class ).declareDefaults();
config.hostName().set( "127.0.0.1" );
- config.port().set( HTTPS_PORT );
- config.keystorePath().set( SERVER_KEYSTORE_PATH );
+ config.port().set( httpsPort );
+ config.keystorePath().set( getKeyStoreFile( SERVER_KEYSTORE_FILENAME ).getAbsolutePath() );
config.keystoreType().set( "JCEKS" );
config.keystorePassword().set( KS_PASSWORD );
// END SNIPPET: configssl