Adjust DefaultServlet test case to recent change,

depreciate unused CONNECTION_PROP_PROTOCOL (also as it might be 
misleading with getProtocol vs getScheme)
pull/114/head
reger 8 years ago
parent 41e2ee0eca
commit 275c0cddd1

@ -188,6 +188,7 @@ public class HeaderFramework extends TreeMap<String, String> implements Map<Stri
// One of the usages is in proxy operation to prepare header values to be set as header values upon connection
// * use of properties as header values is discouraged (e.g. as proxy transmits it as arbitrary headers) [2016-8-21]
public static final String CONNECTION_PROP_HTTP_VER = "HTTP";
@Deprecated // use CONNECTION_PROP_DIGESTURL // misleading custom header (compared to servletrequest) get(CONNECTION_PROP_PROTOCOL) = servletrequest.getScheme()
public static final String CONNECTION_PROP_PROTOCOL = "PROTOCOL";
public static final String CONNECTION_PROP_HOST = "HOST";
public static final String CONNECTION_PROP_USER = "USER";

@ -643,7 +643,11 @@ public class RequestHeader extends HeaderFramework implements HttpServletRequest
if (_request != null) {
return _request.getScheme();
} else {
return "http";
if (super.containsKey(HeaderFramework.CONNECTION_PROP_PROTOCOL)) {
return super.get(HeaderFramework.CONNECTION_PROP_PROTOCOL);
} else {
return "http";
}
}
}

@ -64,35 +64,35 @@ public class YaCyDefaultServletTest {
/**
* getContext() : standard "Host" header is filled with hostname and port,
* custom "X-YaCy-Request-Scheme" header indicates the protocol
* custom "CONNECTION_PROP_PROTOCOL" header indicates the protocol
*/
@Test
public void testGetContextCustomProtocolHeader() {
RequestHeader header = new RequestHeader();
header.put(HeaderFramework.HOST, "myhost.com:8443");
header.put(HeaderFramework.X_YACY_REQUEST_SCHEME, "https");
header.put(HeaderFramework.CONNECTION_PROP_PROTOCOL, "https");
assertEquals("https://myhost.com:8443", YaCyDefaultServlet.getContext(header, null));
header = new RequestHeader();
header.put(HeaderFramework.HOST, "myhost.com:8090");
header.put(HeaderFramework.X_YACY_REQUEST_SCHEME, "http");
header.put(HeaderFramework.CONNECTION_PROP_PROTOCOL, "http");
assertEquals("http://myhost.com:8090", YaCyDefaultServlet.getContext(header, null));
}
/**
* getContext() : standard "Host" header is filled only with hostname (default standard port),
* custom "X-YaCy-Request-Scheme" indicates the protocol
* custom "CONNECTION_PROP_PROTOCOL" indicates the protocol
*/
@Test
public void testGetContextDefaultPortCustomProtocolHeader() {
RequestHeader header = new RequestHeader();
header.put(HeaderFramework.HOST, "myhost.com");
header.put(HeaderFramework.X_YACY_REQUEST_SCHEME, "http");
header.put(HeaderFramework.CONNECTION_PROP_PROTOCOL, "http");
assertEquals("http://myhost.com", YaCyDefaultServlet.getContext(header, null));
header = new RequestHeader();
header.put(HeaderFramework.HOST, "myhost.com");
header.put(HeaderFramework.X_YACY_REQUEST_SCHEME, "https");
header.put(HeaderFramework.CONNECTION_PROP_PROTOCOL, "https");
assertEquals("https://myhost.com", YaCyDefaultServlet.getContext(header, null));
}
@ -104,14 +104,14 @@ public class YaCyDefaultServletTest {
/* Different protocols : HTTPS on proxy, HTTP on peer */
RequestHeader header = new RequestHeader();
header.put(HeaderFramework.HOST, "myhost.com");
header.put(HeaderFramework.X_YACY_REQUEST_SCHEME, "http");
header.put(HeaderFramework.CONNECTION_PROP_PROTOCOL, "http");
header.put(HttpHeaders.X_FORWARDED_PROTO.toString(), "https");
assertEquals("https://myhost.com", YaCyDefaultServlet.getContext(header, null));
/* Illegal X-Forwarded-Proto header value */
header = new RequestHeader();
header.put(HeaderFramework.HOST, "myhost.com:8090");
header.put(HeaderFramework.X_YACY_REQUEST_SCHEME, "http");
header.put(HeaderFramework.CONNECTION_PROP_PROTOCOL, "http");
header.put(HttpHeaders.X_FORWARDED_PROTO.toString(), "http://attacker.com?query=");
assertEquals("http://myhost.com:8090", YaCyDefaultServlet.getContext(header, null));
}

Loading…
Cancel
Save