Extract MockHttpHandler from GsaFeedFileSenderTest
The mock in GsaFeedFileSenderTest is much more useful than the existing
mock, which has been moved to AdministratorSecurityHandlerTest and
renamed to CountingHttpHandler.
diff --git a/test/com/google/enterprise/adaptor/AdministratorSecurityHandlerTest.java b/test/com/google/enterprise/adaptor/AdministratorSecurityHandlerTest.java
index d60382d..511f66e 100644
--- a/test/com/google/enterprise/adaptor/AdministratorSecurityHandlerTest.java
+++ b/test/com/google/enterprise/adaptor/AdministratorSecurityHandlerTest.java
@@ -16,7 +16,8 @@
import static org.junit.Assert.*;
-import com.sun.net.httpserver.*;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
import org.junit.Test;
@@ -29,7 +30,7 @@
private SessionManager<HttpExchange> sessionManager
= new SessionManager<HttpExchange>(new MockTimeProvider(),
new SessionManager.HttpExchangeClientStore(), 10000, 1000);
- private MockHttpHandler mockHandler = new MockHttpHandler();
+ private CountingHttpHandler mockHandler = new CountingHttpHandler();
private AdministratorSecurityHandler handler
= new AdministratorSecurityHandler(mockHandler, sessionManager,
new MockAuthnClient());
@@ -142,4 +143,18 @@
}
}
}
+
+ private static class CountingHttpHandler implements HttpHandler {
+ private int executed;
+
+ @Override
+ public void handle(HttpExchange ex) throws IOException {
+ executed++;
+ ex.sendResponseHeaders(200, -1);
+ }
+
+ public int getTimesExecuted() {
+ return executed;
+ }
+ }
}
diff --git a/test/com/google/enterprise/adaptor/GsaFeedFileSenderTest.java b/test/com/google/enterprise/adaptor/GsaFeedFileSenderTest.java
index aacf092..0529aee 100644
--- a/test/com/google/enterprise/adaptor/GsaFeedFileSenderTest.java
+++ b/test/com/google/enterprise/adaptor/GsaFeedFileSenderTest.java
@@ -16,7 +16,6 @@
import static org.junit.Assert.*;
-import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
@@ -277,50 +276,4 @@
thrown.expect(IllegalArgumentException.class);
sender.sendGroups("bad#source", "<payload/>", false);
}
-
- private static class MockHttpHandler implements HttpHandler {
- private final int responseCode;
- private final byte[] responseBytes;
- private String requestMethod;
- private URI requestUri;
- private Headers requestHeaders;
- private byte[] requestBytes;
-
- public MockHttpHandler(int responseCode, byte[] responseBytes) {
- this.responseCode = responseCode;
- this.responseBytes = responseBytes;
- }
-
- @Override
- public void handle(HttpExchange ex) throws IOException {
- requestMethod = ex.getRequestMethod();
- requestUri = ex.getRequestURI();
- requestHeaders = new Headers();
- requestHeaders.putAll(ex.getRequestHeaders());
- requestBytes = IOHelper.readInputStreamToByteArray(ex.getRequestBody());
- ex.sendResponseHeaders(responseCode, responseBytes == null ? -1 : 0);
- if (responseBytes != null) {
- ex.getResponseBody().write(responseBytes);
- ex.getResponseBody().flush();
- ex.getResponseBody().close();
- }
- ex.close();
- }
-
- public String getRequestMethod() {
- return requestMethod;
- }
-
- public URI getRequestUri() {
- return requestUri;
- }
-
- public Headers getRequestHeaders() {
- return requestHeaders;
- }
-
- public byte[] getRequestBytes() {
- return requestBytes;
- }
- }
}
diff --git a/test/com/google/enterprise/adaptor/LoggingFilterTest.java b/test/com/google/enterprise/adaptor/LoggingFilterTest.java
index fa9e032..33fce89 100644
--- a/test/com/google/enterprise/adaptor/LoggingFilterTest.java
+++ b/test/com/google/enterprise/adaptor/LoggingFilterTest.java
@@ -32,7 +32,7 @@
private LoggingFilter filter = new LoggingFilter();
private List<Filter> filters = Arrays.<Filter>asList(filter);
private MockHttpExchange ex = new MockHttpExchange("GET", "/",
- new MockHttpContext(new MockHttpHandler(), "/"));
+ new MockHttpContext(new MockHttpHandler(200, null), "/"));
@Test
public void testDescription() {
diff --git a/test/com/google/enterprise/adaptor/MockHttpHandler.java b/test/com/google/enterprise/adaptor/MockHttpHandler.java
index e252a20..c338824 100644
--- a/test/com/google/enterprise/adaptor/MockHttpHandler.java
+++ b/test/com/google/enterprise/adaptor/MockHttpHandler.java
@@ -14,23 +14,68 @@
package com.google.enterprise.adaptor;
-import com.sun.net.httpserver.*;
+import com.sun.net.httpserver.Headers;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
import java.io.IOException;
+import java.net.URI;
+import java.util.*;
/**
* Mock {@link HttpHandler}.
*/
public class MockHttpHandler implements HttpHandler {
- private int executed;
+ private final int responseCode;
+ private final byte[] responseBytes;
+ private final Map<String, List<String>> responseHeaders;
+ private String requestMethod;
+ private URI requestUri;
+ private Headers requestHeaders;
+ private byte[] requestBytes;
+
+ public MockHttpHandler(int responseCode, byte[] responseBytes) {
+ this(responseCode, responseBytes,
+ Collections.<String, List<String>>emptyMap());
+ }
+
+ public MockHttpHandler(int responseCode, byte[] responseBytes,
+ Map<String, List<String>> responseHeaders) {
+ this.responseCode = responseCode;
+ this.responseBytes = responseBytes;
+ this.responseHeaders = responseHeaders;
+ }
@Override
public void handle(HttpExchange ex) throws IOException {
- executed++;
- ex.sendResponseHeaders(200, -1);
+ requestMethod = ex.getRequestMethod();
+ requestUri = ex.getRequestURI();
+ requestHeaders = new Headers();
+ requestHeaders.putAll(ex.getRequestHeaders());
+ requestBytes = IOHelper.readInputStreamToByteArray(ex.getRequestBody());
+ ex.getResponseHeaders().putAll(responseHeaders);
+ ex.sendResponseHeaders(responseCode, responseBytes == null ? -1 : 0);
+ if (responseBytes != null) {
+ ex.getResponseBody().write(responseBytes);
+ ex.getResponseBody().flush();
+ ex.getResponseBody().close();
+ }
+ ex.close();
}
- public int getTimesExecuted() {
- return executed;
+ public String getRequestMethod() {
+ return requestMethod;
+ }
+
+ public URI getRequestUri() {
+ return requestUri;
+ }
+
+ public Headers getRequestHeaders() {
+ return requestHeaders;
+ }
+
+ public byte[] getRequestBytes() {
+ return requestBytes;
}
}