You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2008/11/29 18:12:56 UTC

svn commit: r721691 - in /james/protocol-tester/trunk/antlib: ./ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/james/ src/main/java/org/apache/james/mpt/ src/main/java/org/apache/james/mpt/ant/ src/main/resources/ src/main/resou...

Author: rdonkin
Date: Sat Nov 29 09:12:55 2008
New Revision: 721691

URL: http://svn.apache.org/viewvc?rev=721691&view=rev
Log:
Outline ant task

Added:
    james/protocol-tester/trunk/antlib/src/main/java/org/
    james/protocol-tester/trunk/antlib/src/main/java/org/apache/
    james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/
    james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/
    james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/
    james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java   (with props)
    james/protocol-tester/trunk/antlib/src/main/resources/
    james/protocol-tester/trunk/antlib/src/main/resources/org/
    james/protocol-tester/trunk/antlib/src/main/resources/org/apache/
    james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/
    james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/
    james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/
    james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/antlib.xml   (with props)
    james/protocol-tester/trunk/antlib/src/site/
    james/protocol-tester/trunk/antlib/src/site/resources/
    james/protocol-tester/trunk/antlib/src/site/resources/images/
    james/protocol-tester/trunk/antlib/src/site/site.xml   (contents, props changed)
      - copied, changed from r721659, james/protocol-tester/trunk/main/src/site/site.xml
    james/protocol-tester/trunk/antlib/src/site/xdoc/
    james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml   (contents, props changed)
      - copied, changed from r721673, james/protocol-tester/trunk/main/src/site/xdoc/index.xml
    james/protocol-tester/trunk/antlib/src/test/resources/
    james/protocol-tester/trunk/antlib/src/test/resources/build.xml
Modified:
    james/protocol-tester/trunk/antlib/pom.xml

Modified: james/protocol-tester/trunk/antlib/pom.xml
URL: http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/pom.xml?rev=721691&r1=721690&r2=721691&view=diff
==============================================================================
--- james/protocol-tester/trunk/antlib/pom.xml (original)
+++ james/protocol-tester/trunk/antlib/pom.xml Sat Nov 29 09:12:55 2008
@@ -57,5 +57,45 @@
       <artifactId>jmock</artifactId>
       <scope>test</scope>
     </dependency>   
+    <dependency>
+      <groupId>org.apache.ant</groupId>
+      <artifactId>ant-antunit</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>test</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <tasks>
+                <ant antfile="src/test/resources/build.xml" inheritAll="false" inheritRefs="false">
+                  <property name="jar.name" location="${project.build.outputDirectory}"/>
+                  <property name="base.dir" location="${basedir}"/>
+                  <property name="test.skipped" value="${maven.test.skip}"/>
+                  <property name="test.classpath" refid="maven.test.classpath" />
+                </ant>
+              </tasks>
+            </configuration>
+          </execution>
+        </executions>
+        <dependencies>
+          <!-- AntUnit require Ant 1.7+ -->
+          <dependency>
+            <groupId>org.apache.ant</groupId>
+            <artifactId>ant</artifactId>
+            <version>1.7.1</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+  </build>
+  
 </project>

Added: james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
URL: http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java?rev=721691&view=auto
==============================================================================
--- james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java (added)
+++ james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java Sat Nov 29 09:12:55 2008
@@ -0,0 +1,251 @@
+/****************************************************************
+ * 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.james.mpt.ant;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
+import org.apache.tools.ant.types.resources.Union;
+
+/**
+ * Task executes MPT scripts against a server
+ * running on a given port and host.
+ */
+public class MailProtocolTestTask extends Task {
+
+    private File script;
+    private Union scripts;
+    private int port = 0;
+    private String host = "127.0.0.1";
+    private boolean skip = false;
+    private Collection users = new ArrayList();
+    
+    /**
+     * Should the execution be skipped?
+     * @return true if exection should be skipped, 
+     * otherwise false
+     */
+    public boolean isSkip() {
+        return skip;
+    }
+
+    /**
+     * Sets execution skipping.
+     * @param skip true to skip excution
+     */
+    public void setSkip(boolean skip) {
+        this.skip = skip;
+    }
+
+    /**
+     * Gets the host (either name or number) against which this
+     * test will run.
+     * @return host, not null
+     */
+    public String getHost() {
+        return host;
+    }
+
+    /**
+     * Sets the host (either name or number) against which this
+     * test will run.
+     * @param host not null
+     */
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    /**
+     * Gets the port against which this test will run.
+     * @return port number
+     */
+    public int getPort() {
+        return port;
+    }
+
+    /**
+     * Sets the port aginst which this test will run.
+     * @param port port number
+     */
+    public void setPort(int port) {
+        this.port = port;
+    }
+
+    /**
+     * Gets the script to execute.
+     * @return file containing test script
+     */
+    public File getScript() {
+        return script;
+    }
+
+    /**
+     * Sets the script to execute.
+     * @param script not null
+     */
+    public void setScript(File script) {
+        this.script = script;
+    }
+
+    //@Override
+    public void execute() throws BuildException {
+        if (port <= 0) {
+            throw new BuildException("Port must be set to a positive integer");
+        }
+        
+        if (scripts == null && script == null) {
+            throw new BuildException("Scripts must be specified as an embedded resource collection"); 
+        }
+        
+        if (scripts != null && script != null) {
+            throw new BuildException("Scripts can be specified either by the script attribute or as resource collections but not both."); 
+        }
+        
+        for(final Iterator it=users.iterator();it.hasNext();) {
+            final AddUser user = (AddUser) it.next();
+            user.validate();
+        }
+        
+        if(skip) {
+            log("Skipping excution");
+        } else {
+            doExecute();
+        }
+    }
+
+    public void add(ResourceCollection resources) {
+        if (scripts == null) {
+            scripts = new Union();
+        }
+        scripts.add(resources);
+    }
+    
+    private void doExecute() {
+        super.execute();
+    }
+    
+    public AddUser createAddUser() {
+        final AddUser result = new AddUser();
+        users.add(result);
+        return result;
+    }
+
+    /**
+     * 
+     */
+    public static class AddUser {
+        private int port;
+        private String user;
+        private String passwd;
+        private File script;
+
+        /**
+         * Gets the port against which the user addition
+         * script should be executed.
+         * @return port number
+         */
+        public int getPort() {
+            return port;
+        }
+
+        /**
+         * Sets the port against which the user addition
+         * script should be executed.
+         * @param port port number
+         */
+        public void setPort(int port) {
+            this.port = port;
+        }
+
+        /**
+         * Gets the password for the user.
+         * @return password not null
+         */
+        public String getPasswd() {
+            return passwd;
+        }
+
+        /**
+         * Sets the password for the user.
+         * This will be passed in the user creation script.
+         * @param passwd not null
+         */
+        public void setPasswd(String passwd) {
+            this.passwd = passwd;
+        }
+
+        /**
+         * Gets the name of the user to be created.
+         * @return user name, not null
+         */
+        public String getUser() {
+            return user;
+        }
+
+        /**
+         * Sets the name of the user to be created.
+         * @param user not null
+         */
+        public void setUser(String user) {
+            this.user = user;
+        }
+
+        /**
+         * Gets the file containing the user creation script.
+         * @return not null
+         */
+        public File getScript() {
+            return script;
+        }
+
+        /**
+         * Sets the file containing the user creation script.
+         * @param script not null
+         */
+        public void setScript(File script) {
+            this.script = script;
+        }
+        
+        /**
+         * Validates mandatory fields have been filled.
+         */
+        void validate() throws BuildException {
+            if (script == null) {
+                throw new BuildException("'script' attribute must be set on AddUser to the file containing the user creations script.");
+            }
+            if (user == null) {
+                throw new BuildException("'user' attribute must be set on AddUser to the name of the user to be created.");
+            }
+            if (passwd == null) {
+                throw new BuildException("'passwd' attribute must be set on AddUser to the password to be set for the user created");
+            }
+            if (port <= 0) {
+                throw new BuildException("'port' attribute must be set on AddUser to the port against which the script should run.");
+            }
+            
+        }
+    }
+}

Propchange: james/protocol-tester/trunk/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/antlib.xml
URL: http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/antlib.xml?rev=721691&view=auto
==============================================================================
--- james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/antlib.xml (added)
+++ james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/antlib.xml Sat Nov 29 09:12:55 2008
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!--
+
+ 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.                                           *
+
+-->
+
+<antlib>
+  <typedef name="mpt"
+    classname="org.apache.james.mpt.ant.MailProtocolTestTask"/>
+</antlib>
\ No newline at end of file

Propchange: james/protocol-tester/trunk/antlib/src/main/resources/org/apache/james/mpt/ant/antlib.xml
------------------------------------------------------------------------------
    svn:mergeinfo = 

Copied: james/protocol-tester/trunk/antlib/src/site/site.xml (from r721659, james/protocol-tester/trunk/main/src/site/site.xml)
URL: http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/site/site.xml?p2=james/protocol-tester/trunk/antlib/src/site/site.xml&p1=james/protocol-tester/trunk/main/src/site/site.xml&r1=721659&r2=721691&rev=721691&view=diff
==============================================================================
--- james/protocol-tester/trunk/main/src/site/site.xml (original)
+++ james/protocol-tester/trunk/antlib/src/site/site.xml Sat Nov 29 09:12:55 2008
@@ -32,7 +32,7 @@
 
   <body>
 
-    <menu name="Mail Protocol Tester">
+    <menu name="MPT AntLib">
       <item name="Overview" href="index.html"/>
       <item 
       	name="DOAP" 

Propchange: james/protocol-tester/trunk/antlib/src/site/site.xml
------------------------------------------------------------------------------
    svn:mergeinfo = 

Copied: james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml (from r721673, james/protocol-tester/trunk/main/src/site/xdoc/index.xml)
URL: http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml?p2=james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml&p1=james/protocol-tester/trunk/main/src/site/xdoc/index.xml&r1=721673&r2=721691&rev=721691&view=diff
==============================================================================
--- james/protocol-tester/trunk/main/src/site/xdoc/index.xml (original)
+++ james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml Sat Nov 29 09:12:55 2008
@@ -22,7 +22,7 @@
 
  <properties>
   <title>Overview</title>
-  <author email="server-dev@james.apache.org">Mail Protocol Tester</author>
+  <author email="server-dev@james.apache.org">Mail Protocol Tester AntLib</author>
  </properties>
 
 <body>
@@ -31,53 +31,103 @@
 Apache James Mail Protocol Tester (MTP) is a library providing a framework for the 
 scritable functional testing of ASCII based line protocols.</p>
 <p>
-This contains a lightweight scripting framework suitable for the
-functional testing of the ASCII line based protocols common in mail.
-A script contains a list of client requests and templated server
-responses. The framework runs the client lines against a host system
-and then compares the server lines received in response against the
-template responses. 
+An antlib defines a suite of extensions for <a href='http://ant.apache.org'>Apache Ant</a>.
+This antlib defines a suite of functional testing tools particularly suitable for 
+use with ASCII based line protocols (as are common in mail).
 </p>
 </section>
-<section name='Using MPT'>
-<subsection name='Host System'>
+<section name='Usage'>
 <p>
-MPT is a lightweight, flexible framework which is capable of being used
-in a variety of ways. <code>HostSystem</code> is pivotal, defining the 
-interface between the framework and the server system under test.
+See: 
 </p>
 <ul>
-<li>
-The <code>ExternalHostSystem</code> implementation connects to a port on a server. 
-This is typically used to test a complete running server (including the sockets).
-<a href='../antlib'>MPT AntLib</a> provides an
-<a href='http://ant.apache.org' rel='tag'>Ant</a> task suitable for this use case.
-</li>
-<li>
-When performing in-JVM testing (without a live server socket) a custom implementation
-must be created connecting the framework to the components under test. This use case
-is typically developed as a <a href='http://www.junit.org'>JUnit</a> test case.
-</li>
+<li>Apache Ant <a href='http://ant.apache.org/manual/CoreTypes/antlib.html'>manual</a></li>
+<li><a href='http://www.onjava.com/pub/a/onjava/2006/08/09/ant-1-7-using-antlibs.html'>Using AntLibs</a> (article)</li>
+<li><a href='http://www.oracle.com/technology/pub/articles/bodewig_taskwriters.html'>Ant 1.6 for Task Writers</a> (article)</li>
 </ul>
-</subsection>
-<subsection name='With JUnit'>
+</section>
+<section name='Tasks'>
+<subsection name='mpt'>
 <p>
-In-JVM JUnit testing is a typical use case. The framework provides
-abstract superclasses which setup up appropriate fixtures. 
+Executes <a href='../main'>MPT</a> scripts against a running independent server.
+If these scripts require users then these can be added by script by using the <code>AddUser</code>
+element.
 </p>
+<subsection name='Parameters'>
+<table> 
+<tr>
+	<td><strong>Attribute</strong></td> <td><strong>Description</strong></td> <td><strong>Required</strong></td>
+</tr> 
+<tr>
+	<td>port</td> 
+	<td>Port number that the scripts should be executed against</td> 
+	<td>Yes</td>
+</tr>
+<tr>
+	<td>host</td> 
+	<td>Host name or IP address of the server against which the scripts should be executed</td> 
+	<td>No (Defaults to <code>127.0.0.1</code>)</td>
+</tr> 
+<tr>
+	<td>script</td> 
+	<td>File containing a script to be executed. To execute multiple scripts, 
+	use a <a href='#Any Resource Collection'>Resource Collection</a></td> 
+	<td>When no resource collections elements exist</td>
+</tr> 
+<tr>
+	<td>skip</td> 
+	<td>Skips execution of scripts. For simple conditional execution</td> 
+	<td>No</td>
+</tr> 
+</table>
 </subsection>
-</section>
-<section name="Script Features">
-<subsection name='Regex Matching Of Server Responses'>
+</subsection>
+
+<subsection name='Nested Elements'>
+<subsection name='Any Resource Collection'>
 <p>
-The server responses in the script support regex matching.
+<a href='http://ant.apache.org/manual/CoreTypes/resources.html#collection'>Resource Collection</a>s
+are used to specify a group of scripts to execute. When resource collections are set, attribute <code>
+</code>
 </p>
 </subsection>
-<subsection name='Variable Substitution'>
+<subsection name='AddUser'>
 <p>
-Variables of form <code>${<em>variable-name</em>}</code> may be substituted by values
-passed into the script builder before interpretation.
+Allows scripted addition of any users required by the tests. 
+The port can vary but the host is inherited.
 </p>
+<table> 
+<tr>
+	<td><strong>Attribute</strong></td> <td><strong>Description</strong></td> <td><strong>Required</strong></td>
+</tr> 
+<tr>
+	<td>port</td> 
+	<td>Port number that the user addition script should be executed against</td> 
+	<td>Yes</td>
+</tr>
+
+<tr>
+	<td>passwd</td> 
+	<td>Password to be set for user created. Will be passed to the script.</td> 
+	<td>Yes</td>
+</tr> 
+
+<tr>
+	<td>user</td> 
+	<td>Name of the user to be created. Will be passed to the script.</td> 
+	<td>Yes</td>
+</tr> 
+
+<tr>
+	<td>script</td> 
+	<td>File containing the user creation script</td> 
+	<td>Yes</td>
+</tr> 
+</table>
+</subsection>
+<subsection name='Example'>
+<p>TODO:</p>
+</subsection>
 </subsection>
 </section>
 </body>

Propchange: james/protocol-tester/trunk/antlib/src/site/xdoc/index.xml
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: james/protocol-tester/trunk/antlib/src/test/resources/build.xml
URL: http://svn.apache.org/viewvc/james/protocol-tester/trunk/antlib/src/test/resources/build.xml?rev=721691&view=auto
==============================================================================
--- james/protocol-tester/trunk/antlib/src/test/resources/build.xml (added)
+++ james/protocol-tester/trunk/antlib/src/test/resources/build.xml Sat Nov 29 09:12:55 2008
@@ -0,0 +1,110 @@
+<?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.    
+-->
+<project 
+	name="tests" default="all"
+	  xmlns:au="antlib:org.apache.ant.antunit"
+	  xmlns:mpt="antlib:org.apache.james.mpt.ant">
+	
+    <taskdef uri="antlib:org.apache.ant.antunit"
+             resource="org/apache/ant/antunit/antlib.xml"
+             classpath="${test.classpath}" />
+	
+    <taskdef uri="antlib:org.apache.james.mpt.ant"
+             resource="org/apache/james/mpt/ant/antlib.xml"
+             classpath="${jar.name}" />
+	
+	<target name='testMustNotAllowScriptsAndScript'>
+		<au:expectfailure>
+		  <mpt:mpt skip='true' port='10000' script='pom.xml'>
+			  <fileset dir='${basedir}'/>
+		  </mpt:mpt>				
+	    </au:expectfailure>
+	</target>
+	
+	<target name='testMustSetScriptsOrScript'>
+		<au:expectfailure>
+		  <mpt:mpt skip='true' port='10000'/>
+	    </au:expectfailure>
+		<mpt:mpt port='10000' skip='true'>
+		  <fileset dir='${basedir}'/>
+		</mpt:mpt>	
+		<mpt:mpt port='10000' skip='true' script='pom.xml'/>
+	</target>
+	
+	<target name='testMustSetPort'>
+		<au:expectfailure>
+		  <mpt:mpt skip='true'>
+		  	<fileset dir='${basedir}'/>
+		  </mpt:mpt>
+	    </au:expectfailure>
+		<mpt:mpt port='10000' skip='true'>
+			<fileset dir='${basedir}'/>
+		</mpt:mpt>	
+	</target>
+	
+	<target name='testMaySetHost'>
+		<mpt:mpt port='10000' skip='true' host='example.org'>
+		  	<fileset dir='${basedir}'/>
+		</mpt:mpt>
+		<mpt:mpt port='10000' skip='true' host='10.0.0.66'>
+	  		<fileset dir='${basedir}'/>
+	  	</mpt:mpt>
+	</target>
+	
+	<target name='testShouldAllowAddUserToBeSet'>
+		<mpt:mpt port='10000' skip='true' host='example.org'>
+		  	<fileset dir='${basedir}'/>
+			<addUser port='10001' user='user' passwd='passwd' script='pom.xml'/>
+		</mpt:mpt>
+	</target>
+	
+	
+	<target name='testAddUserMustSetPortNamePasswordScript'>
+		<au:expectfailure>
+			<mpt:mpt port='10000' skip='true' host='example.org'>
+			  	<fileset dir='${basedir}'/>
+				<addUser user='user' passwd='passwd' script='pom.xml'/>
+			</mpt:mpt>
+		</au:expectfailure>
+		<au:expectfailure>
+			<mpt:mpt port='10000' skip='true' host='example.org'>
+			  	<fileset dir='${basedir}'/>
+				<addUser port='10001' passwd='passwd' script='pom.xml'/>
+			</mpt:mpt>
+		</au:expectfailure>
+		<au:expectfailure>
+			<mpt:mpt port='10000' skip='true' host='example.org'>
+			  	<fileset dir='${basedir}'/>
+				<addUser port='10001' user='user' script='pom.xml'/>
+			</mpt:mpt>
+		</au:expectfailure>
+		<au:expectfailure>
+			<mpt:mpt port='10000' skip='true' host='example.org'>
+			  	<fileset dir='${basedir}'/>
+				<addUser port='10001' user='user' passwd='passwd'/>
+			</mpt:mpt>
+		</au:expectfailure>
+	</target>
+
+	<target name='testMptAttributes' depends='testMustSetPort, testMaySetHost,testMustSetScriptsOrScript, testMustNotAllowScriptsAndScript'/>
+	<target name='testAddUser' depends='testShouldAllowAddUserToBeSet, testAddUserMustSetPortNamePasswordScript'/>
+	
+	<target name='all' depends='testMptAttributes, testAddUser'/>
+</project>



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org