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 ba...@apache.org on 2008/07/29 16:45:07 UTC
svn commit: r680716 -
/james/server/branches/v2.3/src/test/org/apache/james/remotemanager/RemoteManagerTest.java
Author: bago
Date: Tue Jul 29 07:45:06 2008
New Revision: 680716
URL: http://svn.apache.org/viewvc?rev=680716&view=rev
Log:
Backported RemoteManagerTest from trunk (JAMES-851)
Of course tests specific to new features have been removed.
Modified:
james/server/branches/v2.3/src/test/org/apache/james/remotemanager/RemoteManagerTest.java
Modified: james/server/branches/v2.3/src/test/org/apache/james/remotemanager/RemoteManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/branches/v2.3/src/test/org/apache/james/remotemanager/RemoteManagerTest.java?rev=680716&r1=680715&r2=680716&view=diff
==============================================================================
--- james/server/branches/v2.3/src/test/org/apache/james/remotemanager/RemoteManagerTest.java (original)
+++ james/server/branches/v2.3/src/test/org/apache/james/remotemanager/RemoteManagerTest.java Tue Jul 29 07:45:06 2008
@@ -18,11 +18,13 @@
****************************************************************/
+
package org.apache.james.remotemanager;
-import junit.framework.TestCase;
import org.apache.avalon.cornerstone.services.sockets.SocketManager;
import org.apache.avalon.cornerstone.services.threads.ThreadManager;
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.avalon.framework.service.ServiceException;
import org.apache.commons.net.telnet.TelnetClient;
import org.apache.james.services.JamesConnectionManager;
import org.apache.james.services.MailServer;
@@ -36,17 +38,20 @@
import org.apache.james.test.mock.james.MockUsersStore;
import org.apache.james.test.util.Util;
import org.apache.james.userrepository.MockUsersRepository;
+import org.apache.james.util.InternetPrintWriter;
import org.apache.james.util.connection.SimpleConnectionManager;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import junit.framework.TestCase;
+
/**
* Tests the org.apache.james.remotemanager.RemoteManager
* TODO: impl missing command tests for:
@@ -56,30 +61,33 @@
public class RemoteManagerTest extends TestCase {
- public static final String LINE_SEPARATOR = System.getProperties().getProperty("line.separator");
-
protected int m_remoteManagerListenerPort = Util.getNonPrivilegedPort();
protected RemoteManager m_remoteManager;
protected RemoteManagerTestConfiguration m_testConfiguration;
protected String m_host = "127.0.0.1";
protected BufferedReader m_reader;
- protected OutputStreamWriter m_writer;
+ protected InternetPrintWriter m_writer;
protected TelnetClient m_telnetClient;
private MockUsersRepository m_mockUsersRepository;
+ private MockMailServer mailServer;
protected void setUp() throws Exception {
m_remoteManager = new RemoteManager();
- m_remoteManager.enableLogging(new MockLogger());
-
- m_remoteManager.service(setUpServiceManager());
+ ContainerUtil.enableLogging(m_remoteManager, new MockLogger());
+ ContainerUtil.service(m_remoteManager, setUpServiceManager());
m_testConfiguration = new RemoteManagerTestConfiguration(m_remoteManagerListenerPort);
}
+ protected void tearDown() throws Exception {
+ ContainerUtil.dispose(mailServer);
+ super.tearDown();
+ }
+
protected void finishSetUp(RemoteManagerTestConfiguration testConfiguration) {
testConfiguration.init();
try {
- m_remoteManager.configure(testConfiguration);
- m_remoteManager.initialize();
+ ContainerUtil.configure(m_remoteManager, testConfiguration);
+ ContainerUtil.initialize(m_remoteManager);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -91,11 +99,13 @@
protected void login(String name, String password) throws IOException {
sendCommand(name);
- sendCommand(password);
-
List answers = readAnswer();
String last = getLastLine(answers);
- assertTrue(last.startsWith("Welcome"));
+ assertTrue("Last line does not start with Password: "+last,last.startsWith("Password:"));
+ sendCommand(password);
+ answers = readAnswer();
+ last = getLastLine(answers);
+ assertTrue("Last line does not start with Welcome: "+last,last.startsWith("Welcome"));
}
protected String getLastLine(List list) {
@@ -104,31 +114,32 @@
}
protected List readAnswer() {
- try {
- while (!m_reader.ready()) { ; }
- } catch (IOException e) {
- return null;
- }
-
- StringBuffer stringBuffer = new StringBuffer();
- char[] charBuffer = new char[100];
+ return readAnswer(1);
+ }
+
+ protected List readAnswer(int numLines) {
List allAnswerLines = new ArrayList();
try {
- int readCount;
- while ((m_reader.ready() && (readCount = m_reader.read(charBuffer)) > 0)) {
- stringBuffer.append(charBuffer, 0, readCount);
+ if (numLines > 0) {
+ for (int i = 0; i < numLines; i++) {
+ allAnswerLines.add(m_reader.readLine());
+ }
+ } else {
+ String line = m_reader.readLine();
+ allAnswerLines.add(line);
+
+ while (m_reader.ready()) {
+ allAnswerLines.add(m_reader.readLine());
+ }
}
+ return allAnswerLines;
} catch (IOException e) {
- fail("reading remote manager answer failed");
+ return null;
}
-
- allAnswerLines.addAll(Arrays.asList(stringBuffer.toString().split(LINE_SEPARATOR)));
- if ("".equals(getLastLine(allAnswerLines))) allAnswerLines.remove(allAnswerLines.size()-1);
- return allAnswerLines;
}
protected void sendCommand(String command) throws IOException {
- m_writer.write(command + LINE_SEPARATOR);
+ m_writer.println(command);
m_writer.flush();
}
@@ -136,16 +147,18 @@
m_telnetClient = new TelnetClient();
m_telnetClient.connect(m_host, m_remoteManagerListenerPort);
- m_reader = new BufferedReader(new InputStreamReader(m_telnetClient.getInputStream()));
- m_writer = new OutputStreamWriter(m_telnetClient.getOutputStream());
+ m_reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(m_telnetClient.getInputStream(), 1024), "ASCII"));
+ m_writer = new InternetPrintWriter(new BufferedOutputStream(m_telnetClient.getOutputStream(), 1024), true);
+
+ readAnswer(3);
}
- private MockServiceManager setUpServiceManager() {
+ private MockServiceManager setUpServiceManager() throws ServiceException {
MockServiceManager serviceManager = new MockServiceManager();
SimpleConnectionManager connectionManager = new SimpleConnectionManager();
- connectionManager.enableLogging(new MockLogger());
+ ContainerUtil.enableLogging(connectionManager, new MockLogger());
serviceManager.put(JamesConnectionManager.ROLE, connectionManager);
- MockMailServer mailServer = new MockMailServer();
+ mailServer = new MockMailServer();
serviceManager.put(MailServer.ROLE, mailServer);
m_mockUsersRepository = mailServer.getUsersRepository();
serviceManager.put(UsersRepository.ROLE, m_mockUsersRepository);
@@ -167,11 +180,13 @@
connect();
sendCommand("sindbad");
+ List answers = readAnswer();
sendCommand(m_testConfiguration.getLoginPassword());
- List answers = readAnswer();
+ // we should receive the fail message and a new Login id.
+ answers = readAnswer(2);
String last = getLastLine(answers);
- assertTrue(last.startsWith("Login id:")); // login failed, getting new login prompt
+ assertTrue("Last line does not start with 'Login id:' but with '"+last+"'",last.startsWith("Login id:")); // login failed, getting new login prompt
}
public void testWrongLoginPassword() throws IOException {
@@ -179,11 +194,12 @@
connect();
sendCommand(m_testConfiguration.getLoginName());
+ List answers = readAnswer();
sendCommand("getmethru");
- List answers = readAnswer();
+ answers = readAnswer(2);
String last = getLastLine(answers);
- assertTrue(last.startsWith("Login id:")); // login failed, getting new login prompt
+ assertTrue("Line does not start with 'Login id:' but with '"+last+"'", last.startsWith("Login id:")); // login failed, getting new login prompt
}
public void testUserCount() throws IOException {
@@ -255,32 +271,23 @@
}
public void testQuit() throws IOException {
+ int helpLines = 16;
+
finishSetUp(m_testConfiguration);
connect();
login();
sendCommand("help");
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- ; // ignore
- }
+ delay();
assertTrue("command line is effective", readAnswer().size() > 0);
-
+ readAnswer(helpLines);
+
sendCommand("quit");
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- ; // ignore
- }
- readAnswer();
+ delay();
+ assertTrue("",readAnswer(1).contains("Bye"));
sendCommand("help");
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- ; // ignore
- }
+ delay();
assertNull("connection is closed", m_reader.readLine());
}
@@ -294,17 +301,13 @@
for (int i = 0; i < users.length; i++) {
String user = users[i];
sendCommand("adduser " + user + " test");
+ readAnswer(1);
}
-
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- ; // ignore
- }
- readAnswer();
+
+ delay();
sendCommand("listusers");
- List list = readAnswer();
+ List list = readAnswer(5);
assertEquals("user count line", "Existing accounts " + users.length, list.get(0));
@@ -322,6 +325,14 @@
}
}
+ private void delay() {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ ; // ignore
+ }
+ }
+
public void testCommandCaseInsensitive() throws IOException {
finishSetUp(m_testConfiguration);
connect();
@@ -466,25 +477,29 @@
connect();
login();
+ String lastLine;
+
sendCommand("adduser testPwdUser pwd1");
- assertTrue(getLastLine(readAnswer()).endsWith(" added"));
+ lastLine = getLastLine(readAnswer());
+ assertTrue(lastLine.endsWith(" added"));
assertTrue("initial password", m_mockUsersRepository.test("testPwdUser", "pwd1"));
- sendCommand("setpassword testPwdUser ");
- assertTrue("password changed to empty", m_mockUsersRepository.test("testPwdUser", "pwd1"));
- readAnswer(); // ignore
+ sendCommand("setpassword testPwdUser ");
+ lastLine = getLastLine(readAnswer());
+ assertTrue("password changed to empty: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd1"));
// change pwd
sendCommand("setpassword testPwdUser pwd2");
- assertTrue("password not changed to pwd2", m_mockUsersRepository.test("testPwdUser", "pwd2"));
- readAnswer(); // ignore
+ lastLine = getLastLine(readAnswer());
+ assertTrue("password not changed to pwd2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd2"));
// assure case sensitivity
sendCommand("setpassword testPwdUser pWD2");
- assertFalse("password not changed to pWD2", m_mockUsersRepository.test("testPwdUser", "pwd2"));
- assertTrue("password not changed to pWD2", m_mockUsersRepository.test("testPwdUser", "pWD2"));
- readAnswer(); // ignore
+ lastLine = getLastLine(readAnswer());
+ assertFalse("password not changed to pWD2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd2"));
+ assertTrue("password not changed to pWD2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pWD2"));
}
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org