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/11/16 10:19:44 UTC

svn commit: r475653 - in /james/server/trunk/src/test/org/apache/james/imapserver: client/StatusClientCommand.java handler/session/AbstractSessionTest.java handler/session/StatusSessionTest.java

Author: joachim
Date: Thu Nov 16 01:19:43 2006
New Revision: 475653

URL: http://svn.apache.org/viewvc?view=rev&rev=475653
Log:
added test for Status command

Added:
    james/server/trunk/src/test/org/apache/james/imapserver/client/StatusClientCommand.java
    james/server/trunk/src/test/org/apache/james/imapserver/handler/session/StatusSessionTest.java
Modified:
    james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java

Added: james/server/trunk/src/test/org/apache/james/imapserver/client/StatusClientCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/imapserver/client/StatusClientCommand.java?view=auto&rev=475653
==============================================================================
--- james/server/trunk/src/test/org/apache/james/imapserver/client/StatusClientCommand.java (added)
+++ james/server/trunk/src/test/org/apache/james/imapserver/client/StatusClientCommand.java Thu Nov 16 01:19:43 2006
@@ -0,0 +1,109 @@
+package org.apache.james.imapserver.client;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.mail.Flags;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+public class StatusClientCommand implements Command {
+
+    private String folder;
+
+    private LinkedHashMap statusMap = new LinkedHashMap();
+
+    private long uidNext;
+
+    private long uidValidity;
+
+    private MimeMessage[] msgs;
+
+    public StatusClientCommand(String folder, MimeMessage[] msgs, long uidNext,
+            long uidValidity) throws MessagingException {
+        this.msgs=msgs;
+        this.folder = folder;
+        this.uidNext = uidNext ;
+        this.uidValidity = uidValidity;
+    }
+
+    public String getCommand() {
+        String command = "STATUS \"" + folder + "\" ";
+        command += getStatusList(false);
+        return command;
+    }
+    
+    public List getExpectedResponseList() throws MessagingException, IOException {
+        String response="* STATUS "+folder+" ";
+        response += getStatusList(true);
+        return Arrays.asList(new String[] {response});
+    }
+
+    protected String getStatusList(boolean withValues) {
+        String list="(";
+        for (Iterator iter = statusMap.entrySet().iterator(); iter.hasNext();) {
+            Map.Entry entry= (Map.Entry) iter.next();
+            list += entry.getKey().toString();
+            if (withValues) {
+                list += " " + entry.getValue().toString();    
+            }
+            if (iter.hasNext()) {
+                list += " ";
+            }
+        }
+        list += ")";
+        return list;
+    }
+    
+    public String getExpectedStatusResponse() {
+        return "OK STATUS completed.";
+    }
+
+    protected void selectStatus(String status, boolean add,long value) {
+        if (add) {
+            statusMap.put(status,new Long(value));
+        } else {
+            statusMap.remove(status);
+        }
+    }
+
+    public void setStatusMessages(boolean statusMessages) {
+        selectStatus("MESSAGES", statusMessages,msgs.length);
+    }
+
+    public void setStatusRecent(boolean statusRecent) throws MessagingException {
+
+        selectStatus("RECENT", statusRecent,countFlags(Flags.Flag.RECENT,true));
+    }
+    
+    protected int countFlags(Flags.Flag flag, boolean value) throws MessagingException {
+        int count=0;
+        for (int i = 0; i < msgs.length; i++) {
+            if (msgs[i].getFlags().contains(flag) == value) {
+                count++;
+            }
+        }
+        return count;
+    }
+
+    public void setStatusUidNext(boolean statusUidNext) {
+        selectStatus("UIDNEXT", statusUidNext,uidNext);
+    }
+
+    public void setStatusUidValidity(boolean statusUidValidity) {
+        selectStatus("UIDVALIDITY", statusUidValidity,uidValidity);
+    }
+
+    public void setStatusUnseen(boolean statusUnseen) throws MessagingException {
+        selectStatus("UNSEEN", statusUnseen,countFlags(Flags.Flag.SEEN,false));
+    }
+
+
+
+}

Modified: james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java?view=diff&rev=475653&r1=475652&r2=475653
==============================================================================
--- james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java Thu Nov 16 01:19:43 2006
@@ -118,6 +118,14 @@
         return uidv;
     }
     
+    
+    public long getUidNext(String folder) throws MailboxManagerException {
+        ImapMailboxSession mailbox=getImapMailboxSession(folder);
+        long uidNext=mailbox.getUidNext();
+        mailbox.close();
+        return uidNext;
+    }
+    
     public MimeMessage[] getMessages(String folder) throws MailboxManagerException {
         GeneralMailboxSession mailbox=getImapMailboxSession(folder);
         MessageResult[] messageResults=mailbox.getMessages(GeneralMessageSetImpl.all(),MessageResult.MIME_MESSAGE);

Added: james/server/trunk/src/test/org/apache/james/imapserver/handler/session/StatusSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/imapserver/handler/session/StatusSessionTest.java?view=auto&rev=475653
==============================================================================
--- james/server/trunk/src/test/org/apache/james/imapserver/handler/session/StatusSessionTest.java (added)
+++ james/server/trunk/src/test/org/apache/james/imapserver/handler/session/StatusSessionTest.java Thu Nov 16 01:19:43 2006
@@ -0,0 +1,81 @@
+package org.apache.james.imapserver.handler.session;
+
+import java.io.IOException;
+
+import javax.mail.Flags;
+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.SelectCommand;
+import org.apache.james.imapserver.client.StatusClientCommand;
+import org.apache.james.imapserver.store.MailboxException;
+import org.apache.james.imapserver.util.MessageGenerator;
+import org.apache.james.mailboxmanager.MailboxManagerException;
+
+public class StatusSessionTest extends AbstractSessionTest {
+    
+    String[] folders = {USER_INBOX,USER_MAILBOX_ROOT+".f2"};
+    MimeMessage[] f2_msgs= null;
+    MimeMessage[] inbox_msgs= new MimeMessage[0];
+    
+    boolean setup=false;
+    private long f2_uidV;
+    private long f2_uidNext;
+    
+    public void setUp() throws MailboxManagerException, MailboxException, MessagingException, IOException {
+        super.setUp();
+        f2_msgs=MessageGenerator.generateSimpleMessages(4);
+        createFolders(folders);
+        appendMessagesClosed(folders[1], new MimeMessage[]{f2_msgs[0]});
+        f2_msgs[1].setFlag(Flags.Flag.SEEN, true);
+        f2_msgs[2].setFlag(Flags.Flag.SEEN, true);
+        addUIDMessagesOpen(folders[1], new MimeMessage[]{f2_msgs[1],f2_msgs[2],f2_msgs[3]});
+        f2_uidV = getUidValidity(folders[1]);
+        f2_uidNext = getUidNext(folders[1]);
+    }
+    
+    protected void doTestStatus() throws MessagingException, ProtocolException, IOException {
+        StatusClientCommand statusCommand;
+        
+        // Empty
+        statusCommand = new StatusClientCommand(folders[1],f2_msgs,f2_uidNext,f2_uidV);
+        verifyCommand(statusCommand);
+
+        // One
+        statusCommand = new StatusClientCommand(folders[1],f2_msgs,f2_uidNext,f2_uidV);
+        statusCommand.setStatusMessages(true);
+        verifyCommand(statusCommand);
+        
+        // Some
+        statusCommand = new StatusClientCommand(folders[1],f2_msgs,f2_uidNext,f2_uidV);
+        statusCommand.setStatusMessages(true);
+        statusCommand.setStatusUidNext(true);
+        verifyCommand(statusCommand);
+        
+        // All
+        statusCommand = new StatusClientCommand(folders[1],f2_msgs,f2_uidNext,f2_uidV);
+        statusCommand.setStatusMessages(true);
+        statusCommand.setStatusRecent(true);
+        statusCommand.setStatusUidNext(true);
+        statusCommand.setStatusUidValidity(true);
+        statusCommand.setStatusUnseen(true);
+        verifyCommand(statusCommand);
+    }
+
+    
+    public void testStatusAuthState() throws ProtocolException, IOException, MessagingException {
+        verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+        doTestStatus();
+    }
+    
+    
+    public void testStatusSelectedState() throws ProtocolException, IOException, MessagingException {
+        verifyCommand(new LoginCommand(USER_NAME,USER_PASSWORD));
+        verifyCommand(new SelectCommand("INBOX", inbox_msgs, getUidValidity(USER_INBOX)));
+        doTestStatus();
+    }
+    
+
+}



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