View Javadoc

1   /****************************************************************
2    * Licensed to the Apache Software Foundation (ASF) under one   *
3    * or more contributor license agreements.  See the NOTICE file *
4    * distributed with this work for additional information        *
5    * regarding copyright ownership.  The ASF licenses this file   *
6    * to you under the Apache License, Version 2.0 (the            *
7    * "License"); you may not use this file except in compliance   *
8    * with the License.  You may obtain a copy of the License at   *
9    *                                                              *
10   *   http://www.apache.org/licenses/LICENSE-2.0                 *
11   *                                                              *
12   * Unless required by applicable law or agreed to in writing,   *
13   * software distributed under the License is distributed on an  *
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15   * KIND, either express or implied.  See the License for the    *
16   * specific language governing permissions and limitations      *
17   * under the License.                                           *
18   ****************************************************************/
19  
20  package org.apache.james.mpt;
21  
22  
23  /**
24   * <p>Connects to a host system serving on an open port.</p>
25   * <p>
26   * This is typically used for functional integration testing of a complete
27   * server system (including sockets). Apache James MPT AntLib provides an
28   * <a href='http://ant.apache.org' rel='tag'>Ant</a> task suitable for this
29   * use case.
30   * </p>
31   */
32  public class ExternalHostSystem extends ExternalSessionFactory implements HostSystem {
33      
34      private final UserAdder userAdder;
35  
36      /**
37       * Constructs a host system suitable for connection to an open port.
38       * @param host host name that will be connected to, not null
39       * @param port port on host that will be connected to, not null
40       * @param monitor monitors the conduct of the connection
41       * @param shabang protocol shabang will be sent to the script test in the place of the
42       * first line received from the server. Many protocols pass server specific information
43       * in the first line. When not null, this line will be replaced.
44       * Or null when the first line should be passed without replacement
45       * @param userAdder null when test system has appropriate users already set
46       */
47      public ExternalHostSystem(final String host, final int port,
48              final Monitor monitor, final String shabang, final UserAdder userAdder) {
49          super(host, port, monitor, shabang);
50          this.userAdder = userAdder;
51      }
52  
53      public void addUser(String user, String password) throws Exception {
54          if (userAdder == null) {
55              monitor.note("Please ensure user '" + user + "' with password '"
56                  + password + "' exists.");
57          } else {
58              userAdder.addUser(user, password);
59          }
60      }
61  }