|
|
@ -93,9 +93,11 @@ import org.springframework.util.concurrent.ListenableFuture;
|
|
|
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
import static org.junit.Assert.fail;
|
|
|
|
import static org.junit.Assert.fail;
|
|
|
|
|
|
|
|
import static org.mockito.BDDMockito.given;
|
|
|
|
import static org.mockito.Matchers.anyObject;
|
|
|
|
import static org.mockito.Matchers.anyObject;
|
|
|
|
import static org.mockito.Mockito.inOrder;
|
|
|
|
import static org.mockito.Mockito.inOrder;
|
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
|
|
|
|
|
import static org.mockito.Mockito.verify;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Base for testing classes that extends {@link AbstractEmbeddedServletContainerFactory}.
|
|
|
|
* Base for testing classes that extends {@link AbstractEmbeddedServletContainerFactory}.
|
|
|
@ -536,7 +538,10 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
|
|
|
|
ssl.setClientAuth(ClientAuth.NEED);
|
|
|
|
ssl.setClientAuth(ClientAuth.NEED);
|
|
|
|
ssl.setKeyPassword("password");
|
|
|
|
ssl.setKeyPassword("password");
|
|
|
|
factory.setSsl(ssl);
|
|
|
|
factory.setSsl(ssl);
|
|
|
|
factory.setSslStoreProvider(new CustomSslStoreProvider());
|
|
|
|
SslStoreProvider sslStoreProvider = mock(SslStoreProvider.class);
|
|
|
|
|
|
|
|
given(sslStoreProvider.getKeyStore()).willReturn(loadStore());
|
|
|
|
|
|
|
|
given(sslStoreProvider.getTrustStore()).willReturn(loadStore());
|
|
|
|
|
|
|
|
factory.setSslStoreProvider(sslStoreProvider);
|
|
|
|
this.container = factory.getEmbeddedServletContainer();
|
|
|
|
this.container = factory.getEmbeddedServletContainer();
|
|
|
|
this.container.start();
|
|
|
|
this.container.start();
|
|
|
|
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
|
|
|
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
|
|
|
@ -552,6 +557,8 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
|
|
|
|
httpClient);
|
|
|
|
httpClient);
|
|
|
|
assertThat(getResponse(getLocalUrl("https", "/test.txt"), requestFactory))
|
|
|
|
assertThat(getResponse(getLocalUrl("https", "/test.txt"), requestFactory))
|
|
|
|
.isEqualTo("test");
|
|
|
|
.isEqualTo("test");
|
|
|
|
|
|
|
|
verify(sslStoreProvider).getKeyStore();
|
|
|
|
|
|
|
|
verify(sslStoreProvider).getTrustStore();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Test
|
|
|
@ -1044,6 +1051,21 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private KeyStore loadStore() throws KeyStoreException, IOException,
|
|
|
|
|
|
|
|
NoSuchAlgorithmException, CertificateException {
|
|
|
|
|
|
|
|
KeyStore keyStore = KeyStore.getInstance("JKS");
|
|
|
|
|
|
|
|
Resource resource = new ClassPathResource("test.jks");
|
|
|
|
|
|
|
|
InputStream inputStream = resource.getInputStream();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
keyStore.load(inputStream, "secret".toCharArray());
|
|
|
|
|
|
|
|
return keyStore;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
finally {
|
|
|
|
|
|
|
|
inputStream.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private class TestGzipInputStreamFactory implements InputStreamFactory {
|
|
|
|
private class TestGzipInputStreamFactory implements InputStreamFactory {
|
|
|
|
|
|
|
|
|
|
|
|
private final AtomicBoolean requested = new AtomicBoolean(false);
|
|
|
|
private final AtomicBoolean requested = new AtomicBoolean(false);
|
|
|
@ -1091,32 +1113,4 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static class CustomSslStoreProvider implements SslStoreProvider {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public KeyStore getKeyStore() throws Exception {
|
|
|
|
|
|
|
|
return loadStore();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public KeyStore getTrustStore() throws Exception {
|
|
|
|
|
|
|
|
return loadStore();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private KeyStore loadStore() throws KeyStoreException, IOException,
|
|
|
|
|
|
|
|
NoSuchAlgorithmException, CertificateException {
|
|
|
|
|
|
|
|
KeyStore keyStore = KeyStore.getInstance("JKS");
|
|
|
|
|
|
|
|
Resource resource = new ClassPathResource("test.jks");
|
|
|
|
|
|
|
|
InputStream inputStream = resource.getInputStream();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
keyStore.load(inputStream, "secret".toCharArray());
|
|
|
|
|
|
|
|
return keyStore;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
finally {
|
|
|
|
|
|
|
|
inputStream.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|