<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->

<!DOCTYPE project SYSTEM "../../../../modules/development/test/canoo/lenya_webtest.dtd">

<project name="AC usecases test" basedir="." default="main">
  
  <import file="../../../../modules/development/test/canoo/macros.xml"/>
  
  <target name="main">
    <webtest name="acusecases">
      &doConfig;
      <steps>
        <!-- login page -->
        <invoke url="index.html" />
        <verifyTitle text="Login to the Default Publication" />
        
        <!-- missing fields -->
        <setInputField name="username" value=""/>
        <setInputField name="password" value=""/>
        <clickButton name="submit"/>
        <verifyText text="Please enter"/>
        
        <!-- wrong login -->
        <setInputField name="username" value="foo"/>
        <setInputField name="password" value="bar"/>
        <clickButton name="submit"/>
        <verifyText text="Authentication failed"/>
        
        <!-- correct login -->
        <setInputField name="username" value="lenya"/>
        <setInputField name="password" value="levi"/>
        <clickButton name="submit"/>
        <verifyText text="Welcome to the Default Publication from the Lenya community!"/>
        
        <!-- logout -->
        <invoke url="index.html?lenya.usecase=ac.logout"/>
        <verifyTitle text="Logout from the Publication" />
        <clickButton name="submit"/>
        <verifyTitle text="Login to the Default Publication" />
        
      </steps>
    </webtest>
  </target>
</project>
