Skip to content

StrutsAppsTest

wendysmoak edited this page Dec 22, 2019 · 1 revision

package org.apache.struts.apps;

import junit.extensions.TestSetup;
import junit.framework.Test;
import org.codehaus.cargo.container.InstalledLocalContainer;
import org.codehaus.cargo.container.ContainerType;
import org.codehaus.cargo.container.property.ServletPropertySet;
import org.codehaus.cargo.container.installer.Installer;
import org.codehaus.cargo.container.installer.ZipURLInstaller;
import org.codehaus.cargo.container.configuration.ConfigurationType;
import org.codehaus.cargo.container.configuration.LocalConfiguration;
import org.codehaus.cargo.container.deployable.WAR;
import org.codehaus.cargo.generic.DefaultContainerFactory;
import org.codehaus.cargo.generic.configuration.DefaultConfigurationFactory;

import java.io.File;
import java.net.URL;

public class Tomcat5xTestSetup extends TestSetup {

    InstalledLocalContainer container;
    String version;
    String port;
    String localRepository;

    public Tomcat5xTestSetup(Test test) {
        super(test);
    }

    protected void setUp() throws Exception {

        version = System.getProperty("version");
        port = System.getProperty("cargo.servlet.port");
        localRepository = System.getProperty("localRepository");

        // (1) Find the locally installed container.  This System property may
        //     be set in settings.xml, or on the command line with
        //     -Dcargo.tomcat5x.home=...
        String tomcat5x = System.getProperty("cargo.tomcat5x.home");

        File tomcatHome;
        if (tomcat5x == null || tomcat5x.startsWith("$")) {
            System.out.println("INFO: Downloading Tomcat 5.0 from a mirror");
            Installer installer = new ZipURLInstaller(
                    new URL("http://mirrors.ibiblio.org/pub/mirrors/apache"
                            + "/tomcat/tomcat-5/v5.0.30/bin/jakarta-tomcat-5.0.30.zip"));
            installer.install();
            tomcatHome = installer.getHome();
        } else {
            tomcatHome = new File(tomcat5x);
        }
        System.out.println("INFO: Tomcat home is " + tomcatHome);

        // (2) Create the Cargo Container instance wrapping our physical container
        LocalConfiguration configuration = (LocalConfiguration)
                new DefaultConfigurationFactory().createConfiguration(
                        "tomcat5x", ConfigurationType.STANDALONE);
        container = (InstalledLocalContainer)
                new DefaultContainerFactory().createContainer(
                        "tomcat5x", ContainerType.INSTALLED, configuration);
        container.setHome(tomcatHome);

        // (3) Statically deploy WAR(s)
        configuration.addDeployable(getWAR("struts-blank"));
        configuration.addDeployable(getWAR("struts-cookbook"));
        configuration.addDeployable(getWAR("struts-examples"));
        //configuration.addDeployable(getWAR("struts-faces-example1"));
        //configuration.addDeployable(getWAR("struts-faces-example2"));
        configuration.addDeployable(getWAR("struts-mailreader"));
        configuration.addDeployable(getWAR("struts-scripting-mailreader"));
        configuration.addDeployable(getWAR("strutsel-exercise-taglib"));

        configuration.setProperty(ServletPropertySet.PORT, port);

        // (4) Start the container
        container.start();
    }

    protected void tearDown() throws Exception {
        // (6) Stop the container
        container.stop();
    }

    private WAR getWAR(String context) {
        return new WAR(localRepository + "/org/apache/struts/action/"
                + context + "/" + version + "/" + context + "-" + version + ".war");
    }

}
package org.apache.struts.apps;

import java.net.URL;

import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.WebClient;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Verify that each of the example apps starts and displays its
 * default page.
 */
public class AppsTest extends TestCase {

    private String version;
    private String port;

    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public AppsTest(String testName) {
        super(testName);
    }

    public void setUp() throws Exception {
        super.setUp();
        version = System.getProperty("version");
        port = System.getProperty("cargo.servlet.port");
    }

    /**
     * @return the suite of tests being tested
     */
    public static Test suite() {
        TestSuite suite = new TestSuite(AppsTest.class);
        return new Tomcat5xTestSetup(suite);
    }

    /**
     * Verify that the Struts Blank app has started
     */
    public void testStrutsBlank() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:"
                + port + "/struts-blank-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("Struts Blank Application", page.getTitleText());
    }

    /**
     * Verify that the Struts Cookbook app has started
     */
    public void testStrutsCookbook() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:"
                + port + "/struts-cookbook-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("Struts Cookbook", page.getTitleText());
    }

    /**
     * Verify that the Struts Examples app has started
     */
    public void testStrutsExamples() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:"
                + port + "/struts-examples-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("Struts Examples", page.getTitleText());
    }


    /**
     * Verify that the Struts Mailreader app has started
     */
    public void testStrutsMailreader() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:"
                + port + "/struts-mailreader-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("MailReader Demonstration Application",
                page.getTitleText());
    }

    /**
     * Verify that the Struts Scripting Mailreader app has started
     */
    public void testStrutsScriptingMailreader() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:" + port
                + "/struts-scripting-mailreader-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("MailReader Demonstration Application",
                page.getTitleText());
    }

    /**
     * Verify that the Struts EL Exercise Taglib app has started
     */
    public void testStrutsELExcerciseTaglib() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:" + port
                + "/strutsel-exercise-taglib-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("Struts-EL Test Application", page.getTitleText());
    }

    /**
     * Verify that the Struts Faces Example 1 app has started
     */
    public void xtestStrutsFacesExample1() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:" + port
                + "/struts-faces-example1-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("?", page.getTitleText());
    }

    /**
     * Verify that the Struts Faces Example 2 app has started
     */
    public void xtestStrutsFacesExample2() throws Exception {

        WebClient webClient = new WebClient();
        URL url = new URL("http://localhost:" + port
                + "/struts-faces-example2-" + version);
        HtmlPage page = (HtmlPage) webClient.getPage(url);

        assertEquals("?", page.getTitleText());
    }

}
<?xml version="1.0"?>
<!--
/*
 * Copyright 2005-2006 The Apache Software Foundation.
 *
 * 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.
 *
 * $Id: pom.xml 393684 2006-04-13 02:13:56Z wsmoak $
 */
-->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

   <parent>
      <groupId>org.apache.struts.action</groupId>
      <artifactId>struts-action-it</artifactId>
      <version>1.3.2-SNAPSHOT</version>
   </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.struts.action</groupId>
  <artifactId>struts-action-it-apps</artifactId>
  <packaging>pom</packaging>
  <name>Struts Action - Integration - Taglib Tests</name>
  <url>http://maven.apache.org</url>

    <dependencies>
       <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
       </dependency>
        <dependency>
           <groupId>htmlunit</groupId>
           <artifactId>htmlunit</artifactId>
           <version>1.8</version>
           <exclusions>
              <exclusion>
                 <groupId>javax.xml</groupId>
                 <artifactId>jsr173</artifactId>
              </exclusion>
           </exclusions>
        </dependency>
       <dependency>
          <groupId>org.codehaus.cargo</groupId>
          <artifactId>cargo-core-uberjar</artifactId>
          <version>0.8</version>
          <scope>test</scope>
       </dependency>
       <dependency>
          <groupId>org.codehaus.cargo</groupId>
          <artifactId>cargo-ant</artifactId>
          <version>0.8</version>
          <scope>test</scope>
       </dependency>
    </dependencies>

    <profiles>
    <profile>
    <id>perform-itest</id>
    <build>
       <plugins>
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <executions>
                <execution>
                   <id>compiler-for-tests</id>
                   <phase>test-compile</phase>
                   <goals>
                      <goal>testCompile</goal>
                   </goals>
                </execution>
             </executions>
          </plugin>
          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
             <configuration>
                <systemProperties>
                   <property>
                      <name>cargo.tomcat5x.home</name>
                      <value>${cargo.tomcat5x.home}</value>
                   </property>
                   <property>
                       <name>cargo.servlet.port</name>
                       <value>8080</value>
                   </property>
                   <property>
                      <name>version</name>
                      <value>${version}</value>
                   </property>
                </systemProperties>
             </configuration>
             <executions>
                <execution>
                   <id>surefire-it</id>
                   <phase>integration-test</phase>
                   <goals>
                      <goal>test</goal>
                   </goals>
                </execution>
             </executions>
          </plugin>
       </plugins>
    </build>
    </profile>
    </profiles>

</project>

Clone this wiki locally