package org.apache.struts2.portlet.test; import java.io.File; import net.sourceforge.jwebunit.junit.WebTestCase; import org.apache.pluto.core.PortletServlet; import org.mortbay.jetty.Server; import org.mortbay.jetty.servlet.ServletHolder; import org.mortbay.jetty.webapp.WebAppContext; public abstract class BasePortletTest extends WebTestCase { protected Server server; private String contextPath = "/test"; private int port; public void setUp() throws Exception { System.setProperty("org.apache.pluto.embedded.portletId", getPortletName()); server = new Server(port); WebAppContext webapp = new WebAppContext("src/main/webapp", contextPath); webapp.setTempDirectory(new File("target/work")); webapp.setDefaultsDescriptor("/WEB-INF/jetty-pluto-web-default.xml"); ServletHolder portletServlet = new ServletHolder(new PortletServlet()); portletServlet.setInitParameter("portlet-name", getPortletName()); portletServlet.setInitOrder(1); webapp.addServlet(portletServlet, "/PlutoInvoker/" + getPortletName()); server.addHandler(webapp); server.start(); // Retrieve the actual port that is used, in case a random, free port is // picked int port = server.getConnectors()[0].getLocalPort(); getTestContext().setBaseUrl("http://localhost:" + port + contextPath); } public void tearDown() throws Exception { server.stop(); } public void minimizeWindow() { clickElementByXPath("//span[@class='minimized']/.."); } public void maximizeWindow() { clickElementByXPath("//span[@class='minimized']/.."); } public void restoreWindow() { clickElementByXPath("//span[@class='normal']/.."); } public void switchEdit() { clickElementByXPath("//span[@class='edit']/.."); } public void switchView() { clickElementByXPath("//span[@class='view']/.."); } public void switchHelp() { clickElementByXPath("//span[@class='help']/.."); } public void setContextPath(String contextPath) { if(!contextPath.startsWith("/")) { this.contextPath = "/" + contextPath; } else { this.contextPath = contextPath; } } public void setPort(int port) { this.port = port; } public abstract String getPortletName(); }