| <?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 html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <!-- Generated by Apache Maven Doxia at 2016-10-20 --> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| <title>JAMES Mail Protocol Tester (MPT) - |
| Overview</title> |
| <style type="text/css" media="all"> |
| @import url("./css/james.css"); |
| @import url("./css/maven-base.css"); |
| @import url("./css/maven-theme.css"); |
| @import url("./css/site.css"); |
| @import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css"); |
| @import url("./js/jquery/css/print.css"); |
| @import url("./js/fancybox/jquery.fancybox-1.3.4.css"); |
| </style> |
| <script type="text/javascript" src="./js/jquery/js/jquery-1.4.2.min.js"></script> |
| <script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script> |
| <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script> |
| <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" /> |
| <meta name="author" content="Mail Protocol Tester" /> |
| <meta name="Date-Revision-yyyymmdd" content="20161020" /> |
| <meta http-equiv="Content-Language" content="en" /> |
| |
| <link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/> |
| |
| <!-- Google Analytics --> |
| <script type="text/javascript"> |
| |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-1384591-1']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s); |
| })(); |
| |
| </script> |
| </head> |
| <body class="composite"> |
| <div id="banner"> |
| <a href="../index.html" id="bannerLeft" title="james-logo.png"> |
| |
| |
| <img src="images/logos/james-logo.png" alt="JAMES MPT" /> |
| </a> |
| <a href="http://www.apache.org/index.html" id="bannerRight"> |
| |
| |
| <img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" /> |
| </a> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| <div id="breadcrumbs"> |
| |
| |
| <div class="xleft"> |
| <span id="publishDate">Last Published: 2016-10-20</span> |
| </div> |
| <div class="xright"> <a href="../../index.html" title="Home">Home</a> |
| | |
| <a href="../../server/index.html" title="Server">Server</a> |
| | |
| <a href="../../hupa/index.html" title="Hupa">Hupa</a> |
| | |
| <a href="../../protocols/index.html" title="Protocols">Protocols</a> |
| | |
| <a href="../../mailet/index.html" title="Mailets">Mailets</a> |
| | |
| <a href="../../mailbox/index.html" title="Mailbox">Mailbox</a> |
| | |
| <a href="../../mime4j/index.html" title="Mime4J">Mime4J</a> |
| | |
| <a href="../../jsieve/index.html" title="jSieve">jSieve</a> |
| | |
| <a href="../../jspf/index.html" title="jSPF">jSPF</a> |
| | |
| <a href="../../jdkim/index.html" title="jDKIM">jDKIM</a> |
| | |
| <a href="../index.html" title="MPT">MPT</a> |
| | |
| <a href="../../postage/index.html" title="Postage">Postage</a> |
| |
| |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| <div id="leftColumn"> |
| <div id="navcolumn"> |
| |
| |
| <h5>Parent Project</h5> |
| <ul> |
| <li class="none"> |
| <a href="../index.html" title="Apache James MPT">Apache James MPT</a> |
| </li> |
| </ul> |
| <h5>Mail Protocol Tester</h5> |
| <ul> |
| <li class="none"> |
| <strong>Overview</strong> |
| </li> |
| <li class="none"> |
| <a href="doap_apache-james-mpt.rdf" title="DOAP"> <img class="imageLink" src="http://www.w3.org/RDF/icons/rdf_metadata_button.32" alt=""/> |
| DOAP</a> |
| </li> |
| </ul> |
| <h5>Project Documentation</h5> |
| <ul> |
| <li class="collapsed"> |
| <a href="project-info.html" title="Project Information">Project Information</a> |
| </li> |
| </ul> |
| <h5>Mail Protocol Tester</h5> |
| <ul> |
| <li class="none"> |
| <a href="../index.html" title="Overview">Overview</a> |
| </li> |
| <li class="none"> |
| <a href="../release-notes.html" title="Release Notes">Release Notes</a> |
| </li> |
| <li class="none"> |
| <a href="./" title="Main Library">Main Library</a> |
| </li> |
| <li class="none"> |
| <a href="../antlib" title="AntLib">AntLib</a> |
| </li> |
| <li class="none"> |
| <a href="../app" title="Application">Application</a> |
| </li> |
| </ul> |
| <h5>Releases</h5> |
| <ul> |
| <li class="none"> |
| <a href="../0.1" title="0.1 Documentation">0.1 Documentation</a> |
| </li> |
| <li class="none"> |
| <a href="../0.1/release-notes.html" title="0.1 Release Notes">0.1 Release Notes</a> |
| </li> |
| </ul> |
| <h5>About James</h5> |
| <ul> |
| <li class="none"> |
| <a href="../../index.html" title="Overview">Overview</a> |
| </li> |
| <li class="none"> |
| <a href="../../newsarchive.html" title="News">News</a> |
| </li> |
| <li class="none"> |
| <a href="../../mail.html" title="Mailing Lists">Mailing Lists</a> |
| </li> |
| <li class="none"> |
| <a href="../../contribute.html" title="Contributing">Contributing</a> |
| </li> |
| <li class="none"> |
| <a href="../../guidelines.html" title="Guidelines">Guidelines</a> |
| </li> |
| <li class="none"> |
| <a href="http://wiki.apache.org/james" title="Wiki">Wiki</a> |
| </li> |
| <li class="none"> |
| <a href="../../team-list.html" title="Who We Are">Who We Are</a> |
| </li> |
| <li class="none"> |
| <a href="../../license.html" title="License">License</a> |
| </li> |
| <li class="none"> |
| <a href="../../thanks.html" title="Thanks">Thanks</a> |
| </li> |
| <li class="none"> |
| <a href="../../support.html" title="Professional support">Professional support</a> |
| </li> |
| </ul> |
| <h5>Download</h5> |
| <ul> |
| <li class="none"> |
| <a href="../../download.cgi" title="Releases">Releases</a> |
| </li> |
| </ul> |
| <h5>Apache Software Foundation</h5> |
| <ul> |
| <li> |
| <strong> |
| <a title="ASF" href="http://www.apache.org/">ASF</a> |
| </strong> |
| </li> |
| <li> |
| <a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a> |
| </li> |
| <li> |
| <a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a> |
| </li> |
| <li> |
| <a title="License" href="http://www.apache.org/licenses/" >License</a> |
| </li> |
| <li> |
| <a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
| </li> |
| <li> |
| <a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
| </li> |
| <li> |
| <a title="Security" href="http://www.apache.org/security/">Security</a> |
| </li> |
| </ul> |
| <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> |
| <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /> |
| </a> |
| |
| |
| </div> |
| </div> |
| <div id="bodyColumn"> |
| <div id="contentBox"> |
| <!-- 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. --> |
| |
| |
| <div class="section"> |
| <h2>What is the Apache James MPT?<a name="What_is_the_Apache_James_MPT"></a></h2> |
| |
| <p> |
| Apache James Mail Protocol Tester (MPT) 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. |
| </p> |
| </div> |
| |
| <div class="section"> |
| <h2>Using MPT<a name="Using_MPT"></a></h2> |
| |
| <div class="section"> |
| <h3>Host System<a name="Host_System"></a></h3> |
| |
| <p> |
| MPT is a lightweight, flexible framework which is capable of being used |
| in a variety of ways. <tt>HostSystem</tt> is pivotal, defining the |
| interface between the framework and the server system under test. |
| </p> |
| |
| <ul> |
| |
| <li> |
| The <tt>ExternalHostSystem</tt> 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 class="externalLink" 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 class="externalLink" href="http://www.junit.org">JUnit</a> test case. |
| </li> |
| </ul> |
| </div> |
| |
| <div class="section"> |
| <h3>With JUnit<a name="With_JUnit"></a></h3> |
| |
| <p> |
| In-JVM JUnit testing is a typical use case. The framework provides |
| abstract superclasses which setup up appropriate fixtures. |
| </p> |
| </div> |
| </div> |
| |
| <div class="section"> |
| <h2>Script Features<a name="Script_Features"></a></h2> |
| |
| <div class="section"> |
| <h3>Basic Syntax<a name="Basic_Syntax"></a></h3> |
| |
| <p> |
| MPT scripts are line based plain text files. The initial letter of each line determines it's type: |
| </p> |
| |
| <table border="0" class="bodyTable"> |
| |
| <tr class="a"> |
| |
| <td><b>Line Prefix</b></td> |
| <td><b>Description</b></td> |
| </tr> |
| |
| <tr class="b"> |
| |
| <td>#</td> |
| |
| <td>A comment: the rest of the line will be ignored</td> |
| </tr> |
| |
| <tr class="a"> |
| |
| <td>C: </td> |
| |
| <td>A client request: the rest of the line will be sent to the server</td> |
| </tr> |
| |
| <tr class="b"> |
| |
| <td>S: </td> |
| |
| <td>A server response: the framework will read one line of response from the server, |
| and compare it to the rest of the line (see |
| <a href="#Regex_Matching_Of_Server_Responses">regex matching</a>)</td> |
| </tr> |
| </table> |
| |
| <p> |
| Example: |
| </p> |
| |
| <div class="source"> |
| <pre> |
| <div> |
| <pre> |
| # |
| # This script is a basic SMTP HELO. |
| # |
| S: 220 localhost. SMTP Server \(JAMES SMTP Server .* |
| C: HELO example.org |
| S: 250 localhost. Hello example.org .* |
| C: QUIT |
| S: 221 2.0.0 localhost. Service closing transmission channel |
| </pre></div></pre></div> |
| </div> |
| |
| <div class="section"> |
| <h3>Regex Matching Of Server Responses<a name="Regex_Matching_Of_Server_Responses"></a></h3> |
| |
| <p> |
| The server responses in the script support regex matching. |
| <a class="externalLink" href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html">Java Pattern</a> |
| is used for the regex comparison and so the syntax is identical. |
| </p> |
| </div> |
| |
| <div class="section"> |
| <h3>Variable Substitution<a name="Variable_Substitution"></a></h3> |
| |
| <p> |
| Variables of form <tt>${<i>variable-name</i>}</tt> may be substituted by values |
| passed into the script builder before interpretation. |
| </p> |
| </div> |
| </div> |
| |
| |
| </div> |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| <div id="footer"> |
| <div class="xright">Copyright © 2008-2016 |
| <a href="http://www.apache.org/">The Apache Software Foundation</a>. |
| All Rights Reserved. |
| |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| </body> |
| </html> |