summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2022-11-16 12:15:00 +0100
committerGitHub <noreply@github.com>2022-11-16 12:15:00 +0100
commit100d32747cb0c3500d9cb8dbde86eeae6b2a70c2 (patch)
tree94d247af2f3d55e4138bf46f54872ac0a20945df
parentbd281f83956c62cc0e42e328c4bac5b338e1f1cf (diff)
parent67e817445178aa0e7e7581bcda0d129c84334e77 (diff)
Merge pull request #24884 from vespa-engine/bjorncs/filter-test-utils
Add test helper to construct filter request instance
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java103
-rw-r--r--jdisc-security-filters/pom.xml10
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java20
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java25
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java4
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java7
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java15
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java10
-rw-r--r--jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java8
-rw-r--r--parent/pom.xml5
10 files changed, 147 insertions, 60 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java
new file mode 100644
index 00000000000..147c13c8e3a
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/util/FilterTestUtils.java
@@ -0,0 +1,103 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jdisc.http.filter.util;
+
+import com.yahoo.jdisc.Container;
+import com.yahoo.jdisc.References;
+import com.yahoo.jdisc.Request;
+import com.yahoo.jdisc.ResourceReference;
+import com.yahoo.jdisc.handler.ContentChannel;
+import com.yahoo.jdisc.handler.RequestHandler;
+import com.yahoo.jdisc.handler.ResponseHandler;
+import com.yahoo.jdisc.http.Cookie;
+import com.yahoo.jdisc.http.HttpRequest;
+import com.yahoo.jdisc.http.HttpRequest.Method;
+import com.yahoo.jdisc.http.HttpRequest.Version;
+import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+import com.yahoo.jdisc.http.filter.SecurityRequestFilter;
+import com.yahoo.jdisc.http.filter.SecurityResponseFilter;
+import com.yahoo.jdisc.http.server.jetty.RequestUtils;
+import com.yahoo.jdisc.service.CurrentContainer;
+
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.net.URI;
+import java.security.Principal;
+import java.security.cert.X509Certificate;
+import java.time.Clock;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import static com.yahoo.jdisc.http.HttpRequest.Version.HTTP_1_1;
+
+/**
+ * Test helper for {@link SecurityRequestFilter}/{@link SecurityResponseFilter}.
+ *
+ * @author bjorncs
+ */
+public class FilterTestUtils {
+
+ private FilterTestUtils() {}
+
+ public static RequestBuilder newRequestBuilder() { return new RequestBuilder(); }
+
+ public static class RequestBuilder {
+
+ private URI uri = URI.create("https://localhost:443/");
+ private Method method = Method.GET;
+ private Clock clock = Clock.systemUTC();
+ private Principal principal;
+ private final Map<String, Object> attributes = new TreeMap<>();
+ private List<X509Certificate> certificates = List.of();
+ private final Map<String, String> headers = new TreeMap<>();
+ private Version version = HTTP_1_1;
+ private SocketAddress remoteAddress;
+ private final List<Cookie> cookies = new ArrayList<>();
+
+ private RequestBuilder() {}
+
+ public RequestBuilder withUri(String uri) { return withUri(URI.create(uri)); }
+ public RequestBuilder withUri(URI uri) { this.uri = uri; return this; }
+ public RequestBuilder withMethod(String method) { return withMethod(Method.valueOf(method)); }
+ public RequestBuilder withMethod(Method method) { this.method = method; return this; }
+ public RequestBuilder withClock(Clock clock) { this.clock = clock; return this; }
+ public RequestBuilder withPrincipal(Principal principal) { this.principal = principal; return this; }
+ public RequestBuilder withAttribute(String name, Object value) { attributes.put(name, value); return this; }
+ public RequestBuilder withClientCertificate(X509Certificate cert) { return withClientCertificate(List.of(cert)); }
+ public RequestBuilder withClientCertificate(List<X509Certificate> certs) { certificates = List.copyOf(certs); return this; }
+ public RequestBuilder withHeader(String name, String value) { headers.put(name, value); return this; }
+ public RequestBuilder withHttpVersion(Version version) { this.version = version; return this; }
+ public RequestBuilder withRemoteAddress(String host, int port) { return withRemoteAddress(new InetSocketAddress(host, port)); }
+ public RequestBuilder withRemoteAddress(SocketAddress address) { this.remoteAddress = address; return this; }
+ public RequestBuilder withCookie(String cookie) { cookies.addAll(Cookie.fromCookieHeader(cookie)); return this; }
+ public RequestBuilder withCookie(Cookie cookie) { cookies.add(cookie); return this; }
+
+ public DiscFilterRequest build() {
+ var httpReq = HttpRequest.newServerRequest(
+ new DummyContainer(clock), uri, method, version, remoteAddress, clock.millis());
+ var filterReq = new DiscFilterRequest(httpReq);
+ filterReq.setUserPrincipal(principal);
+ attributes.forEach(filterReq::setAttribute);
+ filterReq.setAttribute(RequestUtils.JDISC_REQUEST_X509CERT, certificates.toArray(X509Certificate[]::new));
+ headers.forEach(filterReq::addHeader);
+ filterReq.setCookies(cookies);
+ return filterReq;
+ }
+ }
+
+ private record DummyContainer(Clock clock) implements CurrentContainer, Container, RequestHandler {
+ @Override public RequestHandler resolveHandler(Request request) { return this; }
+ @Override public <T> T getInstance(Class<T> type) { throw new UnsupportedOperationException(); }
+ @Override public void release() {}
+ @Override public long currentTimeMillis() { return clock.millis(); }
+ @Override public ContentChannel handleRequest(Request request, ResponseHandler handler) { throw new UnsupportedOperationException(); }
+ @Override public void handleTimeout(Request request, ResponseHandler handler) { throw new UnsupportedOperationException(); }
+ @Override public Container newReference(URI uri, Object context) { return this; }
+ @Override public Container newReference(URI uri) { return this; }
+ @Override public ResourceReference refer(Object context) { return References.NOOP_REFERENCE; }
+ @Override public ResourceReference refer() { return References.NOOP_REFERENCE; }
+ @Override public Instant currentTime() { return clock.instant(); }
+ }
+}
diff --git a/jdisc-security-filters/pom.xml b/jdisc-security-filters/pom.xml
index a452327f6ff..652b864747d 100644
--- a/jdisc-security-filters/pom.xml
+++ b/jdisc-security-filters/pom.xml
@@ -53,6 +53,16 @@
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java
index 752f1026f3d..f7a2e41dae4 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzAuthorizationFilterTest.java
@@ -9,6 +9,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
import com.yahoo.jdisc.http.filter.security.athenz.AthenzAuthorizationFilterConfig.EnabledCredentials;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import com.yahoo.security.KeyAlgorithm;
import com.yahoo.security.KeyUtils;
import com.yahoo.security.SubjectAlternativeName;
@@ -267,14 +268,11 @@ public class AthenzAuthorizationFilterTest {
}
private static DiscFilterRequest createRequest(ZToken roleToken, AthenzAccessToken accessToken, X509Certificate clientCert) {
- DiscFilterRequest request = mock(DiscFilterRequest.class);
- when(request.getHeader(HEADER_NAME)).thenReturn(roleToken != null ? roleToken.getRawToken() : null);
- when(request.getHeader(AthenzAccessToken.HTTP_HEADER_NAME)).thenReturn(accessToken != null ? "Bearer " + accessToken.value() : null);
- when(request.getMethod()).thenReturn("GET");
- when(request.getRequestURI()).thenReturn("/my/path");
- when(request.getQueryString()).thenReturn(null);
- when(request.getClientCertificateChain()).thenReturn(clientCert != null ? List.of(clientCert) : List.of());
- return request;
+ var builder = FilterTestUtils.newRequestBuilder().withUri("https://localhost/my/path");
+ if (roleToken != null) builder.withHeader(HEADER_NAME, roleToken.getRawToken());
+ if (accessToken != null) builder.withHeader(AthenzAccessToken.HTTP_HEADER_NAME, accessToken.value());
+ if (clientCert != null) builder.withClientCertificate(clientCert);
+ return builder.build();
}
private static AthenzAuthorizationFilter createFilter(Zpe zpe, List<EnabledCredentials.Enum> enabledCredentials) {
@@ -298,7 +296,7 @@ public class AthenzAuthorizationFilterTest {
}
private static void assertAuthorizationResult(DiscFilterRequest request, Type expectedResult) {
- verify(request).setAttribute(RESULT_ATTRIBUTE, expectedResult.name());
+ assertEquals(expectedResult.name(), request.getAttribute(RESULT_ATTRIBUTE));
}
private static void assertStatusCode(MockResponseHandler responseHandler, int statusCode) {
@@ -308,7 +306,7 @@ public class AthenzAuthorizationFilterTest {
}
private static void assertMatchedCredentialType(DiscFilterRequest request, EnabledCredentials.Enum expectedType) {
- verify(request).setAttribute(MATCHED_CREDENTIAL_TYPE_ATTRIBUTE, expectedType.name());
+ assertEquals(expectedType.name(), request.getAttribute(MATCHED_CREDENTIAL_TYPE_ATTRIBUTE));
}
private static void assertRequestNotFiltered(MockResponseHandler responseHandler) {
@@ -316,7 +314,7 @@ public class AthenzAuthorizationFilterTest {
}
private static void assertMatchedRole(DiscFilterRequest request, AthenzRole role) {
- verify(request).setAttribute(MATCHED_ROLE_ATTRIBUTE, role.roleName());
+ assertEquals(role.roleName(), request.getAttribute(MATCHED_ROLE_ATTRIBUTE));
}
private static void assertErrorMessage(MockResponseHandler responseHandler, String errorMessage) {
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java
index 0b04993a723..6ee589c1908 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/athenz/AthenzPrincipalFilterTest.java
@@ -6,6 +6,7 @@ import com.yahoo.jdisc.handler.ContentChannel;
import com.yahoo.jdisc.handler.ReadableContentChannel;
import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import com.yahoo.security.KeyAlgorithm;
import com.yahoo.security.KeyUtils;
import com.yahoo.security.X509CertificateBuilder;
@@ -28,16 +29,11 @@ import java.util.Objects;
import static com.yahoo.jdisc.Response.Status.UNAUTHORIZED;
import static com.yahoo.security.SignatureAlgorithm.SHA256_WITH_ECDSA;
-import static java.util.Collections.emptyList;
-import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.joining;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
/**
* @author bjorncs
@@ -49,8 +45,7 @@ public class AthenzPrincipalFilterTest {
@Test
void missing_certificate_is_unauthorized() {
- DiscFilterRequest request = createRequestMock();
- when(request.getClientCertificateChain()).thenReturn(emptyList());
+ DiscFilterRequest request = FilterTestUtils.newRequestBuilder().build();
ResponseHandlerMock responseHandler = new ResponseHandlerMock();
@@ -62,8 +57,7 @@ public class AthenzPrincipalFilterTest {
@Test
void certificate_is_accepted() {
- DiscFilterRequest request = createRequestMock();
- when(request.getClientCertificateChain()).thenReturn(singletonList(CERTIFICATE));
+ DiscFilterRequest request = FilterTestUtils.newRequestBuilder().withClientCertificate(CERTIFICATE).build();
ResponseHandlerMock responseHandler = new ResponseHandlerMock();
@@ -75,15 +69,14 @@ public class AthenzPrincipalFilterTest {
}
private void assertAuthenticated(DiscFilterRequest request, AthenzPrincipal expectedPrincipal) {
- verify(request).setUserPrincipal(expectedPrincipal);
- verify(request).setAttribute(AthenzPrincipalFilter.RESULT_PRINCIPAL, expectedPrincipal);
+ assertEquals(expectedPrincipal, request.getUserPrincipal());
+ assertEquals(expectedPrincipal, request.getAttribute(AthenzPrincipalFilter.RESULT_PRINCIPAL));
}
@Test
void no_response_produced_when_passthrough_mode_is_enabled() {
- DiscFilterRequest request = createRequestMock();
- when(request.getClientCertificateChain()).thenReturn(emptyList());
+ DiscFilterRequest request = FilterTestUtils.newRequestBuilder().build();
ResponseHandlerMock responseHandler = new ResponseHandlerMock();
@@ -93,10 +86,6 @@ public class AthenzPrincipalFilterTest {
assertNull(responseHandler.response);
}
- private DiscFilterRequest createRequestMock() {
- return mock(DiscFilterRequest.class);
- }
-
private AthenzPrincipalFilter createFilter(boolean passthroughModeEnabled) {
return new AthenzPrincipalFilter(passthroughModeEnabled);
}
@@ -105,7 +94,7 @@ public class AthenzPrincipalFilterTest {
assertNotNull(responseHandler.response);
assertEquals(UNAUTHORIZED, responseHandler.response.getStatus());
assertTrue(responseHandler.getResponseContent().contains(expectedMessageSubstring));
- verify(request).setAttribute(AthenzPrincipalFilter.RESULT_ERROR_CODE_ATTRIBUTE, UNAUTHORIZED);
+ assertEquals(UNAUTHORIZED, request.getAttribute(AthenzPrincipalFilter.RESULT_ERROR_CODE_ATTRIBUTE));
}
private static class ResponseHandlerMock implements ResponseHandler {
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java
index 34db051aa28..fe530ed90cb 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/base/JsonSecurityRequestFilterBaseTest.java
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.yahoo.container.jdisc.RequestHandlerTestDriver;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import org.junit.jupiter.api.Test;
import java.io.IOException;
@@ -13,7 +14,6 @@ import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.Mockito.mock;
/**
* @author bjorncs
@@ -26,7 +26,7 @@ public class JsonSecurityRequestFilterBaseTest {
void filter_renders_errors_as_json() throws IOException {
int statusCode = 403;
String message = "Forbidden";
- DiscFilterRequest request = mock(DiscFilterRequest.class);
+ DiscFilterRequest request = FilterTestUtils.newRequestBuilder().build();
SimpleSecurityRequestFilter filter =
new SimpleSecurityRequestFilter(new JsonSecurityRequestFilterBase.ErrorResponse(statusCode, message));
RequestHandlerTestDriver.MockResponseHandler responseHandler = new RequestHandlerTestDriver.MockResponseHandler();
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java
index 7ba050b7cc0..576b04e23b6 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/cors/CorsPreflightRequestFilterTest.java
@@ -8,6 +8,7 @@ import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
import com.yahoo.jdisc.http.filter.SecurityRequestFilter;
import com.yahoo.jdisc.http.filter.security.cors.CorsFilterConfig.Builder;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
@@ -19,7 +20,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
/**
@@ -70,10 +70,7 @@ public class CorsPreflightRequestFilterTest {
}
private static DiscFilterRequest newOptionsRequest(String origin) {
- DiscFilterRequest request = mock(DiscFilterRequest.class);
- when(request.getHeader("Origin")).thenReturn(origin);
- when(request.getMethod()).thenReturn(OPTIONS.name());
- return request;
+ return FilterTestUtils.newRequestBuilder().withHeader("Origin", origin).withMethod(OPTIONS).build();
}
private static CorsPreflightRequestFilter newRequestFilter(String... allowedOriginUrls) {
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java
index aaf6ebf1aee..5b9f143a72b 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/LocalhostFilterTest.java
@@ -4,14 +4,11 @@ package com.yahoo.jdisc.http.filter.security.misc;
import com.yahoo.container.jdisc.RequestHandlerTestDriver;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import java.net.URI;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.when;
/**
* @author mpolden
@@ -34,12 +31,10 @@ public class LocalhostFilterTest {
}
private static DiscFilterRequest createRequest(String remoteAddr, String localAddr) {
- DiscFilterRequest request = Mockito.mock(DiscFilterRequest.class);
- when(request.getRemoteAddr()).thenReturn(remoteAddr);
- when(request.getLocalAddr()).thenReturn(localAddr);
- when(request.getMethod()).thenReturn("GET");
- when(request.getUri()).thenReturn(URI.create("http://localhost:8080/"));
- return request;
+ return FilterTestUtils.newRequestBuilder()
+ .withUri("http://%s:8080/".formatted(localAddr))
+ .withRemoteAddress(remoteAddr, 12345)
+ .build();
}
private static void assertUnauthorized(DiscFilterRequest request) {
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java
index 95bc1f92572..2dd243618c9 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java
@@ -5,16 +5,15 @@ package com.yahoo.jdisc.http.filter.security.misc;
import com.yahoo.container.jdisc.RequestHandlerTestDriver;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import com.yahoo.security.KeyAlgorithm;
import com.yahoo.security.KeyUtils;
import com.yahoo.security.SignatureAlgorithm;
import com.yahoo.security.X509CertificateBuilder;
import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
import javax.security.auth.x500.X500Principal;
import java.math.BigInteger;
-import java.net.URI;
import java.security.cert.X509Certificate;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
@@ -23,7 +22,6 @@ import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.when;
public class VespaTlsFilterTest {
@@ -43,11 +41,7 @@ public class VespaTlsFilterTest {
}
private static DiscFilterRequest createRequest(List<X509Certificate> certChain) {
- DiscFilterRequest request = Mockito.mock(DiscFilterRequest.class);
- when(request.getClientCertificateChain()).thenReturn(certChain);
- when(request.getMethod()).thenReturn("GET");
- when(request.getUri()).thenReturn(URI.create("http://localhost:8080/"));
- return request;
+ return FilterTestUtils.newRequestBuilder().withClientCertificate(certChain).withUri("http://localhost:8080/").build();
}
private static void assertForbidden(DiscFilterRequest request) {
diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java
index 4ad593efe82..c4a78a2d962 100644
--- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java
+++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/rule/RuleBasedRequestFilterTest.java
@@ -8,13 +8,13 @@ import com.yahoo.container.jdisc.RequestHandlerTestDriver.MockResponseHandler;
import com.yahoo.jdisc.Metric;
import com.yahoo.jdisc.Response;
import com.yahoo.jdisc.http.filter.DiscFilterRequest;
+import com.yahoo.jdisc.http.filter.util.FilterTestUtils;
import com.yahoo.vespa.config.jdisc.http.filter.RuleBasedFilterConfig;
import com.yahoo.vespa.config.jdisc.http.filter.RuleBasedFilterConfig.DefaultRule;
import com.yahoo.vespa.config.jdisc.http.filter.RuleBasedFilterConfig.Rule;
import org.junit.jupiter.api.Test;
import java.io.IOException;
-import java.net.URI;
import java.util.List;
import java.util.Set;
@@ -25,7 +25,6 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
/**
* @author bjorncs
@@ -218,10 +217,7 @@ class RuleBasedRequestFilterTest {
}
private static DiscFilterRequest request(String method, String uri) {
- DiscFilterRequest request = mock(DiscFilterRequest.class);
- when(request.getMethod()).thenReturn(method);
- when(request.getUri()).thenReturn(URI.create(uri));
- return request;
+ return FilterTestUtils.newRequestBuilder().withMethod(method).withUri(uri).build();
}
private static void assertAllowed(MockResponseHandler handler, Metric metric) {
diff --git a/parent/pom.xml b/parent/pom.xml
index b17a56c9dc8..1c9f4d387bb 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -911,6 +911,11 @@
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ <version>${jetty.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
</dependency>