From fb195b2ad7db40ac019a50335eb778d131120ecc Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 5 Jan 2015 17:50:54 -0800 Subject: [PATCH] Add test for ssl scheme Closes gh-2232 --- ...tEmbeddedServletContainerFactoryTests.java | 19 +++++++++++++++++++ .../boot/context/embedded/ExampleServlet.java | 16 +++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java index ce96134fe4..f326ae60f0 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/AbstractEmbeddedServletContainerFactoryTests.java @@ -57,6 +57,7 @@ import org.springframework.util.SocketUtils; import org.springframework.util.StreamUtils; import org.springframework.util.concurrent.ListenableFuture; +import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.lessThan; import static org.hamcrest.Matchers.notNullValue; @@ -313,6 +314,24 @@ public abstract class AbstractEmbeddedServletContainerFactoryTests { testBasicSslWithKeyStore("src/test/resources/test.jks"); } + @Test + public void sslGetScheme() throws Exception { // gh-2232 + AbstractEmbeddedServletContainerFactory factory = getFactory(); + factory.setSsl(getSsl(null, "password", "src/test/resources/test.jks")); + this.container = factory.getEmbeddedServletContainer(new ServletRegistrationBean( + new ExampleServlet(true), "/hello")); + 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", "/hello"), requestFactory), + containsString("scheme=https")); + } + protected final void testBasicSslWithKeyStore(String keyStore) throws Exception { AbstractEmbeddedServletContainerFactory factory = getFactory(); addTestTxtFile(factory); diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/ExampleServlet.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/ExampleServlet.java index a8cf5e43e9..2b303971a7 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/ExampleServlet.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/ExampleServlet.java @@ -31,10 +31,24 @@ import javax.servlet.ServletResponse; @SuppressWarnings("serial") public class ExampleServlet extends GenericServlet { + private final boolean echoRequestInfo; + + public ExampleServlet() { + this(false); + } + + public ExampleServlet(boolean echoRequestInfo) { + this.echoRequestInfo = echoRequestInfo; + } + @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { - response.getWriter().write("Hello World"); + String content = "Hello World"; + if (this.echoRequestInfo) { + content += " scheme=" + request.getScheme(); + } + response.getWriter().write(content); } }