Skip to content

Commit 1912709

Browse files
Copilotdsmiley
andcommitted
Add replaceTargetServlet helper and fix more tests
- Added replaceTargetServlet() helper method for test customization - Fixed testHopByHopHeadersOnSource - Fixed testWithExistingXForwardedFor - Fixed testEnabledXForwardedFor Remaining work: ~11 more tests need similar conversion Co-authored-by: dsmiley <377295+dsmiley@users.noreply.github.com>
1 parent 7827c09 commit 1912709

1 file changed

Lines changed: 33 additions & 16 deletions

File tree

src/test/java/org/mitre/dsmiley/httpproxy/ProxyServletTest.java

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,19 @@ public void setUp() throws Exception {
104104
sc.getClientProperties().setAutoRedirect(false);//don't want httpunit itself to redirect
105105

106106
}
107+
108+
/**
109+
* Helper to restart target server with a custom servlet
110+
*/
111+
protected void replaceTargetServlet(HttpServlet servlet) throws Exception {
112+
targetServer.stop();
113+
targetServer = new Server(targetServerPort);
114+
ServletHandler handler = new ServletHandler();
115+
targetServer.setHandler(handler);
116+
ServletHolder holder = new ServletHolder(servlet);
117+
handler.addServletWithMapping(holder, "/targetPath/*");
118+
targetServer.start();
119+
}
107120

108121
protected void setUpServlet(Properties servletProps) {
109122
servletProps.putAll(servletProps);
@@ -233,11 +246,13 @@ public void testProxyWithUnescapedChars() throws Exception {
233246
public void testHopByHopHeadersOnSource() throws Exception {
234247
//"Proxy-Authenticate" is a hop-by-hop header
235248
final String HEADER = "Proxy-Authenticate";
236-
localTestServer.register("/targetPath*", new RequestInfoHandler() {
237-
public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException {
238-
assertNull(request.getFirstHeader(HEADER));
249+
250+
replaceTargetServlet(new HttpServlet() {
251+
@Override
252+
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
253+
assertNull(request.getHeader(HEADER));
239254
response.setHeader(HEADER, "from-server");
240-
super.handle(request, response, context);
255+
new RequestInfoServlet().service(request, response);
241256
}
242257
});
243258

@@ -251,11 +266,12 @@ public void handle(HttpRequest request, HttpResponse response, HttpContext conte
251266
public void testWithExistingXForwardedFor() throws Exception {
252267
final String FOR_HEADER = "X-Forwarded-For";
253268

254-
localTestServer.register("/targetPath*", new RequestInfoHandler() {
255-
public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException {
256-
Header xForwardedForHeader = request.getFirstHeader(FOR_HEADER);
257-
assertEquals("192.168.1.1, 127.0.0.1", xForwardedForHeader.getValue());
258-
super.handle(request, response, context);
269+
replaceTargetServlet(new HttpServlet() {
270+
@Override
271+
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
272+
String xForwardedForHeader = request.getHeader(FOR_HEADER);
273+
assertEquals("192.168.1.1, 127.0.0.1", xForwardedForHeader);
274+
new RequestInfoServlet().service(request, response);
259275
}
260276
});
261277

@@ -269,13 +285,14 @@ public void testEnabledXForwardedFor() throws Exception {
269285
final String FOR_HEADER = "X-Forwarded-For";
270286
final String PROTO_HEADER = "X-Forwarded-Proto";
271287

272-
localTestServer.register("/targetPath*", new RequestInfoHandler() {
273-
public void handle(HttpRequest request, HttpResponse response, HttpContext context) throws HttpException, IOException {
274-
Header xForwardedForHeader = request.getFirstHeader(FOR_HEADER);
275-
Header xForwardedProtoHeader = request.getFirstHeader(PROTO_HEADER);
276-
assertEquals("127.0.0.1", xForwardedForHeader.getValue());
277-
assertEquals("http", xForwardedProtoHeader.getValue());
278-
super.handle(request, response, context);
288+
replaceTargetServlet(new HttpServlet() {
289+
@Override
290+
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
291+
String xForwardedForHeader = request.getHeader(FOR_HEADER);
292+
String xForwardedProtoHeader = request.getHeader(PROTO_HEADER);
293+
assertEquals("127.0.0.1", xForwardedForHeader);
294+
assertEquals("http", xForwardedProtoHeader);
295+
new RequestInfoServlet().service(request, response);
279296
}
280297
});
281298

0 commit comments

Comments
 (0)