+++ /dev/null
-package de.halbekunst.juplo.test;
-
-import com.meterware.httpunit.WebResponse;
-import com.meterware.servletunit.InvocationContext;
-import com.meterware.servletunit.ServletRunner;
-import com.meterware.servletunit.ServletUnitClient;
-import java.io.File;
-import java.util.Enumeration;
-import javax.servlet.http.HttpServletRequest;
-import org.junit.Before;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * @author kai
- */
-public abstract class HttpTestCase {
-
- private final static Logger log = LoggerFactory.getLogger(HttpTestCase.class);
-
- private ServletRunner sr;
- private File config;
- public ServletUnitClient client;
-
-
- public HttpTestCase(String config) {
- this(new File(config));
- }
-
- public HttpTestCase(File config) {
- if (!config.exists())
- throw new RuntimeException("web.xml is missing: " + config + " does not exist.");
- this.config = config;
- }
-
-
- @Before
- public void init() throws Exception {
- sr = new ServletRunner(config, ""); // Dies ist der einzige Konstruktor, der die Context-Root der Webapp im Testfall korrekt initialisiert :/
- client = sr.newClient();
- }
-
- public WebResponse executeRequest(String uri) throws Exception {
- log.debug("---------- GET: {}", uri);
- InvocationContext invocation = client.newInvocation(uri);
- HttpServletRequest request = invocation.getRequest();
- log.debug("Request - {}: {}", request.getMethod(), request.getProtocol());
- Enumeration<String> headers = request.getHeaderNames();
- while (headers.hasMoreElements()) {
- String header = headers.nextElement();
- Enumeration<String> values = request.getHeaders(header);
- while (values.hasMoreElements())
- log.debug("Request - {}: {}", header, values.nextElement());
- }
-
- log.debug("Invocing service method.");
-
- /**
- * We cannot call invocation.service(), because we have to wrap the
- * response. Therefore this was coppied from InvocationContextImpl.
- */
- LoggingHttpServletResponseWrapper wrappedResponse =
- new LoggingHttpServletResponseWrapper(uri, invocation.getResponse());
- if (invocation.isFilterActive()) {
- invocation.getFilter().doFilter(invocation.getRequest(), wrappedResponse, invocation.getFilterChain());
- }
- else {
- invocation.getServlet().service(invocation.getRequest(), wrappedResponse);
- }
- long count = wrappedResponse.close();
-
- WebResponse response = invocation.getServletResponse();
- log.debug("Response - {}: {}", response.getResponseCode(), response.getResponseMessage());
- log.debug("Response - {}, {} bytes", response.getContentType(), count);
- for (String header : response.getHeaderFieldNames()) {
- for (String value : response.getHeaderFields(header)) {
- log.debug("Response - {}: {}", header, value);
- }
- }
- return response;
- }
-}
-