Skip to content

Commit 8890561

Browse files
committed
test case for issue robaho#15 HttpsConfigurator.configure method not executed for https connections
1 parent 4d2c7b6 commit 8890561

File tree

2 files changed

+77
-1
lines changed

2 files changed

+77
-1
lines changed

src/main/java/robaho/net/httpserver/ServerImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
import com.sun.net.httpserver.HttpHandler;
6363
import com.sun.net.httpserver.HttpServer;
6464
import com.sun.net.httpserver.HttpsConfigurator;
65-
import com.sun.net.httpserver.HttpsParameters;
6665

6766
import robaho.net.httpserver.http2.HTTP2Connection;
6867
import robaho.net.httpserver.http2.HTTP2ErrorCode;
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package robaho.net.httpserver;
2+
3+
import org.testng.annotations.Test;
4+
5+
import java.io.IOException;
6+
import java.net.InetSocketAddress;
7+
import java.net.Proxy;
8+
import java.net.URISyntaxException;
9+
import java.net.URL;
10+
11+
import javax.net.ssl.HostnameVerifier;
12+
import javax.net.ssl.HttpsURLConnection;
13+
import javax.net.ssl.SSLContext;
14+
import javax.net.ssl.SSLSession;
15+
16+
import static org.testng.Assert.assertTrue;
17+
18+
import com.sun.net.httpserver.HttpExchange;
19+
import com.sun.net.httpserver.HttpsConfigurator;
20+
import com.sun.net.httpserver.HttpsParameters;
21+
import com.sun.net.httpserver.HttpsServer;
22+
23+
import jdk.test.lib.net.SimpleSSLContext;
24+
import jdk.test.lib.net.URIBuilder;
25+
26+
public class HttpsConfiguratorTest {
27+
volatile boolean configureCalled = false;
28+
@Test
29+
public void TestConfigureCalled() throws IOException, URISyntaxException {
30+
int port = 8443;
31+
32+
var httpsServer = HttpsServer.create(new InetSocketAddress(port), 8192);
33+
var ctx = new SimpleSSLContext().get();
34+
httpsServer.setHttpsConfigurator(new MyHttpsConfigurator (ctx));
35+
httpsServer.createContext("/test", (HttpExchange he) -> {
36+
he.sendResponseHeaders(200,0);
37+
try (var os = he.getResponseBody()) {
38+
os.write("Hello".getBytes());
39+
}
40+
});
41+
httpsServer.start();
42+
try {
43+
URL url = URIBuilder.newBuilder()
44+
.scheme("https")
45+
.loopback()
46+
.port(httpsServer.getAddress().getPort())
47+
.path("/test")
48+
.toURL();
49+
HttpsURLConnection urlc = (HttpsURLConnection)url.openConnection(Proxy.NO_PROXY);
50+
urlc.setSSLSocketFactory (ctx.getSocketFactory());
51+
urlc.setHostnameVerifier (new DummyVerifier());
52+
urlc.getInputStream().readAllBytes();
53+
assertTrue(urlc.getResponseCode()==200);
54+
} finally {
55+
httpsServer.stop(0);
56+
}
57+
assertTrue(configureCalled);
58+
}
59+
60+
class MyHttpsConfigurator extends HttpsConfigurator {
61+
public MyHttpsConfigurator(SSLContext context) {
62+
super(context);
63+
}
64+
65+
@Override
66+
public void configure(HttpsParameters params) {
67+
super.configure(params);
68+
configureCalled = true;
69+
}
70+
}
71+
public class DummyVerifier implements HostnameVerifier {
72+
@Override
73+
public boolean verify(String s, SSLSession s1) {
74+
return true;
75+
}
76+
}
77+
}

0 commit comments

Comments
 (0)