aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Hawke <paul.hawke@gmail.com>2013-09-21 04:27:43 -0700
committerPaul Hawke <paul.hawke@gmail.com>2013-09-21 04:27:43 -0700
commit66f2f345c88d0086a1911a4aa5e3fbc8251d379f (patch)
tree0113f332f8c7b383c2583537fdcd57746530990b
parent12b4973a5265890754904c75f5eeb6ef1b29373a (diff)
parent249def0afcd823cd21315973bf197f2bef4a089f (diff)
downloadnanohttpd-66f2f345c88d0086a1911a4aa5e3fbc8251d379f.tar.gz
Merge pull request #61 from sleekweasel/test-interfaces
Add interface to allow fakes
-rw-r--r--core/src/main/java/fi/iki/elonen/NanoHTTPD.java39
-rw-r--r--core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java3
-rw-r--r--core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java6
-rw-r--r--webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java2
4 files changed, 39 insertions, 11 deletions
diff --git a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
index 61b813c..e0df220 100644
--- a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
+++ b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
@@ -227,7 +227,7 @@ public abstract class NanoHTTPD {
* @param session The HTTP session
* @return HTTP response, see class Response for details
*/
- public Response serve(HTTPSession session) {
+ public Response serve(IHTTPSession session) {
Map<String, String> files = new HashMap<String, String>();
Method method = session.getMethod();
if (Method.PUT.equals(method) || Method.POST.equals(method)) {
@@ -716,7 +716,32 @@ public abstract class NanoHTTPD {
/**
* Handles one session, i.e. parses the HTTP request and returns the response.
*/
- protected class HTTPSession {
+ public interface IHTTPSession {
+ void execute() throws IOException;
+
+ Map<String, String> getParms();
+
+ Map<String, String> getHeaders();
+
+ /**
+ * @return the path part of the URL.
+ */
+ String getUri();
+
+ Method getMethod();
+
+ InputStream getInputStream();
+
+ CookieHandler getCookies();
+
+ /**
+ * Adds the files in the request body to the files map.
+ * @arg files - map to modify
+ */
+ void parseBody(Map<String, String> files) throws IOException, ResponseException;
+ }
+
+ protected class HTTPSession implements IHTTPSession {
public static final int BUFSIZE = 8192;
private final TempFileManager tempFileManager;
private final OutputStream outputStream;
@@ -735,6 +760,7 @@ public abstract class NanoHTTPD {
this.outputStream = outputStream;
}
+ @Override
public void execute() throws IOException {
try {
// Read the first 8192 bytes.
@@ -809,7 +835,8 @@ public abstract class NanoHTTPD {
}
}
- protected void parseBody(Map<String, String> files) throws IOException, ResponseException {
+ @Override
+ public void parseBody(Map<String, String> files) throws IOException, ResponseException {
RandomAccessFile randomAccessFile = null;
BufferedReader in = null;
try {
@@ -1135,26 +1162,32 @@ public abstract class NanoHTTPD {
}
}
+ @Override
public final Map<String, String> getParms() {
return parms;
}
+ @Override
public final Map<String, String> getHeaders() {
return headers;
}
+ @Override
public final String getUri() {
return uri;
}
+ @Override
public final Method getMethod() {
return method;
}
+ @Override
public final InputStream getInputStream() {
return inputStream;
}
+ @Override
public CookieHandler getCookies() {
return cookies;
}
diff --git a/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java b/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java
index 3362171..0d54b37 100644
--- a/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java
+++ b/core/src/test/java/fi/iki/elonen/integration/CookieIntegrationTest.java
@@ -10,7 +10,6 @@ import org.junit.Test;
import java.util.ArrayList;
import java.util.Calendar;
-import java.util.Date;
import java.util.List;
import static org.junit.Assert.*;
@@ -72,7 +71,7 @@ public class CookieIntegrationTest extends IntegrationTestBase<CookieIntegration
super(8192);
}
- @Override public Response serve(HTTPSession session) {
+ @Override public Response serve(IHTTPSession session) {
CookieHandler cookies = session.getCookies();
for (String cookieName : cookies) {
cookiesReceived.add(new Cookie(cookieName, cookies.read(cookieName)));
diff --git a/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java b/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java
index 533f2d4..1e260b2 100644
--- a/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java
+++ b/core/src/test/java/fi/iki/elonen/integration/PutStreamIntegrationTest.java
@@ -6,14 +6,10 @@ import java.io.DataInputStream;
import java.io.IOException;
import java.util.Map;
-import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.BasicResponseHandler;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.junit.After;
-import org.junit.Before;
import org.junit.Test;
import fi.iki.elonen.NanoHTTPD;
@@ -48,7 +44,7 @@ public class PutStreamIntegrationTest extends IntegrationTestBase<PutStreamInteg
}
@Override
- public Response serve(HTTPSession session) {
+ public Response serve(IHTTPSession session) {
Method method = session.getMethod();
Map<String, String> headers = session.getHeaders();
int contentLength = Integer.parseInt(headers.get("content-length"));
diff --git a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java
index c05b891..79ed4b3 100644
--- a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java
+++ b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java
@@ -219,7 +219,7 @@ public class SimpleWebServer extends NanoHTTPD {
return newUri;
}
- public Response serve(HTTPSession session) {
+ public Response serve(IHTTPSession session) {
Map<String, String> header = session.getHeaders();
Map<String, String> parms = session.getParms();
String uri = session.getUri();