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