/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
package org.mozilla.android.sync.test.helpers;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.io.PrintStream;
import org.mozilla.gecko.sync.Logger;
import org.mozilla.gecko.sync.Utils;
import org.simpleframework.http.Request;
import org.simpleframework.http.Response;
import org.simpleframework.http.core.Container;
public class MockServer implements Container {
public static final String LOG_TAG = "MockServer";
public int statusCode = 200;
public String body = "Hello World";
public MockServer() {
}
public MockServer(int statusCode, String body) {
this.statusCode = statusCode;
this.body = body;
}
public String expectedBasicAuthHeader;
protected PrintStream handleBasicHeaders(Request request, Response response, int code, String contentType) throws IOException {
return this.handleBasicHeaders(request, response, code, contentType, System.currentTimeMillis());
}
protected PrintStream handleBasicHeaders(Request request, Response response, int code, String contentType, long time) throws IOException {
Logger.debug(LOG_TAG, "< Auth header: " + request.getValue("Authorization"));
PrintStream bodyStream = response.getPrintStream();
response.setCode(code);
response.set("Content-Type", contentType);
response.set("Server", "HelloWorld/1.0 (Simple 4.0)");
response.setDate("Date", time);
response.setDate("Last-Modified", time);
final String timestampHeader = Utils.millisecondsToDecimalSecondsString(time);
response.set("X-Weave-Timestamp", timestampHeader);
Logger.debug(LOG_TAG, "> X-Weave-Timestamp header: " + timestampHeader);
return bodyStream;
}
protected void handle(Request request, Response response, int code, String body) {
try {
Logger.debug(LOG_TAG, "Handling request...");
PrintStream bodyStream = this.handleBasicHeaders(request, response, code, "application/json");
if (expectedBasicAuthHeader != null) {
Logger.debug(LOG_TAG, "Expecting auth header " + expectedBasicAuthHeader);
assertEquals(request.getValue("Authorization"), expectedBasicAuthHeader);
}
bodyStream.println(body);
bodyStream.close();
} catch (IOException e) {
Logger.error(LOG_TAG, "Oops.");
}
}
public void handle(Request request, Response response) {
this.handle(request, response, statusCode, body);
}
}