/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.gwtwidgets.server.spring.integrationtests; import java.io.File; import org.apache.catalina.Context; import org.apache.catalina.startup.Tomcat; import org.apache.tomcat.util.descriptor.web.ContextResource; import org.junit.After; import org.junit.Before; import com.gargoylesoftware.htmlunit.AlertHandler; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.SilentCssErrorHandler; import com.gargoylesoftware.htmlunit.WebClient; /** * Base class for integration tests which starts an embedded tomcat. * @author George Georgovassilis, g.georgovassilis[at]gmail.com * */ public abstract class BaseIntegrationTest { public final String WEBAPP_BASE = "/test-webapp"; public final int SERVER_PORT = 7777; public final int TIMEOUT = 30000; public final String baseUrl="http://localhost:"+SERVER_PORT+WEBAPP_BASE+"/"; Tomcat tomcat; WebClient webClient; @Before public void setupServer() throws Exception { String webappDirLocation = "target/test-webapp"; tomcat = new Tomcat(); File temp = File.createTempFile("test-webapp", ".tmp"); tomcat.setBaseDir(temp.getParent()); tomcat.setPort(SERVER_PORT); tomcat.enableNaming(); Context context = tomcat.addWebapp(WEBAPP_BASE, new File(webappDirLocation).getAbsolutePath()); ContextResource resource = new ContextResource(); resource.setName("jdbc/twetDataSource"); resource.setAuth("Container"); resource.setType(javax.sql.DataSource.class.getName()); resource.setScope("Sharable"); resource.setProperty("driverClassName", "org.hsqldb.jdbc.JDBCDriver"); resource.setProperty("url", "jdbc:hsqldb:mem:testdb"); context.getNamingResources().addResource(resource); tomcat.getServer().getGlobalNamingResources().addResource(resource); tomcat.start(); } @Before public void setupBrowser() { webClient = new WebClient(BrowserVersion.CHROME); webClient.getOptions().setCssEnabled(true); webClient.setCssErrorHandler(new SilentCssErrorHandler()); webClient.getOptions().setThrowExceptionOnFailingStatusCode(true); webClient.getOptions().setThrowExceptionOnScriptError(true); webClient.getOptions().setRedirectEnabled(true); webClient.getOptions().setAppletEnabled(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setPopupBlockerEnabled(true); webClient.getOptions().setTimeout(TIMEOUT); webClient.getOptions().setPrintContentOnFailingStatusCode(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.setAlertHandler(new AlertHandler() { public void handleAlert(Page page, String message) { System.err.println("[alert] " + message); } }); webClient.waitForBackgroundJavaScript(TIMEOUT); } @After public void after() throws Exception { tomcat.stop(); tomcat.destroy(); webClient.close(); } }