package org.vectomatic.svg.edit.server;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
import org.vectomatic.svg.edit.client.load.FetchUtils;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.HttpException;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import com.meterware.servletunit.ServletRunner;
import com.meterware.servletunit.ServletUnitClient;
public class FetchServletTest extends TestCase {
ServletRunner runner;
ServletUnitClient client;
@Override
public void setUp() {
runner = new ServletRunner();
runner.registerServlet(FetchUtils.FETCH_URI, FetchServlet.class.getName() );
client = runner.newClient();
}
public void testDisabled() {
assertEquals(true, true);
}
/*
public void testbadProtocol() throws Throwable {
String uri = FetchUtils.getFetchUrl("http://foobar/" + FetchUtils.FETCH_URI, "ftp://openclipart.org/people/conte%20magnus/Caffettiera.svg", "text/xml");
WebRequest request = new GetMethodWebRequest(uri);
try {
WebResponse response = client.getResponse( request );
fail("Error not detected");
} catch(HttpException e) {
assertEquals(HttpServletResponse.SC_BAD_REQUEST, e.getResponseCode());
}
}
public void testLocalhost() throws Throwable {
String uri = FetchUtils.getFetchUrl("http://foobar/" + FetchUtils.FETCH_URI, "http://localhost/server.xml", "text/xml");
WebRequest request = new GetMethodWebRequest(uri);
try {
WebResponse response = client.getResponse( request );
fail("Error not detected");
} catch(HttpException e) {
assertEquals(HttpServletResponse.SC_FORBIDDEN, e.getResponseCode());
}
}
public void testBadUrl() throws Throwable {
String uri = FetchUtils.getFetchUrl("http://foobar/" + FetchUtils.FETCH_URI, "http://dkfsdkfhsdkfh.com", "text/xml");
WebRequest request = new GetMethodWebRequest(uri);
try {
WebResponse response = client.getResponse( request );
fail("Error not detected");
} catch(HttpException e) {
assertEquals(HttpServletResponse.SC_NOT_FOUND, e.getResponseCode());
}
}
public void testHtml5Fetch() throws Throwable {
String uri = FetchUtils.getFetchUrl("http://foobar/" + FetchUtils.FETCH_URI, "http://www.w3.org/html/logo/downloads/HTML5_Badge.svg", "text/xml");
WebRequest request = new GetMethodWebRequest(uri);
WebResponse response = client.getResponse( request );
String html5Badge = readResource("HTML5_Badge.svg").replaceAll("\n", "\r\n") + "\r\n";
String responseText = response.getText();
assertEquals(html5Badge, responseText);
}
*/
private static String readResource(String resourceName) throws IOException {
StringBuilder builder = new StringBuilder();
char[] buffer = new char[2048];
InputStreamReader stream = new InputStreamReader(FetchServletTest.class.getResourceAsStream(resourceName), "UTF-8");
try {
int length;
while((length = stream.read(buffer)) != -1) {
builder.append(buffer, 0, length);
}
} finally {
if (stream != null) {
stream.close();
}
}
return builder.toString();
}
}