summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-09 13:38:19 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-09 18:51:20 +0200
commitc1fe0be02de12735d2270130aea0ed5a75d2fd6c (patch)
treef1f1dbc5f729e11d0397072598e42d4a80989f04
parent709205bb991d2047577fd5013acebd52c2e23269 (diff)
JettyMockRequestBuilder instead of Mockito in unit tests
-rw-r--r--container-core/pom.xml5
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java27
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java89
-rw-r--r--container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java30
-rw-r--r--parent/pom.xml5
5 files changed, 50 insertions, 106 deletions
diff --git a/container-core/pom.xml b/container-core/pom.xml
index bb00eaf586a..35bb62879fb 100644
--- a/container-core/pom.xml
+++ b/container-core/pom.xml
@@ -313,11 +313,6 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
<plugins>
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java
index 3052902f174..ed4c9b66068 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/filter/ServletFilterRequestTest.java
@@ -3,12 +3,11 @@ package com.yahoo.jdisc.http.filter;
import com.yahoo.jdisc.http.Cookie;
import com.yahoo.jdisc.http.HttpHeaders;
+import com.yahoo.jdisc.http.server.jetty.JettyMockRequestBuilder;
import com.yahoo.jdisc.http.servlet.ServletRequest;
-import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
import org.junit.Before;
import org.junit.Test;
-import org.mockito.Mockito;
-import org.springframework.mock.web.MockHttpServletRequest;
import java.net.URI;
import java.util.Arrays;
@@ -18,7 +17,6 @@ import java.util.List;
import static com.yahoo.jdisc.http.HttpRequest.Version;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.when;
/**
* Test the parts of the DiscFilterRequest API that are implemented
@@ -26,7 +24,6 @@ import static org.mockito.Mockito.when;
* {@link com.yahoo.jdisc.http.servlet.ServletRequest}.
*
* @author gjoranv
- * @since 5.27
*/
public class ServletFilterRequestTest {
@@ -54,18 +51,14 @@ public class ServletFilterRequestTest {
parentRequest = ((ServletFilterRequest)filterRequest).getServletRequest();
}
- private ServletRequest newServletRequest() throws Exception {
- MockHttpServletRequest parent = new MockHttpServletRequest("GET", uri.toString());
- parent.setProtocol(Version.HTTP_1_1.toString());
- parent.setRemoteHost(host);
- parent.setRemotePort(port);
- parent.setParameter(paramName, paramValue);
- parent.setParameter(listParamName, listParamValue);
- parent.addHeader(headerName, headerValue);
- parent.setAttribute(attributeName, attributeValue);
- HttpConnection connection = Mockito.mock(HttpConnection.class);
- when(connection.getCreatedTimeStamp()).thenReturn(System.currentTimeMillis());
- parent.setAttribute("org.eclipse.jetty.server.HttpConnection", connection);
+ private ServletRequest newServletRequest() {
+ Request parent = JettyMockRequestBuilder.newBuilder()
+ .remote("1.2.3.4", host, port)
+ .header(headerName, List.of(headerValue))
+ .parameter(paramName, List.of(paramValue))
+ .parameter(listParamName, List.of(listParamValue))
+ .attribute(attributeName, attributeValue)
+ .build();
return new ServletRequest(parent, uri);
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
index e472f954afc..c45d17a4ff8 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLogTest.java
@@ -4,12 +4,7 @@ package com.yahoo.jdisc.http.server.jetty;
import com.yahoo.container.logging.AccessLogEntry;
import com.yahoo.container.logging.RequestLog;
import com.yahoo.container.logging.RequestLogEntry;
-import com.yahoo.jdisc.http.ConnectorConfig;
import com.yahoo.jdisc.http.ServerConfig;
-import org.eclipse.jetty.http.MetaData;
-import org.eclipse.jetty.server.HttpChannel;
-import org.eclipse.jetty.server.HttpConnection;
-import org.eclipse.jetty.server.HttpInput;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
import org.junit.Test;
@@ -23,8 +18,6 @@ import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Oyvind Bakksjo
@@ -33,9 +26,9 @@ import static org.mockito.Mockito.when;
public class AccessLogRequestLogTest {
@Test
public void requireThatQueryWithUnquotedSpecialCharactersIsHandled() {
- final Request jettyRequest = createRequestMock();
- when(jettyRequest.getRequestURI()).thenReturn("/search/");
- when(jettyRequest.getQueryString()).thenReturn("query=year:>2010");
+ Request jettyRequest = createRequestBuilder()
+ .uri("http", "localhost", 12345, "/search/", "query=year:>2010")
+ .build();
InMemoryRequestLog requestLog = new InMemoryRequestLog();
doAccessLoggingOfRequest(requestLog, jettyRequest);
@@ -47,11 +40,11 @@ public class AccessLogRequestLogTest {
@Test
public void requireThatDoubleQuotingIsNotPerformed() {
- final Request jettyRequest = createRequestMock();
- final String path = "/search/";
- when(jettyRequest.getRequestURI()).thenReturn(path);
- final String query = "query=year%252010+%3B&customParameter=something";
- when(jettyRequest.getQueryString()).thenReturn(query);
+ String path = "/search/";
+ String query = "query=year%252010+%3B&customParameter=something";
+ Request jettyRequest = createRequestBuilder()
+ .uri("http", "localhost", 12345, path, query)
+ .build();
InMemoryRequestLog requestLog = new InMemoryRequestLog();
doAccessLoggingOfRequest(requestLog, jettyRequest);
@@ -64,11 +57,11 @@ public class AccessLogRequestLogTest {
@Test
public void raw_path_and_query_are_set_from_request() {
- Request jettyRequest = createRequestMock();
String rawPath = "//search/";
- when(jettyRequest.getRequestURI()).thenReturn(rawPath);
String rawQuery = "q=%%2";
- when(jettyRequest.getQueryString()).thenReturn(rawQuery);
+ Request jettyRequest = createRequestBuilder()
+ .uri("http", "localhost", 12345, rawPath, rawQuery)
+ .build();
InMemoryRequestLog requestLog = new InMemoryRequestLog();
doAccessLoggingOfRequest(requestLog, jettyRequest);
@@ -81,11 +74,11 @@ public class AccessLogRequestLogTest {
@Test
public void verify_x_forwarded_for_precedence () {
- Request jettyRequest = createRequestMock();
- when(jettyRequest.getRequestURI()).thenReturn("//search/");
- when(jettyRequest.getQueryString()).thenReturn("q=%%2");
- when(jettyRequest.getHeader("x-forwarded-for")).thenReturn("1.2.3.4");
- when(jettyRequest.getHeader("y-ra")).thenReturn("2.3.4.5");
+ Request jettyRequest = createRequestBuilder()
+ .uri("http", "localhost", 12345, "//search/", "q=%%2")
+ .header("x-forwarded-for", List.of("1.2.3.4"))
+ .header("y-ra", List.of("2.3.4.5"))
+ .build();
InMemoryRequestLog requestLog = new InMemoryRequestLog();
doAccessLoggingOfRequest(requestLog, jettyRequest);
@@ -95,11 +88,11 @@ public class AccessLogRequestLogTest {
@Test
public void verify_x_forwarded_port_precedence () {
- Request jettyRequest = createRequestMock();
- when(jettyRequest.getRequestURI()).thenReturn("//search/");
- when(jettyRequest.getQueryString()).thenReturn("q=%%2");
- when(jettyRequest.getHeader("X-Forwarded-Port")).thenReturn("80");
- when(jettyRequest.getHeader("y-rp")).thenReturn("8080");
+ Request jettyRequest = createRequestBuilder()
+ .uri("http", "localhost", 12345, "//search/", "q=%%2")
+ .header("X-Forwarded-Port", List.of("80"))
+ .header("y-rp", List.of("8080"))
+ .build();
InMemoryRequestLog requestLog = new InMemoryRequestLog();
doAccessLoggingOfRequest(requestLog, jettyRequest);
@@ -109,10 +102,12 @@ public class AccessLogRequestLogTest {
@Test
public void defaults_to_peer_port_if_remote_port_header_is_invalid() {
- final Request jettyRequest = createRequestMock();
- when(jettyRequest.getRequestURI()).thenReturn("/search/");
- when(jettyRequest.getHeader("X-Forwarded-Port")).thenReturn("8o8o");
- when(jettyRequest.getRemotePort()).thenReturn(80);
+ Request jettyRequest = createRequestBuilder()
+ .uri("http", "localhost", 12345, "/search/", null)
+ .header("X-Forwarded-Port", List.of("8o8o"))
+ .header("y-rp", List.of("8o8o"))
+ .remote("2.3.4.5", "localhost", 80)
+ .build();
InMemoryRequestLog requestLog = new InMemoryRequestLog();
doAccessLoggingOfRequest(requestLog, jettyRequest);
@@ -129,32 +124,14 @@ public class AccessLogRequestLogTest {
new AccessLogRequestLog(requestLog, config).log(jettyRequest, createResponseMock());
}
- private static Request createRequestMock() {
- JDiscServerConnector serverConnector = mock(JDiscServerConnector.class);
- int localPort = 1234;
- when(serverConnector.connectorConfig()).thenReturn(new ConnectorConfig(new ConnectorConfig.Builder().listenPort(localPort)));
- when(serverConnector.getLocalPort()).thenReturn(localPort);
- HttpConnection httpConnection = mock(HttpConnection.class);
- when(httpConnection.getConnector()).thenReturn(serverConnector);
- Request request = mock(Request.class);
- when(request.getMethod()).thenReturn("GET");
- when(request.getRemoteAddr()).thenReturn("localhost");
- when(request.getRemotePort()).thenReturn(12345);
- when(request.getProtocol()).thenReturn("HTTP/1.1");
- when(request.getScheme()).thenReturn("http");
- when(request.getTimeStamp()).thenReturn(0L);
- when(request.getAttribute(JDiscHttpServlet.ATTRIBUTE_NAME_ACCESS_LOG_ENTRY)).thenReturn(new AccessLogEntry());
- when(request.getAttribute("org.eclipse.jetty.server.HttpConnection")).thenReturn(httpConnection);
- HttpInput httpInput = mock(HttpInput.class);
- when(httpInput.getContentReceived()).thenReturn(2345L);
- when(request.getHttpInput()).thenReturn(httpInput);
- return request;
+ private static JettyMockRequestBuilder createRequestBuilder() {
+ return JettyMockRequestBuilder.newBuilder()
+ .attribute(JDiscHttpServlet.ATTRIBUTE_NAME_ACCESS_LOG_ENTRY, new AccessLogEntry())
+ .remote("2.3.4.5", "localhost", 12345)
+ .localPort(1234);
}
private Response createResponseMock() {
- Response response = mock(Response.class);
- when(response.getHttpChannel()).thenReturn(mock(HttpChannel.class));
- when(response.getCommittedMetaData()).thenReturn(mock(MetaData.Response.class));
- return response;
+ return JettyMockResponseBuilder.newBuilder().build();
}
}
diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java
index 9c1348004ee..fbbf3074839 100644
--- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java
+++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpRequestFactoryTest.java
@@ -7,10 +7,8 @@ import com.yahoo.jdisc.References;
import com.yahoo.jdisc.ResourceReference;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.handler.RequestHandler;
-import com.yahoo.jdisc.http.ConnectorConfig;
import com.yahoo.jdisc.http.HttpRequest;
import com.yahoo.jdisc.service.CurrentContainer;
-import org.eclipse.jetty.server.HttpConnection;
import org.junit.Test;
import javax.servlet.http.HttpServletRequest;
@@ -22,8 +20,6 @@ import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
* @author Steinar Knutsen
@@ -141,27 +137,15 @@ public class HttpRequestFactoryTest {
assertEquals(LOCAL_PORT, request.getUri().getPort());
}
- private static HttpServletRequest createMockRequest(String scheme, String serverName, String path, String queryString) {
- HttpServletRequest request = mock(HttpServletRequest.class);
- HttpConnection connection = mock(HttpConnection.class);
- JDiscServerConnector connector = mock(JDiscServerConnector.class);
- when(connector.connectorConfig()).thenReturn(new ConnectorConfig(new ConnectorConfig.Builder().listenPort(LOCAL_PORT)));
- when(connector.getLocalPort()).thenReturn(LOCAL_PORT);
- when(connection.getCreatedTimeStamp()).thenReturn(System.currentTimeMillis());
- when(connection.getConnector()).thenReturn(connector);
- when(request.getAttribute("org.eclipse.jetty.server.HttpConnection")).thenReturn(connection);
- when(request.getProtocol()).thenReturn("HTTP/1.1");
- when(request.getScheme()).thenReturn(scheme);
- when(request.getServerName()).thenReturn(serverName);
- when(request.getRemoteAddr()).thenReturn("127.0.0.1");
- when(request.getRemotePort()).thenReturn(1234);
- when(request.getLocalPort()).thenReturn(LOCAL_PORT);
- when(request.getMethod()).thenReturn("GET");
- when(request.getQueryString()).thenReturn(queryString);
- when(request.getRequestURI()).thenReturn(path);
- return request;
+ private HttpServletRequest createMockRequest(String scheme, String host, String path, String query) {
+ return JettyMockRequestBuilder.newBuilder()
+ .uri(scheme, host, LOCAL_PORT, path, query)
+ .remote("127.0.0.1", "localhost", 1234)
+ .localPort(LOCAL_PORT)
+ .build();
}
+
private static final class MockContainer implements CurrentContainer {
@Override
diff --git a/parent/pom.xml b/parent/pom.xml
index 0f2ea616193..3b5b0891e73 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -736,11 +736,6 @@
<version>${asm.version}</version>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>4.0.6.RELEASE</version>
- </dependency>
- <dependency>
<groupId>org.tensorflow</groupId>
<artifactId>proto</artifactId>
<version>${tensorflow.version}</version>