package org.nutz.mvc.testapp; import static org.junit.Assert.assertNotNull; import java.net.URL; import java.util.Arrays; import java.util.Map; import org.apache.tomcat.InstanceManager; import org.apache.tomcat.SimpleInstanceManager; import org.eclipse.jetty.apache.jsp.JettyJasperInitializer; import org.eclipse.jetty.plus.annotation.ContainerInitializer; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.webapp.WebAppContext; import org.junit.After; import org.junit.Before; import org.nutz.http.Header; import org.nutz.http.Http; import org.nutz.http.Request; import org.nutz.http.Request.METHOD; import org.nutz.http.Response; import org.nutz.http.Sender; /** * 需要Jetty 7.3.1 的jar包 * * @author wendal * */ public abstract class BaseWebappTest { protected Server server; protected Response resp; private boolean isRunInMaven = false; private String serverURL = "http://localhost:8888"; // { // for (StackTraceElement ste : Thread.currentThread().getStackTrace()) { // if (ste.getClassName().startsWith("org.apache.maven.surefire")) { // isRunInMaven = true; // serverURL = "http://nutztest.herokuapp.com"; // break; // } // } // } @Before public void startServer() throws Throwable { if (!isRunInMaven) { try { URL url = getClass().getClassLoader().getResource("org/nutz/mvc/testapp/Root/FLAG"); String path = url.toExternalForm(); System.err.println(url); server = new Server(8888); String warUrlString = path.substring(0, path.length() - 4); WebAppContext webapp = new WebAppContext(warUrlString, getContextPath()); webapp.setAttribute("org.eclipse.jetty.containerInitializers" , Arrays.asList ( new ContainerInitializer(new JettyJasperInitializer(), null))); webapp.setAttribute(InstanceManager.class.getName(), new SimpleInstanceManager()); server.setHandler(webapp); server.start(); } catch (Throwable e) { if (server != null) server.stop(); throw e; } } } @After public void shutdownServer() throws Throwable { if (!isRunInMaven) { if (server != null) server.stop(); } } public String getContextPath() { return "/nutztest"; } public String getBaseURL() { return serverURL + getContextPath(); } public Response get(String path) { resp = Http.get(getBaseURL() + path); assertNotNull(resp); return resp; } public Response post(String path, Map<String, Object> params) { Header header = Header.create(); header.set("Content-Type", "application/x-www-form-urlencoded"); resp = Sender.create(Request.create(getBaseURL() + path, METHOD.POST, params, header)).send(); assertNotNull(resp); return resp; } public Response post(String path, String data) { Request req = Request.create(getBaseURL() + path, METHOD.POST); req.setData(data); resp = Sender.create(req).send(); assertNotNull(resp); return resp; } public Response post(String path, byte[] bytes) { Request req = Request.create(getBaseURL() + path, METHOD.POST); req.setData(bytes); resp = Sender.create(req).send(); assertNotNull(resp); return resp; } public Response upload(String path, Map<String, Object> params) { Header header = Header.create(); resp = Sender.create(Request.create(getBaseURL() + path, METHOD.POST, params, header)).send(); assertNotNull(resp); return resp; } }