<?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.
-->

<!-- $Id$ -->

<property name="publication-id" value="default"/>

<target name="pubs.default">

  <testSpec name="pubs.default.intro">
    &config;
    <steps>
      <invoke url="${publication-id}/introduction.html"/>
      <verifytitle text="Lenya CMS Publication: Default Publication"/>
    </steps>
  </testSpec>
  
  <testSpec name="pubs.default.login">
    &config;
    <steps>
      <invoke url="${publication-id}/introduction.html"/>
      <clicklink label="Login as Editor"/>
      <verifytitle text="LOGIN"/>
      
      <setinputfield name="username" value="lenya"/>
      <setinputfield name="password" value="wrong"/>
      <clickbutton label="login"/>
      <verifytitle text="LOGIN"/>
      <verifytext text="Authentication failed"/>
      
      <!--
      <setinputfield name="username" value="lenya"/>
      <setinputfield name="password" value="levi"/>
      <clickbutton label="login"/>
      <verifytitle text="Apache Lenya - default"/>
      -->
      
    </steps>
  </testSpec>
  
</target>
  
