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 jo...@apache.org on 2006/10/09 19:15:42 UTC
svn commit: r454432 [13/14] - in /james/server/sandbox/imap-integration: ./
lib/ src/java/ src/java/org/apache/james/imapserver/
src/java/org/apache/james/imapserver/commands/
src/java/org/apache/james/imapserver/debug/
src/java/org/apache/james/imapse...
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CopySessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CopySessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CopySessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CopySessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,147 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.CopyClientCommand;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.client.LogoutClientCommand;
+import org.apache.james.imapserver.client.MessageSet;
+import org.apache.james.imapserver.client.SelectCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+public class CopySessionTest extends AbstractSessionTest {
+
+
+ String[] folders = {USER_MAILBOX_ROOT+".INBOX",USER_MAILBOX_ROOT+".test",USER_MAILBOX_ROOT+".test2"};
+ MimeMessage[] msgs= null;
+ long[] uids = null;
+
+ public void setUp() throws MailboxException, MessagingException, IOException, MailboxManagerException {
+ super.setUp();
+ msgs=MessageGenerator.generateSimplesMessages(4);
+ createFolders(folders);
+ // increase the uid
+ appendMessagesClosed(USER_MAILBOX_ROOT+".INBOX",msgs);
+ deleteAll(USER_MAILBOX_ROOT+".INBOX");
+ msgs[0].setFlag(Flag.SEEN,true);
+ msgs[0].setFlag(Flag.ANSWERED,true);
+ msgs[1].setFlag(Flag.SEEN,true);
+ msgs[2].setFlag(Flag.ANSWERED,true);
+ uids=addUIDMessagesOpen(USER_MAILBOX_ROOT+".INBOX",msgs);
+ }
+
+
+ public void doTestCopyAll(boolean uid) throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand("INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ final MessageSet set;
+ if (uid) {
+ set = new MessageSet(msgs,uids,1,-1);
+ } else {
+ set = new MessageSet(msgs,1,-1);
+ }
+ verifyCommand(new CopyClientCommand(set,"test"));
+
+ useFolder(USER_MAILBOX_ROOT+".test");
+ MimeMessage[] testMsgs=getMessages(USER_MAILBOX_ROOT+".test");
+ assertEquals(4,testMsgs.length);
+ for (int i = 0; i < msgs.length; i++) {
+ assertEquals("Message content differs "+i, MessageGenerator.messageContentToString(msgs[i]),
+ MessageGenerator.messageContentToString(testMsgs[i]));
+ assertEquals("Flags differ "+i,msgs[i].getFlags(),testMsgs[i].getFlags());
+ }
+ freeFolder(USER_MAILBOX_ROOT+".test");
+
+ verifyCommand(new LogoutClientCommand());
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".INBOX"));
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".test"));
+ }
+
+
+ public void doTestCopyOne(boolean uid) throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand("INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ final MessageSet set;
+ if (uid) {
+ set = new MessageSet(msgs,uids,6);
+ } else {
+ set = new MessageSet(msgs,2);
+ }
+ verifyCommand(new CopyClientCommand(set,"test"));
+
+ useFolder("test");
+ MimeMessage[] testMsgs=getMessages(USER_MAILBOX_ROOT+".test");
+ assertEquals(1,testMsgs.length);
+
+ assertEquals("Message content differs ", MessageGenerator.messageContentToString(msgs[1]),
+ MessageGenerator.messageContentToString(testMsgs[0]));
+ assertEquals("Flags differ ",msgs[1].getFlags(),testMsgs[0].getFlags());
+
+ freeFolder(USER_MAILBOX_ROOT+".test");
+
+ verifyCommand(new LogoutClientCommand());
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".INBOX"));
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".test"));
+ }
+ public void doTestCopyThree(boolean uid) throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand("INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ final MessageSet set;
+ if (uid) {
+ set = new MessageSet(msgs,uids,6,8);
+ } else {
+ set = new MessageSet(msgs,2,4);
+ }
+ verifyCommand(new CopyClientCommand(set,"test"));
+
+ useFolder(USER_MAILBOX_ROOT+".test");
+ MimeMessage[] testMsgs=getMessages(USER_MAILBOX_ROOT+".test");
+ assertEquals(3,testMsgs.length);
+ for (int i=0; i<3; i++) {
+ assertEquals("Message content differs ", MessageGenerator.messageContentToString(msgs[i+1]),
+ MessageGenerator.messageContentToString(testMsgs[i]));
+ assertEquals("Flags differ ",msgs[i+1].getFlags(),testMsgs[i].getFlags());
+ }
+
+ freeFolder(USER_MAILBOX_ROOT+".test");
+
+ verifyCommand(new LogoutClientCommand());
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".INBOX"));
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".test"));
+ }
+
+
+ public void testCopyAll() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestCopyAll(false);
+ }
+
+ public void testUidCopyAll() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestCopyAll(true);
+ }
+
+ public void testCopyOne() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestCopyOne(false);
+ }
+
+ public void testUidCopyOne() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestCopyOne(true);
+ }
+
+ public void testCopyThree() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestCopyThree(false);
+ }
+
+ public void testUidCopyThree() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestCopyThree(true);
+ }
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CreateSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CreateSessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CreateSessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/CreateSessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,36 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.CreateClientCommand;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.client.LogoutClientCommand;
+import org.apache.james.imapserver.client.SelectCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+public class CreateSessionTest extends AbstractSessionTest {
+
+ String[] folders = {USER_MAILBOX_ROOT+".INBOX",USER_MAILBOX_ROOT+".test",USER_MAILBOX_ROOT+".test1",USER_MAILBOX_ROOT+".test1.test1a",USER_MAILBOX_ROOT+".test1.test1b",USER_MAILBOX_ROOT+".test2.test2a",USER_MAILBOX_ROOT+".test2.test2b"};
+
+ public void setUp() throws MailboxException, MessagingException, IOException, MailboxManagerException {
+ super.setUp();
+ createFolders(folders);
+ }
+
+ public void testCreateSelect() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+
+ verifyCommand(new CreateClientCommand("Drafts"));
+ assertTrue(folderExists(USER_MAILBOX_ROOT+".Drafts"));
+
+ verifyCommand(new SelectCommand("Drafts", new MimeMessage[0],getUidValidity(USER_MAILBOX_ROOT+".Drafts")));
+
+ verifyCommand(new LogoutClientCommand());
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/DeleteSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/DeleteSessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/DeleteSessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/DeleteSessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,53 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.DeleteClientCommand;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.client.LogoutClientCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+public class DeleteSessionTest extends AbstractSessionTest {
+
+ String[] folders = { USER_MAILBOX_ROOT + ".INBOX",
+ USER_MAILBOX_ROOT + ".test", USER_MAILBOX_ROOT + ".test1",
+ USER_MAILBOX_ROOT + ".test1.test1a",
+ USER_MAILBOX_ROOT + ".test1.test1b",
+ USER_MAILBOX_ROOT + ".test2.test2a",
+ USER_MAILBOX_ROOT + ".test2.test2b" };
+
+ MimeMessage[] msgs = null;
+
+ public void setUp() throws MailboxException, MessagingException,
+ IOException, MailboxManagerException {
+ super.setUp();
+ msgs = MessageGenerator.generateSimplesMessages(4);
+ createFolders(folders);
+ // increase the uid
+ appendMessagesClosed(USER_MAILBOX_ROOT+".test1.test1a", msgs);
+
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ for (int i = 0; i < folders.length; i++) {
+ assertFalse(folders[i] + " is still in use!", isOpen(folders[i]));
+ }
+ }
+
+ public void testDeleteExisting() throws ProtocolException, IOException,
+ MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME, USER_PASSWORD));
+ assertTrue(folderExists(USER_MAILBOX_ROOT + ".test1.test1a"));
+ verifyCommand(new DeleteClientCommand("test1.test1a"));
+ assertFalse(folderExists(USER_MAILBOX_ROOT + ".test1.test1a"));
+ verifyCommand(new LogoutClientCommand());
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/RenameSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/RenameSessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/RenameSessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/RenameSessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,78 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.client.LogoutClientCommand;
+import org.apache.james.imapserver.client.RenameClientCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+public class RenameSessionTest extends AbstractSessionTest {
+
+ String[] folders = { USER_MAILBOX_ROOT + ".INBOX",
+ USER_MAILBOX_ROOT + ".test", USER_MAILBOX_ROOT + ".test1",
+ USER_MAILBOX_ROOT + ".test1.test1a",
+ USER_MAILBOX_ROOT + ".test1.test1b",
+ USER_MAILBOX_ROOT + ".test2.test2a",
+ USER_MAILBOX_ROOT + ".test2.test2b" };
+
+ MimeMessage[] msgs = null;
+
+ public void setUp() throws MailboxException, MessagingException,
+ IOException, MailboxManagerException {
+ super.setUp();
+ msgs = MessageGenerator.generateSimplesMessages(2);
+ createFolders(folders);
+ for (int i = 0; i < folders.length; i++) {
+ appendMessagesClosed(folders[i], msgs);
+ }
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ for (int i = 0; i < folders.length; i++) {
+ assertFalse(folders[i] + " is still in use!", isOpen(folders[i]));
+ }
+ }
+
+ public void testRenameSubfolder() throws ProtocolException, IOException,
+ MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME, USER_PASSWORD));
+
+ verifyCommand(new RenameClientCommand("test1.test1a", "test1.test1neu"));
+
+ String[] expected = { USER_MAILBOX_ROOT + ".INBOX",
+ USER_MAILBOX_ROOT + ".test", USER_MAILBOX_ROOT + ".test1",
+ USER_MAILBOX_ROOT + ".test1.test1neu",
+ USER_MAILBOX_ROOT + ".test1.test1b",
+ USER_MAILBOX_ROOT + ".test2.test2a",
+ USER_MAILBOX_ROOT + ".test2.test2b" };
+ verifyFolderList(expected, getFolderNames());
+
+ verifyCommand(new LogoutClientCommand());
+ }
+
+ public void testRenameParentfolder() throws ProtocolException, IOException,
+ MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME, USER_PASSWORD));
+
+ verifyCommand(new RenameClientCommand("test1", "test2"));
+
+ String[] expected = { USER_MAILBOX_ROOT + ".INBOX",
+ USER_MAILBOX_ROOT + ".test", USER_MAILBOX_ROOT + ".test2",
+ USER_MAILBOX_ROOT + ".test2.test1a",
+ USER_MAILBOX_ROOT + ".test2.test1b",
+ USER_MAILBOX_ROOT + ".test2.test2a",
+ USER_MAILBOX_ROOT + ".test2.test2b" };
+ verifyFolderList(expected, getFolderNames());
+
+ verifyCommand(new LogoutClientCommand());
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/SessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/SessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/SessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/SessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,171 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.imapserver.util.UnsolicitedResponseGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+
+public class SessionTest extends AbstractSessionTest
+{
+
+ String[] existing = {USER_MAILBOX_ROOT+".INBOX",USER_MAILBOX_ROOT+".test",USER_MAILBOX_ROOT+".test1",USER_MAILBOX_ROOT+".test1.test1a",USER_MAILBOX_ROOT+".test1.test1b",USER_MAILBOX_ROOT+".test2.test2a",USER_MAILBOX_ROOT+".test2.test2b"};
+ Set existingSet = null;
+
+ public void setUp() throws MailboxException, MessagingException, IOException, MailboxManagerException
+ {
+ super.setUp();
+ existingSet=new HashSet(Arrays.asList(existing));
+ createFolders((String[]) existingSet.toArray(new String[0]));
+ }
+
+
+
+
+ public void testLogin() throws ProtocolException, IOException, MessagingException
+ {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ }
+
+ public void testCreate() throws ProtocolException, MessagingException, IOException, MailboxManagerException{
+ testLogin();
+ assertFalse(folderExists(USER_MAILBOX_ROOT+".Trash"));
+ String response = handleRequest((++counter)+" create \"Trash\"\n");
+ assertEquals(counter+" OK CREATE completed.\r\n",response);
+ assertTrue(folderExists(USER_MAILBOX_ROOT+".Trash"));
+ }
+
+ public void testListInbox() throws ProtocolException, MessagingException, IOException {
+ testLogin();
+ String response = handleRequest((++counter)+" LIST \"\" \"INBOX\"\n");
+ assertEquals("* LIST () \".\" INBOX\r\n"+counter+" OK LIST completed.\r\n",response);
+ }
+
+ public void testListInboxFullName() throws ProtocolException, MessagingException, IOException {
+ testLogin();
+ String response = handleRequest((++counter)+" LIST \"\" \""+USER_MAILBOX_ROOT+".INBOX\"\n");
+ assertEquals("* LIST () \".\" "+USER_MAILBOX_ROOT+".INBOX\r\n"+counter+" OK LIST completed.\r\n",response);
+ }
+
+ public void testLsubAll() throws ProtocolException, MessagingException, IOException {
+ testLogin();
+ BufferedReader br = handleRequestReader((++counter)+" LSUB \""+USER_MAILBOX_ROOT+"\" \"*\"\n");
+ String response=null;
+ String start="* LSUB () \".\" ";
+ while ((response=br.readLine())!=null) {
+ System.out.println("Parsing "+response);
+ if (response.charAt(0)=='*') {
+ assertTrue(response.startsWith(start));
+ String name=response.substring(start.length());
+ assertTrue(existingSet.remove(name));
+
+ } else {
+ break;
+ }
+ }
+ assertEquals(0,existingSet.size());
+ assertEquals(counter+" OK LSUB completed.",response);
+ assertNull(br.readLine());
+
+
+ }
+ public void testListAll() throws ProtocolException, MessagingException, IOException {
+ testLogin();
+ BufferedReader br = handleRequestReader((++counter)+" LIST \""+USER_MAILBOX_ROOT+"\" \"*\"\n");
+ String response=null;
+ String start="* LIST () \".\" ";
+ while ((response=br.readLine())!=null) {
+ System.out.println("Parsing "+response);
+ if (response.charAt(0)=='*') {
+ assertTrue(response.startsWith(start));
+ String name=response.substring(start.length());
+ assertTrue(existingSet.remove(name));
+
+ } else {
+ break;
+ }
+ }
+ assertEquals(0,existingSet.size());
+ assertEquals(counter+" OK LIST completed.",response);
+ assertNull(br.readLine());
+ }
+
+
+ public void testSelectNonEmpty() throws ProtocolException, MessagingException, IOException, MailboxManagerException {
+ long uidv=getUidValidity(USER_MAILBOX_ROOT+".test");
+ MimeMessage[] msgs=MessageGenerator.generateSimplesMessages(5);
+ msgs[0].setFlag(Flag.SEEN,true);
+ msgs[1].setFlag(Flag.SEEN,true);
+ addUIDMessagesOpen(USER_MAILBOX_ROOT+".test",msgs);
+ msgs=MessageGenerator.generateSimplesMessages(5);
+ appendMessagesClosed(USER_MAILBOX_ROOT+".test",msgs);
+ testLogin();
+ String command=" SELECT \"test\"";
+
+ UnsolicitedResponseGenerator rg=new UnsolicitedResponseGenerator();
+ rg.addExists(10);
+ rg.addRecent(5);
+ rg.addFlags();
+ rg.addUidValidity(uidv);
+ rg.addFirstUnseen(3);
+ rg.addPermanentFlags();
+
+ String statusResponse="OK [READ-WRITE] SELECT completed.";
+
+ verify(command,rg.getResponseSet(),statusResponse);
+ }
+
+
+
+ public void testAppendToSelectedInbox() throws ProtocolException, MessagingException, IOException, MailboxManagerException {
+ testLogin();
+
+ long uidv=getUidValidity(USER_MAILBOX_ROOT+".test");
+
+ String command=" SELECT \"test\"";
+
+ UnsolicitedResponseGenerator rg=new UnsolicitedResponseGenerator();
+ rg.addExists(0);
+ rg.addRecent(0);
+ rg.addFlags();
+ rg.addUidValidity(uidv);
+ rg.addFirstUnseen(0);
+ rg.addPermanentFlags();
+
+ String statusResponse="OK [READ-WRITE] SELECT completed.";
+
+ verify(command,rg.getResponseSet(),statusResponse);
+
+
+
+ MimeMessage mm=MessageGenerator.generateSimpleMessage();
+ String content=MessageGenerator.messageContentToString(mm);
+ String request=" append \"test\" (\\Seen) {"+content.length()+"+}\n";
+ request += content;
+
+ rg=new UnsolicitedResponseGenerator();
+ rg.addRecent(0);
+ rg.addExists(1);
+
+ verify(request,rg.getResponseSet(),"OK APPEND completed.");
+
+ Message[] msgs=getMessages(USER_MAILBOX_ROOT+".test");
+ assertEquals(1,msgs.length);
+ assertEquals(content,MessageGenerator.messageContentToString(msgs[0]));
+ }
+}
+
+
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidFlagSizeFetchSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidFlagSizeFetchSessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidFlagSizeFetchSessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidFlagSizeFetchSessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,98 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.Flags;
+import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.FetchCommand;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.client.SelectCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+public class UidFlagSizeFetchSessionTest extends AbstractSessionTest {
+
+ String[] folders = {USER_MAILBOX_ROOT + ".INBOX",USER_MAILBOX_ROOT + ".test",USER_MAILBOX_ROOT + ".test1",USER_MAILBOX_ROOT + ".test1.test1a",USER_MAILBOX_ROOT + ".test1.test1b",USER_MAILBOX_ROOT + ".test2.test2a",USER_MAILBOX_ROOT + ".test2.test2b"};
+ String[] onlyInbox = {USER_MAILBOX_ROOT + ".INBOX"};
+ MimeMessage[] msgs= null;
+ long[] uids = null;
+
+ public void setUp() throws MailboxException, MessagingException, IOException, MailboxManagerException {
+ super.setUp();
+ msgs=MessageGenerator.generateSimplesMessages(10);
+ createFolders(onlyInbox);
+ // increase the uid
+ appendMessagesClosed(USER_MAILBOX_ROOT+".INBOX",msgs);
+ deleteAll(USER_MAILBOX_ROOT+".INBOX");
+ uids=addUIDMessagesOpen(USER_MAILBOX_ROOT+".INBOX",msgs);
+ }
+
+ public void testEmptyFetchInRange() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ verifyCommand(new FetchCommand(msgs,1,-1));
+ verifyCommand(new FetchCommand(msgs,1,5));
+ verifyCommand(new FetchCommand(msgs,5,-1));
+ verifyCommand(new FetchCommand(msgs,2,2));
+ }
+
+ public void testEmptyFetchOutOfRange() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ verifyCommand(new FetchCommand(msgs,0,2));
+ verifyCommand(new FetchCommand(msgs,3,2));
+ verifyCommand(new FetchCommand(msgs,3,12));
+ }
+
+ public void testFetchUids() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ FetchCommand fc=new FetchCommand(msgs,1,-1);
+ fc.setUids(uids);
+ verifyCommand(fc);
+
+ }
+
+ public void testFetchUidsFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ // Folder hast to be kept open for RECENT Flags
+ useFolder(USER_MAILBOX_ROOT+".INBOX");
+ appendMessagesClosed(USER_MAILBOX_ROOT+".INBOX",MessageGenerator.generateSimplesMessages(5));
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 12, 12, new Flags(Flags.Flag.SEEN), true, false);
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 14, 14, new Flags(Flags.Flag.SEEN), true, false);
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+ uids=getUids(USER_MAILBOX_ROOT+".INBOX");
+
+
+
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ SelectCommand sc=new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX"));
+ assertEquals(sc.getRecentCount(),5);
+ verifyCommand(sc);
+
+ FetchCommand fc=new FetchCommand(msgs,1,-1);
+ fc.setUids(uids);
+ fc.setFetchFlags(true);
+ verifyCommand(fc);
+ freeFolder(USER_MAILBOX_ROOT+".INBOX");
+
+ }
+
+ public void testRfc822Size() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+ FetchCommand fc=new FetchCommand(msgs,1,-1);
+ fc.setFetchRfc822Size(true);
+ verifyCommand(fc);
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidStoreSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidStoreSessionTest.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidStoreSessionTest.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/handler/session/UidStoreSessionTest.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,257 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.Flags;
+import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.ProtocolException;
+import org.apache.james.imapserver.client.LoginCommand;
+import org.apache.james.imapserver.client.LogoutClientCommand;
+import org.apache.james.imapserver.client.MessageSet;
+import org.apache.james.imapserver.client.SelectCommand;
+import org.apache.james.imapserver.client.StoreClientCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+
+
+public class UidStoreSessionTest extends AbstractSessionTest {
+
+
+ String[] onlyInbox = {USER_MAILBOX_ROOT+".INBOX"};
+ MimeMessage[] msgs= null;
+ long[] uids = null;
+
+ public void setUp() throws MailboxException, MessagingException, IOException, MailboxManagerException {
+ super.setUp();
+ msgs=MessageGenerator.generateSimplesMessages(4);
+ createFolders(onlyInbox);
+ // increase the uid
+ appendMessagesClosed(USER_MAILBOX_ROOT+".INBOX",msgs);
+ deleteAll(USER_MAILBOX_ROOT+".INBOX");
+ uids=addUIDMessagesOpen(USER_MAILBOX_ROOT+".INBOX",msgs);
+ }
+
+ public void doTestSetFlags(boolean uid, boolean silent) throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ Flags flagsMany= new Flags();
+ flagsMany.add(Flag.SEEN);
+ flagsMany.add(Flag.FLAGGED);
+ flagsMany.add(Flag.ANSWERED);
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 5, 6, flagsMany, true, false);
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 8, 8, flagsMany, true, false);
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+ uids=getUids(USER_MAILBOX_ROOT+".INBOX");
+
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+
+
+ MessageSet set;
+ StoreClientCommand storeCommand;
+
+
+ Flags flagsSeen=new Flags();
+ flagsSeen.add(Flag.SEEN);
+
+
+ if (uid) {
+ set=new MessageSet(msgs,uids,7,8);
+ } else {
+ set=new MessageSet(msgs,3,4);
+ }
+
+ msgs[2].setFlag(Flag.SEEN, true);
+ msgs[3].setFlags(flagsMany,false);
+ msgs[3].setFlag(Flag.SEEN, true);
+
+ storeCommand=new StoreClientCommand(StoreClientCommand.MODE_SET,silent,flagsSeen,set);
+ verifyCommand(storeCommand);
+
+ if (uid) {
+ set=new MessageSet(msgs,uids,5);
+ }else {
+ set=new MessageSet(msgs,1);
+ }
+
+ msgs[0].setFlags(flagsMany,false);
+ msgs[0].setFlag(Flag.SEEN, true);
+
+ storeCommand=new StoreClientCommand(StoreClientCommand.MODE_SET,silent,flagsSeen,set);
+ verifyCommand(storeCommand);
+
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+
+ assertEquals(flagsSeen,msgs[0].getFlags());
+ assertEquals(flagsMany,msgs[1].getFlags());
+ assertEquals(flagsSeen,msgs[2].getFlags());
+ assertEquals(flagsSeen,msgs[3].getFlags());
+ verifyCommand(new LogoutClientCommand());
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".INBOX"));
+ }
+
+ public void doTestAddFlags(boolean uid, boolean silent) throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 5, 8, new Flags(Flags.Flag.DRAFT), true, false);
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+ uids=getUids(USER_MAILBOX_ROOT+".INBOX");
+
+ MessageSet set;
+ StoreClientCommand storeCommand;
+
+ Flags flagsSeen=new Flags();
+ flagsSeen.add(Flag.SEEN);
+ if (uid) {
+ set=new MessageSet(msgs,uids,5);
+ } else {
+ set=new MessageSet(msgs,1);
+ }
+ msgs[0].setFlags(flagsSeen, true);
+
+ storeCommand=new StoreClientCommand(StoreClientCommand.MODE_ADD,silent,flagsSeen,set);
+ verifyCommand(storeCommand);
+
+ Flags flagsMany= new Flags();
+ flagsMany.add(Flag.SEEN);
+ flagsMany.add(Flag.FLAGGED);
+ flagsMany.add(Flag.ANSWERED);
+
+ if (uid) {
+ set=new MessageSet(msgs,uids,6,8);
+ }else {
+ set=new MessageSet(msgs,2,4);
+ }
+ msgs[1].setFlags(flagsMany, true);
+ msgs[2].setFlags(flagsMany, true);
+ msgs[3].setFlags(flagsMany, true);
+
+ storeCommand=new StoreClientCommand(StoreClientCommand.MODE_ADD,silent,flagsMany,set);
+ verifyCommand(storeCommand);
+
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+
+ flagsSeen.add(Flags.Flag.DRAFT);
+ flagsMany.add(Flags.Flag.DRAFT);
+
+ assertEquals(flagsSeen,msgs[0].getFlags());
+ assertEquals(flagsMany,msgs[1].getFlags());
+ assertEquals(flagsMany,msgs[2].getFlags());
+ assertEquals(flagsMany,msgs[3].getFlags());
+ verifyCommand(new LogoutClientCommand());
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".INBOX"));
+ }
+
+ public void doTestRemoveFlags(boolean uid, boolean silent) throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+
+ Flags flagsEmpty=new Flags();
+
+ Flags flagsSeen=new Flags();
+ flagsSeen.add(Flag.SEEN);
+
+ Flags flagsAnswered=new Flags();
+ flagsAnswered.add(Flag.ANSWERED);
+
+ Flags flagsSeenFlagged= new Flags();
+ flagsSeenFlagged.add(Flag.SEEN);
+ flagsSeenFlagged.add(Flag.FLAGGED);
+
+ Flags flagsSeenFlaggedAnswered= new Flags();
+ flagsSeenFlaggedAnswered.add(Flag.SEEN);
+ flagsSeenFlaggedAnswered.add(Flag.FLAGGED);
+ flagsSeenFlaggedAnswered.add(Flag.ANSWERED);
+
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 5, 5, flagsSeenFlaggedAnswered, true, false);
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 6, 6, flagsSeen, true, false);
+ setFlags(USER_MAILBOX_ROOT+".INBOX", 7, 8, flagsSeenFlaggedAnswered, true, false);
+
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+ uids=getUids(USER_MAILBOX_ROOT+".INBOX");
+
+ verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+ verifyCommand(new SelectCommand(USER_MAILBOX_ROOT+".INBOX", msgs, getUidValidity(USER_MAILBOX_ROOT+".INBOX")));
+
+ MessageSet set;
+ StoreClientCommand storeCommand;
+
+ set=new MessageSet(msgs,1,3,new int[] {1,3},uids,uid);
+
+ msgs[0].setFlag(Flags.Flag.ANSWERED,false);
+ msgs[2].setFlag(Flags.Flag.ANSWERED,false);
+
+ storeCommand=new StoreClientCommand(StoreClientCommand.MODE_REMOVE,silent,flagsAnswered,set);
+ verifyCommand(storeCommand);
+
+ if (uid) {
+ set=new MessageSet(msgs,uids,8);
+ } else {
+ set=new MessageSet(msgs,4);
+ }
+ msgs[3].setFlags(flagsSeenFlaggedAnswered,false);
+
+ storeCommand=new StoreClientCommand(StoreClientCommand.MODE_REMOVE,silent,flagsSeenFlaggedAnswered,set);
+ verifyCommand(storeCommand);
+
+ msgs=getMessages(USER_MAILBOX_ROOT+".INBOX");
+
+ assertEquals(flagsSeenFlagged,msgs[0].getFlags());
+ assertEquals(flagsSeen,msgs[1].getFlags());
+ assertEquals(flagsSeenFlagged,msgs[2].getFlags());
+ assertEquals(flagsEmpty,msgs[3].getFlags());
+ verifyCommand(new LogoutClientCommand());
+ assertFalse(isOpen(USER_MAILBOX_ROOT+".INBOX"));
+ }
+
+ public void testSetFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestSetFlags(false, false);
+ }
+
+ public void testAddFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestAddFlags(false, false);
+ }
+
+ public void testRemoveFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestRemoveFlags(false, false);
+ }
+
+ public void testUidSetFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestSetFlags(true, false);
+ }
+
+ public void testUidAddFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestAddFlags(true, false);
+ }
+
+ public void testUidRemoveFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestRemoveFlags(true, false);
+ }
+
+
+ public void testSilentSetFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestSetFlags(false, true);
+ }
+
+ public void testSilentAddFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestAddFlags(false, true);
+ }
+
+ public void testSilentRemoveFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestRemoveFlags(false, true);
+ }
+
+ public void testSilentUidSetFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestSetFlags(true, true);
+ }
+
+ public void testSilentUidAddFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestAddFlags(true, true);
+ }
+
+ public void testSilentUidRemoveFlags() throws ProtocolException, IOException, MessagingException, MailboxManagerException {
+ doTestRemoveFlags(true, true);
+ }
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MailboxManagerProviderSingleton.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MailboxManagerProviderSingleton.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MailboxManagerProviderSingleton.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MailboxManagerProviderSingleton.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,21 @@
+package org.apache.james.imapserver.mock;
+
+import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
+import org.apache.james.mailboxmanager.torque.TorqueMailboxManagerProvider;
+
+public class MailboxManagerProviderSingleton {
+
+
+ private static TorqueMailboxManagerProvider torqueMailboxManagerProvider;
+
+ public synchronized static MailboxManagerProvider getMailboxManagerProviderInstance() throws Exception {
+ if (torqueMailboxManagerProvider==null) {
+ torqueMailboxManagerProvider=new TorqueMailboxManagerProvider();
+ torqueMailboxManagerProvider.configureDefaults();
+ torqueMailboxManagerProvider.initialize();
+ }
+ return torqueMailboxManagerProvider;
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandler.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandler.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandler.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandler.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,15 @@
+package org.apache.james.imapserver.mock;
+
+import org.apache.james.imapserver.ImapHandlerInterface;
+
+public class MockImapHandler implements ImapHandlerInterface {
+
+ public void forceConnectionClose(String byeMessage) {
+
+ }
+
+ public void resetHandler() {
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandlerConfigurationData.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandlerConfigurationData.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandlerConfigurationData.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockImapHandlerConfigurationData.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,61 @@
+package org.apache.james.imapserver.mock;
+
+import org.apache.james.imapserver.ImapHandlerConfigurationData;
+import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
+import org.apache.james.mailboxmanager.torque.TorqueMailboxManagerProvider;
+import org.apache.james.services.MailServer;
+import org.apache.james.services.UsersRepository;
+
+public class MockImapHandlerConfigurationData implements
+ ImapHandlerConfigurationData
+{
+
+ public MailServer mailServer;
+ public UsersRepository usersRepository = new MockUsersRepository();
+ public MailboxManagerProvider mailboxManagerProvider;
+
+ public String getHelloName()
+ {
+ return "thats.my.host.org";
+ }
+
+ public int getResetLength()
+ {
+ return 24*1024;
+ }
+
+ public MailServer getMailServer()
+ {
+ if (mailServer==null) {
+ mailServer=new MockMailServer();
+ }
+ return mailServer;
+ }
+
+ public UsersRepository getUsersRepository()
+ {
+
+ return usersRepository;
+ }
+
+
+ public MailboxManagerProvider getMailboxManagerProvider() {
+ if (mailboxManagerProvider==null) {
+ try {
+ mailboxManagerProvider=MailboxManagerProviderSingleton.getMailboxManagerProviderInstance();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return mailboxManagerProvider;
+ }
+
+ public boolean doStreamdump() {
+ return true;
+ }
+
+ public String getStreamdumpDir() {
+ return "streamdump";
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockMailServer.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockMailServer.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockMailServer.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockMailServer.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,64 @@
+package org.apache.james.imapserver.mock;
+
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.imapserver.TestConstants;
+import org.apache.james.services.MailRepository;
+import org.apache.james.services.MailServer;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+
+public class MockMailServer implements MailServer, TestConstants
+{
+
+ public void sendMail(MailAddress sender, Collection recipients,
+ MimeMessage msg) throws MessagingException
+ {
+ throw new RuntimeException("not implemented");
+
+ }
+
+ public void sendMail(MailAddress sender, Collection recipients,
+ InputStream msg) throws MessagingException
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public void sendMail(Mail mail) throws MessagingException
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public void sendMail(MimeMessage message) throws MessagingException
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ Map userToMailRepo = new HashMap();
+
+ public MailRepository getUserInbox(String userName) {
+ return null;
+ }
+
+ public String getId()
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public boolean addUser(String userName, String password)
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public boolean isLocalServer(String serverName)
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUser.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUser.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUser.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUser.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,25 @@
+package org.apache.james.imapserver.mock;
+
+import org.apache.james.imapserver.TestConstants;
+import org.apache.james.services.User;
+
+public class MockUser implements User,TestConstants
+{
+
+ public String getUserName()
+ {
+ return USER_NAME;
+ }
+
+ public boolean verifyPassword(String pass)
+ {
+
+ return USER_PASSWORD.equals(pass);
+ }
+
+ public boolean setPassword(String newPass)
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUsersRepository.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUsersRepository.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUsersRepository.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockUsersRepository.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,102 @@
+package org.apache.james.imapserver.mock;
+
+import java.util.Arrays;
+import java.util.Iterator;
+
+import org.apache.james.imapserver.TestConstants;
+import org.apache.james.services.User;
+import org.apache.james.services.UsersRepository;
+
+public class MockUsersRepository implements UsersRepository, TestConstants
+{
+
+ public boolean addUser(User user)
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public void addUser(String name, Object attributes)
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public boolean addUser(String username, String password)
+ {
+ throw new RuntimeException("not implemented");
+ }
+
+ public User getUserByName(String name)
+ {
+ if (USER_NAME.equals(name)) {
+ return new MockUser();
+ }
+ return null;
+ }
+
+ public User getUserByNameCaseInsensitive(String name)
+ {
+ if (USER_NAME.equalsIgnoreCase(name)) {
+ return new MockUser();
+ }
+ return null;
+ }
+
+ public String getRealName(String name)
+ {
+ if (USER_NAME.equalsIgnoreCase(name)) {
+ return USER_REALNAME;
+ } else {
+ return null;
+ }
+ }
+
+ public boolean updateUser(User user)
+ {
+ throw new RuntimeException("not implemented");
+
+ }
+
+ public void removeUser(String name)
+ {
+ throw new RuntimeException("not implemented");
+
+ }
+
+ public boolean contains(String name)
+ {
+ if (USER_NAME.equals(name)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public boolean containsCaseInsensitive(String name)
+ {
+ if (USER_NAME.equalsIgnoreCase(name)) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public boolean test(String name, String password)
+ {
+ User user=getUserByName(name);
+ if (user!=null) {
+ return user.verifyPassword(password);
+ }
+ return false;
+ }
+
+ public int countUsers()
+ {
+ return 1;
+ }
+
+ public Iterator list()
+ {
+ return Arrays.asList(new String[] { USER_NAME }).iterator();
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockWatchdog.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockWatchdog.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockWatchdog.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/mock/MockWatchdog.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,24 @@
+package org.apache.james.imapserver.mock;
+
+import org.apache.james.util.watchdog.Watchdog;
+
+public class MockWatchdog implements Watchdog
+{
+
+ public void start()
+ {
+
+
+ }
+
+ public void reset()
+ {
+
+ }
+
+ public void stop()
+ {
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/ImapServerLauncher.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/ImapServerLauncher.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/ImapServerLauncher.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/ImapServerLauncher.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,60 @@
+package org.apache.james.imapserver.util;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+import javax.mail.MessagingException;
+
+import org.apache.james.imapserver.ImapHandler;
+import org.apache.james.imapserver.TestConstants;
+import org.apache.james.imapserver.mock.MockImapHandlerConfigurationData;
+import org.apache.james.imapserver.mock.MockWatchdog;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+import org.apache.james.mailboxmanager.manager.GeneralManager;
+import org.apache.james.test.mock.avalon.MockLogger;
+
+public class ImapServerLauncher implements TestConstants
+{
+
+
+ public void go() throws IOException, MessagingException, MailboxManagerException
+ {
+ ServerSocket ss = new ServerSocket(HOST_PORT);
+ final MockImapHandlerConfigurationData theConfigData=new MockImapHandlerConfigurationData();
+ while (true) {
+
+ final Socket s=ss.accept();
+ new Thread() {
+ public void run() {
+ try {
+ ImapHandler imapHandler=new ImapHandler();
+ imapHandler.enableLogging(new MockLogger());
+ imapHandler.setConfigurationData(theConfigData);
+ imapHandler.setWatchdog(new MockWatchdog());
+ System.out.println("Handle connection "+s);
+ imapHandler.handleConnection(s);
+ System.out.println("Handle connection finished."+s);
+
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }.start();
+
+
+ }
+
+ }
+
+ public static void main(String[] args)
+ {
+ try {
+ new ImapServerLauncher().go();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/JavaMailFolderHelper.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/JavaMailFolderHelper.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/JavaMailFolderHelper.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/JavaMailFolderHelper.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,6 @@
+package org.apache.james.imapserver.util;
+
+public class JavaMailFolderHelper
+{
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/MessageGenerator.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/MessageGenerator.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/MessageGenerator.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/MessageGenerator.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,65 @@
+package org.apache.james.imapserver.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Random;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+import com.sun.mail.util.CRLFOutputStream;
+
+public class MessageGenerator
+{
+ private static Random random;
+
+ protected static synchronized Random getRandom() {
+ if (random == null) {
+ random = new Random();
+ }
+ return random;
+
+ }
+
+ public static int calculateSize(MimeMessage m) throws IOException, MessagingException {
+ ByteArrayOutputStream os =new ByteArrayOutputStream();
+ m.writeTo(os);
+ return os.size();
+ }
+
+ public static MimeMessage generateSimpleMessage() throws MessagingException {
+
+ MimeMessage mm = new MimeMessage((Session) null);
+ int r = getRandom().nextInt() % 100000;
+ int r2 = getRandom().nextInt() % 100000;
+ mm.setSubject("good news" + r);
+ mm.setFrom(new InternetAddress("user" + r + "@localhost"));
+ mm.setSentDate(new Date());
+ mm.setRecipients(Message.RecipientType.TO,
+ new InternetAddress[] { new InternetAddress("user" + r2
+ + "@localhost") });
+ String text = "Hello User" + r2
+ + "!\r\n\r\nhave a nice holiday.\r\n\r\ngreetings,\nUser" + r
+ + "\r\n";
+ mm.setText(text);
+ return mm;
+ }
+ public static String messageContentToString(Message mm) throws IOException, MessagingException {
+ ByteArrayOutputStream os=new ByteArrayOutputStream();
+ mm.writeTo(new CRLFOutputStream(os));
+ return os.toString();
+ }
+
+ public static MimeMessage[] generateSimplesMessages(int c) throws MessagingException
+ {
+ MimeMessage[] msgs=new MimeMessage[c];
+ for (int i=0; i<c; i++) {
+ msgs[i]=generateSimpleMessage();
+ }
+ return msgs;
+ }
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/UnsolicitedResponseGenerator.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/UnsolicitedResponseGenerator.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/UnsolicitedResponseGenerator.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/imapserver/util/UnsolicitedResponseGenerator.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,82 @@
+package org.apache.james.imapserver.util;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.mail.MessagingException;
+import javax.mail.Flags.Flag;
+import javax.mail.internet.MimeMessage;
+
+public class UnsolicitedResponseGenerator
+{
+ Set responseSet = new HashSet();
+ int recent=0;
+
+ public void addByMessages(MimeMessage[] msgs) throws MessagingException {
+ addExists(msgs.length);
+ int recent=0;
+ int firstUnseen=0;
+ for (int i=0; i<msgs.length; i++) {
+ if (msgs[i].isSet(Flag.RECENT)) {
+ recent++;
+ }
+ if (firstUnseen==0 && !msgs[i].isSet(Flag.SEEN)) {
+ firstUnseen=i+1;
+ }
+
+ }
+ addRecent(recent);
+ addFlags();
+ addFirstUnseen(firstUnseen);
+ addPermanentFlags();
+ }
+
+ public void addExists(int i)
+ {
+ responseSet.add("* " + i + " EXISTS");
+ }
+
+ public void addRecent(int i)
+ {
+ recent=i;
+ responseSet.add("* " + i + " RECENT");
+ }
+
+ public void addFlags()
+ {
+ responseSet
+ .add("* FLAGS (\\Answered \\Deleted \\Draft \\Flagged \\Recent \\Seen)");
+ }
+
+ public void addUidValidity(long uidv)
+ {
+ responseSet.add("* OK [UIDVALIDITY " + uidv + "]");
+ }
+
+ public void addFirstUnseen(int firstUnseen)
+ {
+ if (firstUnseen > 0) {
+ responseSet.add("* OK [UNSEEN "+firstUnseen+"] Message "+firstUnseen+" is the first unseen");
+ } else {
+ responseSet.add("* OK No messages unseen");
+ }
+ }
+
+ public void addPermanentFlags()
+ {
+ responseSet
+ .add("* OK [PERMANENTFLAGS (\\Answered \\Deleted \\Draft \\Flagged \\Recent \\Seen)]");
+ }
+
+ public Set getResponseSet()
+ {
+
+ return responseSet;
+ }
+
+ public int getRecent() {
+
+ return recent;
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractImapMailboxSelfTestCase.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractImapMailboxSelfTestCase.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractImapMailboxSelfTestCase.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractImapMailboxSelfTestCase.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,141 @@
+package org.apache.james.mailboxmanager;
+
+import java.util.Date;
+
+import javax.mail.Flags;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import junit.framework.TestCase;
+
+import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
+import org.apache.james.mailboxmanager.impl.MailboxListenerCollector;
+import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
+import org.apache.james.mailboxmanager.manager.GeneralManager;
+
+public abstract class AbstractImapMailboxSelfTestCase extends TestCase {
+
+ protected GeneralManager mailboxManager;
+
+ protected ImapMailboxSession mailbox;
+
+ protected MailboxListenerCollector collector;
+
+ public static final String INBOX="#users.tuser.INBOX";
+
+ public void setUp() throws Exception {
+ super.setUp();
+ mailboxManager.createMailbox(INBOX);
+ mailbox=mailboxManager.getGenericImapMailboxSession(INBOX);
+ collector=new MailboxListenerCollector();
+ mailbox.addListener(collector, 0);
+ assertNotNull(mailbox);
+ }
+
+ public void testGetFirstUnseen() throws MailboxManagerException, MessagingException {
+ assertNotNull(mailbox);
+ for (int i = 0; i < 5; i++) {
+ MimeMessage mm=TestUtil.createMessage();
+ mm.setFlags(new Flags(Flags.Flag.SEEN), true);
+ MessageResult mr=mailbox.appendMessage(mm, new Date(), MessageResult.UID);
+ assertEquals(i+1, mr.getUid());
+ }
+ for (int i = 0; i < 3; i++) {
+ MessageResult mr=mailbox.appendMessage(TestUtil.createMessage(), new Date(), MessageResult.UID);
+ assertEquals(i+6, mr.getUid());
+ }
+ for (int i = 0; i < 3; i++) {
+ MimeMessage mm=TestUtil.createMessage();
+ mm.setFlags(new Flags(Flags.Flag.SEEN), true);
+ MessageResult mr=mailbox.appendMessage(mm, new Date(), MessageResult.UID);
+ assertEquals(i+9, mr.getUid());
+ }
+ MessageResult mr;
+ mr=mailbox.getFirstUnseen(MessageResult.UID | MessageResult.MSN);
+ assertNotNull(mr);
+ assertEquals(6, mr.getUid());
+ assertEquals(6, mr.getMsn());
+ mailbox.setFlags(new Flags(Flags.Flag.DELETED), true, false, GeneralMessageSetImpl.uidRange(1,3), null);
+ mailbox.expunge(GeneralMessageSetImpl.all(), 0);
+ mailbox.getExpungedEvents(true);
+ mr=mailbox.getFirstUnseen(MessageResult.UID | MessageResult.MSN);
+ assertNotNull(mr);
+ assertEquals(6, mr.getUid());
+ assertEquals(3, mr.getMsn());
+ }
+
+ public void testGetExpungedEvents() throws MessagingException, MailboxManagerException {
+ for (int i = 0; i < 5; i++) {
+ MessageResult mr=mailbox.appendMessage(TestUtil.createMessage(), new Date(), MessageResult.UID | MessageResult.MSN);
+ assertEquals(i+1, mr.getUid());
+ assertEquals(i+1, mr.getMsn());
+ }
+ mailbox.setFlags(new Flags(Flags.Flag.DELETED), true, false, GeneralMessageSetImpl.uidRange(2, 4), null);
+ final MessageResult[] expungeResult1=mailbox.expunge(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {2,3,4},new int[] {2,3,4},expungeResult1);
+
+ final MessageResult[] getResult1 = mailbox.getMessages(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {1,5},new int[] {1,5},getResult1);
+
+
+ final MessageResult[] expungeEventResult1 = mailbox.getExpungedEvents(false);
+ checkMessageResults(new long[] {2,3,4},new int[] {2,3,4},expungeEventResult1);
+ final MessageResult[] expungeEventResult2 = mailbox.getExpungedEvents(true);
+ checkMessageResults(new long[] {2,3,4},new int[] {2,2,2},expungeEventResult2);
+
+
+ final MessageResult[] getResult2 = mailbox.getMessages(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {1,5},new int[] {1,2},getResult2);
+
+ for (int i = 0; i < 5; i++) {
+ MessageResult mr=mailbox.appendMessage(TestUtil.createMessage(), new Date(), MessageResult.UID | MessageResult.MSN);
+ assertEquals(6+i, mr.getUid());
+ assertEquals(3+i, mr.getMsn());
+ }
+
+ final MessageResult[] getResult3 = mailbox.getMessages(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {1,5,6,7,8,9,10},new int[] {1,2,3,4,5,6,7},getResult3);
+
+ mailbox.setFlags(new Flags(Flags.Flag.DELETED), true, false, GeneralMessageSetImpl.msnRange(2,4), null);
+ mailbox.setFlags(new Flags(Flags.Flag.DELETED), true, false, GeneralMessageSetImpl.oneMsn(6), null);
+
+ final MessageResult[] expungeResult2=mailbox.expunge(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {5,6,7,9},new int[] {2,3,4,6},expungeResult2);
+
+ final MessageResult[] getResult4 = mailbox.getMessages(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {1,8,10},new int[] {1,5,7},getResult4);
+
+ final MessageResult[] expungeEventResult3 = mailbox.getExpungedEvents(false);
+ checkMessageResults(new long[] {5,6,7,9},new int[] {2,3,4,6},expungeEventResult3);
+ final MessageResult[] expungeEventResult4 = mailbox.getExpungedEvents(true);
+ checkMessageResults(new long[] {5,6,7,9},new int[] {2,2,2,3},expungeEventResult4);
+
+ final MessageResult[] getResult5 = mailbox.getMessages(GeneralMessageSetImpl.all(), MessageResult.UID | MessageResult.MSN);
+ checkMessageResults(new long[] {1,8,10},new int[] {1,2,3},getResult5);
+ }
+
+ public void testAddedEvents() throws MailboxManagerException, MessagingException {
+ assertEquals(0,mailbox.getFlagEvents(false).length);
+ MessageResult mr=mailbox.appendMessage(TestUtil.createMessage(), new Date(), MessageResult.UID | MessageResult.MSN);
+ assertEquals(0,mailbox.getFlagEvents(false).length);
+ assertEquals(0,mailbox.getFlagEvents(true).length);
+ }
+
+ protected void assertEventCount(MailboxListenerCollector collector,long[] added, long[] flags, long[] expunged) {
+ assertEquals("added size", added.length, collector.getAddedList(true).size());
+ assertEquals("flags size", added.length, collector.getFlaggedList(true).size());
+ assertEquals("deleted size", added.length, collector.getExpungedList(true).size());
+
+ }
+
+ protected void checkMessageResults(long[] uids,int[] msns,MessageResult[] messageResults) {
+ assertEquals(uids.length, msns.length);
+ assertEquals(uids.length, messageResults.length);
+ for (int i = 0; i < messageResults.length; i++) {
+ assertEquals("Uid at pos "+i,uids[i], messageResults[i].getUid());
+ assertEquals("Msn at pos "+i,msns[i], messageResults[i].getMsn());
+ }
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,55 @@
+package org.apache.james.mailboxmanager;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
+import org.apache.james.mailboxmanager.manager.GeneralManager;
+
+import junit.framework.TestCase;
+
+public abstract class AbstractMailboxManagerSelfTestCase extends TestCase {
+
+ protected GeneralManager mailboxManager;
+
+
+ public void testCreateList() throws MailboxManagerException {
+ ListResult[] listResult;
+ listResult=mailboxManager.list("","*",false);
+ assertNotNull(listResult);
+ assertEquals(0,mailboxManager.list("","*",false).length);
+ Set boxes=new HashSet();
+ boxes.add("#users.joachim.INBOX");
+ boxes.add("#users.joachim.INBOX.Drafts");
+ boxes.add("#users.joachim2.INBOX");
+ for (Iterator iter = boxes.iterator(); iter.hasNext();) {
+ String box = (String) iter.next();
+ mailboxManager.createMailbox(box);
+ }
+ listResult=mailboxManager.list("","*",false);
+ assertEquals(3,listResult.length);
+ for (int i = 0; i < listResult.length; i++) {
+ assertTrue(boxes.contains(listResult[i].getName()));
+ }
+ }
+
+ public void testGetSessionMailbox() throws MailboxManagerException {
+ mailboxManager.createMailbox("#users.joachim3.INBOX");
+ GeneralMailboxSession sessionMailbox=mailboxManager.getGenericGeneralMailboxSession("#users.joachim3.INBOX");
+ assertNotNull(sessionMailbox);
+ }
+
+ public void testListOne() throws MailboxManagerException {
+ mailboxManager.createMailbox("test1");
+ mailboxManager.createMailbox("INBOX");
+ mailboxManager.createMailbox("INBOX2");
+
+ ListResult[] listResult=mailboxManager.list("","INBOX",false);
+ assertNotNull(listResult);
+ assertEquals(1, listResult.length);
+ assertEquals("INBOX", listResult[0].getName());
+ }
+
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/TestUtil.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/TestUtil.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/TestUtil.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/TestUtil.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,101 @@
+package org.apache.james.mailboxmanager;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Random;
+import java.util.Set;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+import com.sun.mail.util.CRLFOutputStream;
+
+public class TestUtil {
+
+ private static Random random;
+
+
+ public static boolean contentEquals(MimeMessage m1, MimeMessage m2, boolean verbose)
+ throws IOException, MessagingException {
+ ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+ m1.writeTo(new CRLFOutputStream(baos1));
+ ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+ m2.writeTo(new CRLFOutputStream(baos2));
+ if (verbose) {
+ byte[] b1=baos1.toByteArray();
+ byte[] b2=baos2.toByteArray();
+ int size=b1.length;
+ if (b2.length<b1.length) size=b2.length;
+ for (int i=0; i< size; i++) {
+ if (b1[i]!=b2[i]) {
+ System.out.println("I: "+i+" B1: "+b1[i]+" B2 "+b2[i]);
+ System.out.println("B1:"+new String(b1,0,i+1)+"°");
+ System.out.println("B2:"+new String(b2,0,i+1)+"°");
+ break;
+ }
+ }
+
+ }
+
+ return Arrays.equals(baos1.toByteArray(), baos2.toByteArray());
+ }
+
+ public static byte[] messageToByteArray(MimeMessage mm)
+ throws IOException, MessagingException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ mm.writeTo(new CRLFOutputStream(baos));
+ return baos.toByteArray();
+ }
+
+ public static boolean messageSetsEqual(Collection ma1, Collection ma2)
+ throws IOException, MessagingException {
+ if (ma1.size() != ma2.size())
+ return false;
+ Set s1 = new HashSet();
+ Set s2 = new HashSet();
+ for (Iterator it = ma1.iterator(); it.hasNext();) {
+ MimeMessage mm = (MimeMessage) it.next();
+ s1.add(new Integer(Arrays.hashCode(messageToByteArray(mm))));
+ }
+ for (Iterator it = ma2.iterator(); it.hasNext();) {
+ MimeMessage mm = (MimeMessage) it.next();
+ s2.add(new Integer(Arrays.hashCode(messageToByteArray(mm))));
+ }
+ return s1.equals(s2);
+ }
+
+
+ public static MimeMessage createMessage() throws MessagingException {
+ MimeMessage mm = new MimeMessage((Session) null);
+ int r = getRandom().nextInt() % 100000;
+ int r2 = getRandom().nextInt() % 100000;
+ mm.setSubject("good news" + r);
+ mm.setFrom(new InternetAddress("user" + r + "@localhost"));
+ mm.setRecipients(Message.RecipientType.TO,
+ new InternetAddress[] { new InternetAddress("user" + r2
+ + "@localhost") });
+ String text = "Hello User" + r2
+ + "!\n\nhave a nice holiday.\r\n\r\ngreetings,\nUser" + r
+ + "\n";
+ mm.setText(text);
+ mm.saveChanges();
+ return mm;
+ }
+
+ public static synchronized Random getRandom() {
+ if (random == null) {
+ random = new Random();
+ }
+ return random;
+
+ }
+
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/impl/UidChangeTrackerTestCase.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/impl/UidChangeTrackerTestCase.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/impl/UidChangeTrackerTestCase.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/impl/UidChangeTrackerTestCase.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,67 @@
+package org.apache.james.mailboxmanager.impl;
+
+import javax.mail.Flags;
+
+import junit.framework.TestCase;
+
+import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.tracking.UidChangeTracker;
+import org.apache.james.mailboxmanager.tracking.UidRange;
+
+public class UidChangeTrackerTestCase extends TestCase {
+
+ protected UidChangeTracker tracker;
+
+ protected MailboxListenerCollector collector;
+
+ public void setUp() {
+ tracker=new UidChangeTracker(null,"test",1000);
+ collector=new MailboxListenerCollector();
+ tracker.addMailboxListener(collector);
+ }
+
+
+
+ protected void assertCollectorSizes(int added, int expunged, int flags) {
+ assertEquals(added,collector.getAddedList(false).size());
+ assertEquals(expunged,collector.getExpungedList(false).size());
+ assertEquals(flags,collector.getFlaggedList(false).size());
+ }
+
+
+ public void testFound() {
+ MessageResultImpl[] results;
+ MessageResult result;
+
+ results=new MessageResultImpl[1];
+
+ results[0]=new MessageResultImpl(1000l);
+ tracker.found(new UidRange(1000,1000),results, null);
+ assertCollectorSizes(0,0,0);
+
+ results[0]=new MessageResultImpl(1001l);
+ tracker.found(new UidRange(1001,1001),results, null);
+ assertCollectorSizes(1,0,0);
+ assertEquals(1001,((MessageResult) collector.getAddedList(true).get(0)).getUid());
+ assertCollectorSizes(0,0,0);
+
+ results[0]=new MessageResultImpl(1001l,new Flags(Flags.Flag.FLAGGED));
+ tracker.found(new UidRange(1001,1001),results, null);
+ assertCollectorSizes(0,0,1);
+ result=(MessageResult) collector.getFlaggedList(true).get(0);
+ assertEquals(1001,result.getUid());
+ assertEquals(new Flags(Flags.Flag.FLAGGED),result.getFlags());
+
+ // nothing changed
+ tracker.found(new UidRange(1001,1001),results,null);
+ assertCollectorSizes(0,0,0);
+
+ // 1000 got expunged
+ tracker.found(new UidRange(1000,1001),results,null);
+ assertCollectorSizes(0,1,0);
+ assertEquals(1000,((MessageResult) collector.getExpungedList(true).get(0)).getUid());
+
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/MockUser.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/MockUser.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/MockUser.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/MockUser.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,21 @@
+package org.apache.james.mailboxmanager.mock;
+
+import org.apache.james.services.User;
+
+public class MockUser implements User {
+
+ public String getUserName() {
+ return "tuser";
+ }
+
+ public boolean setPassword(String newPass) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean verifyPassword(String pass) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/mock/TorqueMailboxManagerProviderSingleton.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,20 @@
+package org.apache.james.mailboxmanager.mock;
+
+import org.apache.james.mailboxmanager.torque.TorqueMailboxManagerProvider;
+
+public class TorqueMailboxManagerProviderSingleton {
+
+
+ private static TorqueMailboxManagerProvider torqueMailboxManagerProvider;
+
+ public synchronized static TorqueMailboxManagerProvider getTorqueMailboxManagerProviderInstance() throws Exception {
+ if (torqueMailboxManagerProvider==null) {
+ torqueMailboxManagerProvider=new TorqueMailboxManagerProvider();
+ torqueMailboxManagerProvider.configureDefaults();
+ torqueMailboxManagerProvider.initialize();
+ }
+ return torqueMailboxManagerProvider;
+
+ }
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositoryNativeTestCase.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositoryNativeTestCase.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositoryNativeTestCase.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositoryNativeTestCase.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,123 @@
+package org.apache.james.mailboxmanager.redundant;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.mail.MessagingException;
+
+import org.apache.mailet.Mail;
+
+public abstract class AbstractMailRepositoryNativeTestCase extends
+ AbstractMailRepositorySelfTestCase {
+
+ public void testStore() throws MessagingException, IOException {
+ Collection added = new ArrayList();
+ for (int i = 0; i < 10; i++) {
+ Mail m = generateMail();
+ mailRepository.store(m);
+ assertNativeMessageCountEquals(i + 1);
+ added.add(m.getMessage());
+ assertNativeMessagesEqual(added);
+ }
+ }
+
+ public void testStoreRemoveByMailOrKey() throws MessagingException,
+ IOException {
+ Collection added = new ArrayList();
+ for (int i = 0; i < 10; i++) {
+ Mail m1 = generateMail();
+ Mail m2 = generateMail();
+ mailRepository.store(m1);
+ assertNativeMessageCountEquals(i + 1);
+ mailRepository.store(m2);
+ assertNativeMessageCountEquals(i + 2);
+ if (i % 2 == 0) {
+ mailRepository.remove(m1);
+ } else {
+ mailRepository.remove(m1.getName());
+ }
+ assertNativeMessageCountEquals(i + 1);
+ added.add(m2.getMessage());
+ }
+ assertNativeMessagesEqual(added);
+ }
+
+ public void testStoreRemoveByCollection() throws MessagingException,
+ IOException {
+ Collection retain = new ArrayList();
+ Collection delete = new ArrayList();
+
+ for (int i = 0; i < 10; i++) {
+ Mail m1 = generateMail();
+ mailRepository.store(m1);
+ assertNativeMessageCountEquals(i + 1);
+ if (i % 2 == 0) {
+ delete.add(m1);
+ } else {
+ retain.add(m1.getMessage());
+ }
+ }
+ mailRepository.remove(delete);
+ assertNativeMessageCountEquals(5);
+ assertNativeMessagesEqual(retain);
+ }
+
+ /*
+ * Test method for
+ * 'org.apache.james.mailrepository.UIDPlusFolderMailRepository.list()'
+ */
+ public void testListRetrieve() throws MessagingException, IOException {
+ try {
+ Collection added = new ArrayList();
+ for (int i = 0; i < 10; i++) {
+ Mail m = generateMail();
+ nativeStoreMessage(m.getMessage());
+ added.add(m.getMessage());
+ }
+ assertNativeMessageCountEquals(10);
+ assertNativeMessagesEqual(added);
+
+ Collection retrieved = new ArrayList();
+ for (Iterator it= mailRepository.list(); it.hasNext();) {
+ String key = (String) it.next();
+ assertNotNull("key is null",key);
+ Mail m=mailRepository.retrieve(key);
+ assertNotNull("Mail is null",m);
+ assertNotNull("key of Mail is null",key);
+ assertEquals("key differs",key,m.getName());
+ retrieved.add(m.getMessage());
+ }
+ assertEquals("number of retrieved messages differs",10,retrieved.size());
+ assertTrue("messages differ",messageSetsEqual(added,retrieved));
+
+
+ } catch (NativeMethodNotSupportetException e) {
+
+ }
+ }
+ public void testListRemove() throws MessagingException, IOException {
+ try {
+ Collection added = new ArrayList();
+ for (int i = 0; i < 10; i++) {
+ Mail m = generateMail();
+ nativeStoreMessage(m.getMessage());
+ added.add(m.getMessage());
+ }
+ assertNativeMessageCountEquals(10);
+ int count=10;
+ for (Iterator it= mailRepository.list(); it.hasNext();) {
+ String key = (String) it.next();
+ assertNotNull("key is null",key);
+ mailRepository.remove(key);
+ count--;
+ assertNativeMessageCountEquals(count);
+ }
+ } catch (NativeMethodNotSupportetException e) {
+
+ }
+ }
+
+
+}
Added: james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositorySelfTestCase.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositorySelfTestCase.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositorySelfTestCase.java (added)
+++ james/server/sandbox/imap-integration/src/test/org/apache/james/mailboxmanager/redundant/AbstractMailRepositorySelfTestCase.java Mon Oct 9 10:15:30 2006
@@ -0,0 +1,133 @@
+package org.apache.james.mailboxmanager.redundant;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.mailet.Mail;
+
+public abstract class AbstractMailRepositorySelfTestCase extends AbstractMailRepositoryTestCase {
+
+ /*
+ * Test method for
+ * 'org.apache.james.mailrepository.UIDPlusFolderMailRepository.retrieve(String)'
+ */
+ public void testStoreRetrieve() throws MessagingException, IOException {
+ int addedCount = 0;
+ Collection added=new ArrayList();
+ for (int i = 1; i < 10; i++) {
+ Mail[] ms = new Mail[i];
+
+ for (int j = 0; j < i; j++) {
+ ms[j] = generateMail();
+ added.add(ms[j].getMessage());
+ mailRepository.store(ms[j]);
+ addedCount++;
+ assertNativeMessageCountEquals(addedCount);
+ }
+ assertNativeMessagesEqual(added);
+ for (int j = 0; j < i; j++) {
+ Mail originalMail = ms[j];
+ Mail retrievedMail = mailRepository.retrieve(ms[j].getName());
+ assertNotNull("Mail is null", retrievedMail);
+ assertEquals("keys differs!", originalMail.getName(),
+ retrievedMail.getName());
+ assertEquals("subject differs", originalMail.getMessage()
+ .getSubject(), retrievedMail.getMessage().getSubject());
+ assertTrue("content differs!", contentEquals(originalMail
+ .getMessage(), retrievedMail.getMessage()));
+ }
+ }
+ }
+
+ public void testStoreUpdateRetrieve() throws MessagingException, IOException {
+ Mail[] ms = new Mail[15];
+ MimeMessage[] mms = new MimeMessage[15];
+ int addedCount = 0;
+ for (int j = 0; j < 15; j++) {
+ ms[j] = generateMail();
+ mms[j]=ms[j].getMessage();
+ mailRepository.store(ms[j]);
+ addedCount++;
+ assertNativeMessageCountEquals(addedCount);
+ }
+ assertNativeMessagesEqual(Arrays.asList(mms));
+ System.out.println(" ####### Test: doing updates #####");
+ for (int j = 5; j < 10 ; j++) {
+ Mail m= generateMail();
+ m.setName(ms[j].getName());
+ mailRepository.store(m);
+ mms[j]=m.getMessage();
+ assertNativeMessageCountEquals(addedCount);
+ }
+ assertNativeMessagesEqual(Arrays.asList(mms));
+ for (int j = 0; j < 15; j++) {
+ Mail m=mailRepository.retrieve(ms[j].getName());
+ assertTrue(contentEquals(mms[j], m.getMessage()));
+ }
+ }
+
+ class RemoveThread extends Thread {
+
+ String key;
+ boolean exception=false;
+
+ RemoveThread(String key) {
+ super("rt");
+ this.key=key;
+ }
+
+ public void run() {
+ try {
+ mailRepository.remove(key);
+ } catch (MessagingException e) {
+ exception=true;
+ }
+ }
+ public synchronized void doWait(){
+ try {
+ wait();
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+
+ /*
+ * Test method for
+ * 'org.apache.james.mailrepository.UIDPlusFolderMailRepository.lock(String)'
+ */
+ public void testLock() throws MessagingException {
+ Mail m1=generateMail();
+ Mail m2=generateMail();
+ mailRepository.store(m1);
+ mailRepository.store(m2);
+ assertNativeMessageCountEquals(2);
+
+ // Try to remove locked message by different Thread
+ mailRepository.lock(m1.getName());
+ RemoveThread rt=new RemoveThread(m1.getName());
+ rt.start();
+ rt.doWait();
+ assertTrue("RemoveThread1 should have thrown exception",rt.exception);
+ assertNativeMessageCountEquals(2);
+
+ // Try to remove unlocked message by different Thread
+ mailRepository.unlock(m1.getName());
+ rt=new RemoveThread(m1.getName());
+ rt.start();
+ rt.doWait();
+ assertFalse("RemoveThread2 should not have thrown an exception",rt.exception);
+ assertNativeMessageCountEquals(1);
+
+ // try to remove locked message by same Thread
+ mailRepository.lock(m2.getName());
+ mailRepository.remove(m2.getName());
+ assertNativeMessageCountEquals(0);
+ }
+
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org