/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.jackrabbit.j2ee; import java.io.File; import java.io.IOException; import java.net.URL; import junit.framework.TestCase; import org.apache.catalina.startup.Tomcat; import org.apache.commons.io.FileUtils; import org.slf4j.bridge.SLF4JBridgeHandler; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class TomcatIT extends TestCase { static { SLF4JBridgeHandler.install(); } private URL url; private Tomcat tomcat; private WebClient client; protected void setUp() throws Exception { File war = null; for (File f : new File("target").listFiles()) { if (f.isDirectory() && new File(f, "WEB-INF/web.xml").isFile()) { war = f; break; } } assertNotNull(war); File bootstrap = new File("target", "bootstrap.properties"); bootstrap.delete(); RepositoryAccessServlet.bootstrapOverride = bootstrap.getPath(); RepositoryStartupServlet.bootstrapOverride = bootstrap.getPath(); File baseDir = new File("target", "tomcat"); FileUtils.deleteQuietly(baseDir); File repoDir = new File("target", "repository"); FileUtils.deleteQuietly(repoDir); url = new URL("http://localhost:12856/"); tomcat = new Tomcat(); tomcat.setSilent(true); tomcat.setBaseDir(baseDir.getPath()); tomcat.setHostname(url.getHost()); tomcat.setPort(url.getPort()); tomcat.addWebapp("", war.getAbsolutePath()); tomcat.start(); client = new WebClient(); } public void testTomcat() throws Exception { HtmlPage page = client.getPage(url); assertEquals("Content Repository Setup", page.getTitleText()); page = submitNewRepositoryForm(page); assertEquals("Content Repository Ready", page.getTitleText()); page = page.getAnchorByText("home").click(); assertEquals("Apache Jackrabbit JCR Server", page.getTitleText()); } private HtmlPage submitNewRepositoryForm(HtmlPage page) throws IOException { for (HtmlForm form : page.getForms()) { for (HtmlInput mode : form.getInputsByName("mode")) { if ("new".equals(mode.getValueAttribute())) { for (HtmlInput home : form.getInputsByName("repository_home")) { home.setValueAttribute("target/repository"); for (HtmlElement submit : form.getElementsByAttribute("input", "type", "submit")) { return submit.click(); } } } } } fail(); return null; } protected void tearDown() throws Exception { client.closeAllWindows(); tomcat.stop(); } }