diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-07-09 11:43:34 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-07-09 11:43:34 +0200 |
commit | 6999a725ca7998ff683b29642c6ae1efb6f3de1d (patch) | |
tree | d4f48c9927e8564adcd23c7e424273dd741c5c76 /jdisc_http_service/src | |
parent | a1dcc38a8aa44cb643f617c59b90100eec40bd7f (diff) |
Test handling of invalid remote port header
Diffstat (limited to 'jdisc_http_service/src')
-rw-r--r-- | jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java | 20 |
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; } |