<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "entities/WebTest.dtd" [

        <!ENTITY taskdef-webtest SYSTEM "entities/taskdef.xml">
        <!ENTITY config SYSTEM "entities/config.xml">

        <!ENTITY register-open SYSTEM "file:./entities/register-open.xml">
        <!ENTITY register-page SYSTEM "file:./entities/register-page.xml">
        <!ENTITY register-trillian SYSTEM "file:./entities/register-trillian.xml">

        <!ENTITY save-click SYSTEM "file:./entities/save-click.xml">

        <!ENTITY welcome-open SYSTEM "file:./entities/welcome-open.xml">

        ]>

<project name="MailReader Training Course - Exercise navigation and database logic
- Canoo WebTests" basedir="." default="clean">

    <!--
     Canoo WebTest configuration file to test navigating between pages and
     creating and editing an account.

     To run this test, first install the Canoo Webtest package on your
     local system [http://webtest.canoo.com].

     The default location for this build file is under
     "/opt/Canoo/webtest-1.7".
     See the webtest.properties.sample to use another location.

     Once Canoo is installed, the webtest.xml file can be run as an Ant build
     file (ant -f webtest.xml).

     By default, the tests are configured to find the application under test
      at "http://localhost:8080/lib-2-2".
     See the webtest.properties.sample to use another location.

     Deploy the application to your container, and use Ant to run the
     webtest.xml.

     The "clean" target can be run to test everything, but will fail if run again,
     since the test-user will already be registered.
     The "default" target skips registeration and can be run as often as needed
     after "clean" is run once.

     To reset the XML "database", either redeploy the application so that the
     WEB-INF/classes/database.xml is overwritten,
     or use the "clean-database" target to overwrite the file.
     Only use "clean-database" when the server  is stopped,
     and then start it again before running other targets.

     The tests are based on a set of MailReader Use Cases maintained at the
     Struts University site
     [http://opensource2.atlassian.com/confluence/oss/display/STRUTS/MailReader].

     @version $Revision: 1.2 $ $Date: 2005-12-31 15:10:04 -0500 (Sat, 31 Dec 2005) $
     */
    -->

    <!-- Load local preferences, if any -->
    <property file="webtest.properties"/>

    <!-- These properties can be customized using via webtest.properties -->
    <!-- See webtest.properties.sample for a starter file -->
    <property name="webtest.home"
              location="/opt/Canoo/webtest-1.7"/>

    <property name="host"
              value="localhost"/>

    <property name="port"
              value="8080"/>

    <property name="basepath"
              value="lab-2-2"/>

    <property name="mailreader.home"
              location="../../../"/>

    <property name="webapps.home"
              location="/opt/Apache/Tomcat-5.5/webapps"/>

    <property file="${webapps.home}/${basepath}/WEB-INF/classes/resources.properties"/>

    <taskdef file="${webtest.home}/webtestTaskdefs.properties">
        <classpath>
            <fileset dir="${webtest.home}" includes="**/lib/*.jar"/>
            <fileset dir="${webtest.home}" includes="**/lib/runtime/*.jar"/>
        </classpath>
    </taskdef>

    <target name="clean-database"
            description="Sets database.xml to default. Stop server, run target, and Start server.">
        <copy file="${mailreader.home}/src/java/database.xml"
              tofile="${webapps.home}/${basepath}/WEB-INF/classes/database.xml"
              overwrite="true"/>
    </target>

    <!-- ADD YOUR TARGETS HERE -->

    <target name="clean" description="Only run against a clean database"
            depends="Register"/>

    <target name="Register"
            description="Subscribers can store login credentials and a
            primary email contact with the system.">

        <webtest name="Register Trillian (MSS)">
            &config;
            <steps>
                &register-open;
                &register-trillian;
                <verifyTitle
                        description="Menu page title"
                        text="${menu.title}"/>
            </steps>
        </webtest>

    </target>

</project>
