@ -274,10 +274,8 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@@ -274,10 +274,8 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@Test
public void documentRoot ( ) throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
addTestTxtFile ( factory ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
assertThat ( getResponse ( getLocalUrl ( "/test.txt" ) ) , equalTo ( "test" ) ) ;
@ -316,71 +314,41 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@@ -316,71 +314,41 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
}
protected final void testBasicSslWithKeyStore ( String keyStore ) throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
Ssl ssl = new Ssl ( ) ;
ssl . setKeyStore ( keyStore ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyPassword ( "password" ) ;
factory . setSsl ( ssl ) ;
addTestTxtFile ( factory ) ;
factory . setSsl ( getSsl ( null , "password" , keyStore ) ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory (
new SSLContextBuilder ( ) . loadTrustMaterial ( null ,
new TrustSelfSignedStrategy ( ) ) . build ( ) ) ;
HttpClient httpClient = HttpClients . custom ( ) . setSSLSocketFactory ( socketFactory )
. build ( ) ;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory (
httpClient ) ;
assertThat ( getResponse ( getLocalUrl ( "https" , "/test.txt" ) , requestFactory ) ,
equalTo ( "test" ) ) ;
}
@Test
public void pkcs12KeyStoreAndTrustStore ( ) throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
Ssl ssl = new Ssl ( ) ;
ssl . setKeyStore ( "src/test/resources/test.p12" ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyStoreType ( "pkcs12" ) ;
ssl . setTrustStore ( "src/test/resources/test.p12" ) ;
ssl . setTrustStorePassword ( "secret" ) ;
ssl . setTrustStoreType ( "pkcs12" ) ;
ssl . setClientAuth ( ClientAuth . NEED ) ;
factory . setSsl ( ssl ) ;
addTestTxtFile ( factory ) ;
factory . setSsl ( getSsl ( ClientAuth . NEED , null , "src/test/resources/test.p12" ,
"src/test/resources/test.p12" ) ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
KeyStore keyStore = KeyStore . getInstance ( "pkcs12" ) ;
keyStore . load ( new FileInputStream ( new File ( "src/test/resources/test.p12" ) ) ,
"secret" . toCharArray ( ) ) ;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory (
new SSLContextBuilder ( )
. loadTrustMaterial ( null , new TrustSelfSignedStrategy ( ) )
. loadKeyMaterial ( keyStore , "secret" . toCharArray ( ) ) . build ( ) ) ;
HttpClient httpClient = HttpClients . custom ( ) . setSSLSocketFactory ( socketFactory )
. build ( ) ;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory (
httpClient ) ;
assertThat ( getResponse ( getLocalUrl ( "https" , "/test.txt" ) , requestFactory ) ,
equalTo ( "test" ) ) ;
}
@ -388,39 +356,22 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@@ -388,39 +356,22 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@Test
public void sslNeedsClientAuthenticationSucceedsWithClientCertificate ( )
throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
Ssl ssl = new Ssl ( ) ;
ssl . setKeyStore ( "src/test/resources/test.jks" ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyPassword ( "password" ) ;
ssl . setClientAuth ( ClientAuth . NEED ) ;
ssl . setTrustStore ( "src/test/resources/test.jks" ) ;
ssl . setTrustStorePassword ( "secret" ) ;
factory . setSsl ( ssl ) ;
addTestTxtFile ( factory ) ;
factory . setSsl ( getSsl ( ClientAuth . NEED , "password" , "src/test/resources/test.jks" ) ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
KeyStore keyStore = KeyStore . getInstance ( KeyStore . getDefaultType ( ) ) ;
keyStore . load ( new FileInputStream ( new File ( "src/test/resources/test.jks" ) ) ,
"secret" . toCharArray ( ) ) ;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory (
new SSLContextBuilder ( )
. loadTrustMaterial ( null , new TrustSelfSignedStrategy ( ) )
. loadKeyMaterial ( keyStore , "password" . toCharArray ( ) ) . build ( ) ) ;
HttpClient httpClient = HttpClients . custom ( ) . setSSLSocketFactory ( socketFactory )
. build ( ) ;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory (
httpClient ) ;
assertThat ( getResponse ( getLocalUrl ( "https" , "/test.txt" ) , requestFactory ) ,
equalTo ( "test" ) ) ;
}
@ -428,73 +379,40 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@@ -428,73 +379,40 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@Test ( expected = IOException . class )
public void sslNeedsClientAuthenticationFailsWithoutClientCertificate ( )
throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
Ssl ssl = new Ssl ( ) ;
ssl . setKeyStore ( "src/test/resources/test.jks" ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyPassword ( "password" ) ;
ssl . setClientAuth ( ClientAuth . NEED ) ;
ssl . setTrustStore ( "src/test/resources/test.jks" ) ;
ssl . setTrustStorePassword ( "secret" ) ;
factory . setSsl ( ssl ) ;
addTestTxtFile ( factory ) ;
factory . setSsl ( getSsl ( ClientAuth . NEED , "password" , "src/test/resources/test.jks" ) ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory (
new SSLContextBuilder ( ) . loadTrustMaterial ( null ,
new TrustSelfSignedStrategy ( ) ) . build ( ) ) ;
HttpClient httpClient = HttpClients . custom ( ) . setSSLSocketFactory ( socketFactory )
. build ( ) ;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory (
httpClient ) ;
getResponse ( getLocalUrl ( "https" , "/test.txt" ) , requestFactory ) ;
}
@Test
public void sslWantsClientAuthenticationSucceedsWithClientCertificate ( )
throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
Ssl ssl = new Ssl ( ) ;
ssl . setKeyStore ( "src/test/resources/test.jks" ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyPassword ( "password" ) ;
ssl . setClientAuth ( ClientAuth . WANT ) ;
ssl . setTrustStore ( "src/test/resources/test.jks" ) ;
ssl . setTrustStorePassword ( "secret" ) ;
factory . setSsl ( ssl ) ;
addTestTxtFile ( factory ) ;
factory . setSsl ( getSsl ( ClientAuth . WANT , "password" , "src/test/resources/test.jks" ) ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
KeyStore keyStore = KeyStore . getInstance ( KeyStore . getDefaultType ( ) ) ;
keyStore . load ( new FileInputStream ( new File ( "src/test/resources/test.jks" ) ) ,
"secret" . toCharArray ( ) ) ;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory (
new SSLContextBuilder ( )
. loadTrustMaterial ( null , new TrustSelfSignedStrategy ( ) )
. loadKeyMaterial ( keyStore , "password" . toCharArray ( ) ) . build ( ) ) ;
HttpClient httpClient = HttpClients . custom ( ) . setSSLSocketFactory ( socketFactory )
. build ( ) ;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory (
httpClient ) ;
assertThat ( getResponse ( getLocalUrl ( "https" , "/test.txt" ) , requestFactory ) ,
equalTo ( "test" ) ) ;
}
@ -502,43 +420,62 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@@ -502,43 +420,62 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@Test
public void sslWantsClientAuthenticationSucceedsWithoutClientCertificate ( )
throws Exception {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
AbstractEmbeddedServletContainerFactory factory = getFactory ( ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
Ssl ssl = new Ssl ( ) ;
ssl . setKeyStore ( "src/test/resources/test.jks" ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyPassword ( "password" ) ;
ssl . setClientAuth ( ClientAuth . WANT ) ;
ssl . setTrustStore ( "src/test/resources/test.jks" ) ;
ssl . setTrustStorePassword ( "secret" ) ;
factory . setSsl ( ssl ) ;
addTestTxtFile ( factory ) ;
factory . setSsl ( getSsl ( ClientAuth . WANT , "password" , "src/test/resources/test.jks" ) ) ;
this . container = factory . getEmbeddedServletContainer ( ) ;
this . container . start ( ) ;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory (
new SSLContextBuilder ( ) . loadTrustMaterial ( null ,
new TrustSelfSignedStrategy ( ) ) . build ( ) ) ;
HttpClient httpClient = HttpClients . custom ( ) . setSSLSocketFactory ( socketFactory )
. build ( ) ;
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory (
httpClient ) ;
assertThat ( getResponse ( getLocalUrl ( "https" , "/test.txt" ) , requestFactory ) ,
equalTo ( "test" ) ) ;
}
private Ssl getSsl ( ClientAuth clientAuth , String keyPassword , String keyStore ) {
return getSsl ( clientAuth , keyPassword , keyStore , null ) ;
}
private Ssl getSsl ( ClientAuth clientAuth , String keyPassword , String keyStore ,
String trustStore ) {
Ssl ssl = new Ssl ( ) ;
ssl . setClientAuth ( clientAuth ) ;
if ( keyPassword ! = null ) {
ssl . setKeyPassword ( keyPassword ) ;
}
if ( keyStore ! = null ) {
ssl . setKeyStore ( keyStore ) ;
ssl . setKeyStorePassword ( "secret" ) ;
ssl . setKeyStoreType ( getStoreType ( keyStore ) ) ;
}
if ( trustStore ! = null ) {
ssl . setTrustStore ( trustStore ) ;
ssl . setTrustStorePassword ( "secret" ) ;
ssl . setTrustStoreType ( getStoreType ( trustStore ) ) ;
}
return ssl ;
}
private String getStoreType ( String keyStore ) {
return ( keyStore . endsWith ( ".p12" ) ? "pkcs12" : null ) ;
}
@Test
public void defaultSessionTimeout ( ) throws Exception {
assertThat ( getFactory ( ) . getSessionTimeout ( ) , equalTo ( 30 * 60 ) ) ;
}
private void addTestTxtFile ( AbstractEmbeddedServletContainerFactory factory )
throws IOException {
FileCopyUtils . copy ( "test" ,
new FileWriter ( this . temporaryFolder . newFile ( "test.txt" ) ) ) ;
factory . setDocumentRoot ( this . temporaryFolder . getRoot ( ) ) ;
}
protected String getLocalUrl ( String resourcePath ) {
return getLocalUrl ( "http" , resourcePath ) ;
}
@ -625,4 +562,5 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
@@ -625,4 +562,5 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
return this . initCount ;
}
} ;
}