summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-07-09 12:41:58 +0200
committerGitHub <noreply@github.com>2020-07-09 12:41:58 +0200
commit9ba83e0d6bd5a5a0f30434aa343821c29abe8628 (patch)
treebfe736a55f72a5f4f42b0bfdcfcf5a80bc226420 /jdisc_http_service
parentc2a74c6e8d7b64fd237e36a4d5c886a387dcfaa0 (diff)
parent6999a725ca7998ff683b29642c6ae1efb6f3de1d (diff)
Merge pull request #13847 from vespa-engine/bjorncs/test-invalid-remote-port-header
Test handling of invalid remote port header
Diffstat (limited to 'jdisc_http_service')
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
index 580533be4c3..69535be034c 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
@@ -5,8 +5,10 @@ import com.yahoo.container.logging.AccessLog;
import com.yahoo.container.logging.AccessLogEntry;
import org.eclipse.jetty.http.MetaData;
import org.eclipse.jetty.server.HttpChannel;
+import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
+import org.eclipse.jetty.server.ServerConnector;
import org.junit.Test;
import java.util.Optional;
@@ -95,9 +97,27 @@ public class AccessLogRequestLogTest {
assertThat(accessLogEntry.getRemotePort(), is(80));
}
+ @Test
+ public void defaults_to_peer_port_if_remote_port_header_is_invalid() {
+ final AccessLogEntry accessLogEntry = new AccessLogEntry();
+ final Request jettyRequest = createRequestMock(accessLogEntry);
+ when(jettyRequest.getRequestURI()).thenReturn("/search/");
+ when(jettyRequest.getHeader("X-Forwarded-Port")).thenReturn("8o8o");
+ when(jettyRequest.getRemotePort()).thenReturn(80);
+
+ new AccessLogRequestLog(mock(AccessLog.class)).log(jettyRequest, createResponseMock());
+ assertThat(accessLogEntry.getRemotePort(), is(0));
+ assertThat(accessLogEntry.getPeerPort(), is(80));
+ }
+
private static Request createRequestMock(AccessLogEntry entry) {
+ ServerConnector serverConnector = mock(ServerConnector.class);
+ when(serverConnector.getLocalPort()).thenReturn(1234);
+ HttpConnection httpConnection = mock(HttpConnection.class);
+ when(httpConnection.getConnector()).thenReturn(serverConnector);
Request request = mock(Request.class);
when(request.getAttribute(JDiscHttpServlet.ATTRIBUTE_NAME_ACCESS_LOG_ENTRY)).thenReturn(entry);
+ when(request.getAttribute("org.eclipse.jetty.server.HttpConnection")).thenReturn(httpConnection);
return request;
}