Author: berndf
Date: Mon Jun 26 15:55:48 2006
New Revision: 417309

URL: http://svn.apache.org/viewvc?rev=417309&view=rev
Log:
- add SpoolManagement unit tests

Added:
    
james/server/trunk/src/test/org/apache/james/management/SpoolManagementTest.java
Modified:
    james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java
    
james/server/trunk/src/test/org/apache/james/test/mock/james/MockSpoolRepository.java
    
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java

Modified: 
james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java?rev=417309&r1=417308&r2=417309&view=diff
==============================================================================
--- 
james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java 
(original)
+++ 
james/server/trunk/src/java/org/apache/james/management/SpoolManagement.java 
Mon Jun 26 15:55:48 2006
@@ -26,12 +26,14 @@
 import org.apache.james.services.SpoolManagementService;
 import org.apache.james.services.SpoolRepository;
 import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
 
 import javax.mail.MessagingException;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Collection;
 
 public class SpoolManagement implements Serviceable, SpoolManagementService, 
SpoolManagementMBean {
 
@@ -66,8 +68,10 @@
             if (m.getState().equals(Mail.ERROR)) {
                 StringBuffer itemInfo = new StringBuffer();
                 itemInfo.append("key: ").append(key).append(" sender: 
").append(m.getSender()).append(" recipient:");
-                for (int i = 0; i < m.getRecipients().size(); i++) {
-                    itemInfo.append(" ").append(m.getRecipients());
+                Collection recipients = m.getRecipients();
+                for (Iterator iterator = recipients.iterator(); 
iterator.hasNext();) {
+                    MailAddress mailAddress = (MailAddress) iterator.next();
+                    itemInfo.append(" ").append(mailAddress);
                 }
                 items.add(itemInfo.toString());
             }
@@ -94,7 +98,7 @@
             Iterator spoolR = spoolRepository.list();
 
             while (spoolR.hasNext()) {
-                key = spoolR.next().toString();
+                key = (String)spoolR.next();
                 count = removeMail(spoolRepository, key, count, 
lockingFailures);
             }
         }
@@ -107,7 +111,7 @@
         } catch (IllegalStateException e) {
             lockingFailures.add(key);
         } catch (SpoolManagementException e) {
-            return count; 
+            return count;
         }
         return count;
     }

Added: 
james/server/trunk/src/test/org/apache/james/management/SpoolManagementTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/management/SpoolManagementTest.java?rev=417309&view=auto
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/management/SpoolManagementTest.java
 (added)
+++ 
james/server/trunk/src/test/org/apache/james/management/SpoolManagementTest.java
 Mon Jun 26 15:55:48 2006
@@ -0,0 +1,119 @@
+/***********************************************************************
+ * Copyright (c) 2006 The Apache Software Foundation.                  *
+ * All rights reserved.                                                *
+ * ------------------------------------------------------------------- *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you *
+ * may not use this file except in compliance with the License. You    *
+ * may obtain a copy of the License at:                                *
+ *                                                                     *
+ *     http://www.apache.org/licenses/LICENSE-2.0                      *
+ *                                                                     *
+ * Unless required by applicable law or agreed to in writing, software *
+ * distributed under the License is distributed on an "AS IS" BASIS,   *
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or     *
+ * implied.  See the License for the specific language governing       *
+ * permissions and limitations under the License.                      *
+ ***********************************************************************/
+
+
+package org.apache.james.management;
+
+import junit.framework.TestCase;
+import org.apache.avalon.cornerstone.services.store.Store;
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.james.test.mock.avalon.MockLogger;
+import org.apache.james.test.mock.avalon.MockServiceManager;
+import org.apache.james.test.mock.avalon.MockStore;
+import org.apache.james.test.mock.james.MockSpoolRepository;
+import org.apache.james.test.mock.mailet.MockMail;
+import org.apache.james.test.mock.javaxmail.MockMimeMessage;
+import org.apache.james.test.util.Util;
+import org.apache.mailet.Mail;
+
+import javax.mail.MessagingException;
+
+/**
+ * Tests the SpoolManagement
+ */
+public class SpoolManagementTest extends TestCase {
+
+    protected static final String OUTGOING_SPOOL = "file://var/mail/outgoing";
+
+    private SpoolManagement m_spoolManagement;
+    private MockStore m_mockStore;
+    private MockSpoolRepository m_mockSpoolRepository;
+
+    protected void setUp() throws Exception {
+        m_spoolManagement = new SpoolManagement();
+        ContainerUtil.enableLogging(m_spoolManagement, new MockLogger());
+        ContainerUtil.service(m_spoolManagement, setUpServiceManager());
+    }
+
+    private MockServiceManager setUpServiceManager() {
+        MockServiceManager serviceManager = new MockServiceManager();
+        m_mockStore = new MockStore();
+        serviceManager.put(Store.ROLE, m_mockStore);
+        m_mockSpoolRepository = new MockSpoolRepository();
+        m_mockStore.add("outgoing", m_mockSpoolRepository);
+        return serviceManager;
+    }
+
+    public void testListSpoolItems() throws SpoolManagementException, 
MessagingException {
+        String[] mailList = m_spoolManagement.listSpoolItems(OUTGOING_SPOOL);
+        assertEquals("emtpy spool", 0, mailList.length); // no mail in spool
+
+        MockMail mockMail1 = createSpoolMail(Mail.DEFAULT, "subj1", 1);
+        String messageID1 = mockMail1.getMessage().getMessageID();
+
+        mailList = m_spoolManagement.listSpoolItems(OUTGOING_SPOOL);
+        assertEquals("no error mail in spool", 0, mailList.length); 
+
+        MockMail mockMail2 = createSpoolMail(Mail.ERROR, "subj2", 2);
+        String messageID2 = mockMail2.getMessage().getMessageID();
+
+        mailList = m_spoolManagement.listSpoolItems(OUTGOING_SPOOL);
+        assertEquals("finds only 1 error mail", 1, mailList.length);
+        assertTrue("finds only error mail", mailList[0].indexOf(messageID2) >= 
0);
+    }
+
+    public void testRemoveErrorMails() throws SpoolManagementException, 
MessagingException {
+        MockMail mockMail1 = createSpoolMail(Mail.DEFAULT, "subj1", 1);
+        String messageID1 = mockMail1.getMessage().getMessageID();
+
+        MockMail mockMail2 = createSpoolMail(Mail.ERROR, "subj2", 2);
+        String messageID2 = mockMail2.getMessage().getMessageID();
+
+        MockMail mockMail3 = createSpoolMail(Mail.ERROR, "subj3", 3);
+        String messageID3 = mockMail3.getMessage().getMessageID();
+
+        assertEquals("one mail removed", 2, 
m_spoolManagement.removeSpoolItems(OUTGOING_SPOOL, null));
+        String[] mailList = m_spoolManagement.listSpoolItems(OUTGOING_SPOOL);
+        assertEquals("finds only left non-error mail", 0, mailList.length);
+    }
+
+    public void testRemoveErrorDedicatedMail() throws 
SpoolManagementException, MessagingException {
+        MockMail mockMail1 = createSpoolMail(Mail.DEFAULT, "subj1", 1);
+        String messageID1 = mockMail1.getMessage().getMessageID();
+
+        MockMail mockMail2 = createSpoolMail(Mail.ERROR, "subj2", 2);
+        String messageID2 = mockMail2.getMessage().getMessageID();
+
+        MockMail mockMail3 = createSpoolMail(Mail.ERROR, "subj3", 3);
+        String messageID3 = mockMail3.getMessage().getMessageID();
+
+        assertEquals("one mail removed", 1, 
m_spoolManagement.removeSpoolItems(OUTGOING_SPOOL, messageID3));
+        String[] mailList = m_spoolManagement.listSpoolItems(OUTGOING_SPOOL);
+        assertEquals("still finds 1 error mail", 1, mailList.length);
+        assertTrue("still finds error mail", mailList[0].indexOf(messageID2) 
>= 0);
+    }
+
+    private MockMail createSpoolMail(String state, String subject, int number) 
throws MessagingException {
+        MockMimeMessage mimeMessage = Util.createMimeMessage(subject, number);
+        MockMail mockMail = Util.createMockMail2Recipients(mimeMessage);
+        mockMail.setState(state);
+        m_mockSpoolRepository.store(mockMail);
+        return mockMail;
+    }
+
+
+}

Modified: 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockSpoolRepository.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/MockSpoolRepository.java?rev=417309&r1=417308&r2=417309&view=diff
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockSpoolRepository.java
 (original)
+++ 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockSpoolRepository.java
 Mon Jun 26 15:55:48 2006
@@ -20,65 +20,56 @@
 import org.apache.mailet.Mail;
 
 import javax.mail.MessagingException;
-
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.ArrayList;
 
 public class MockSpoolRepository implements SpoolRepository {
-    public ArrayList storedMails = new ArrayList();
+    public Map storedMails = new LinkedHashMap();
 
     public Mail accept() throws InterruptedException {
-        // TODO Auto-generated method stub
-        return null;
+        throw new java.lang.NoSuchMethodError("method not yet implemented");
     }
 
     public Mail accept(long delay) throws InterruptedException {
-        // TODO Auto-generated method stub
-        return null;
+        throw new java.lang.NoSuchMethodError("method not yet implemented");
     }
 
     public Mail accept(AcceptFilter filter) throws InterruptedException {
-        // TODO Auto-generated method stub
-        return null;
+        throw new java.lang.NoSuchMethodError("method not yet implemented");
     }
 
     public void store(Mail mc) throws MessagingException {
-        
+        storedMails.put(mc.getMessage().getMessageID(), mc);
     }
 
     public Iterator list() throws MessagingException {
-        // TODO Auto-generated method stub
-        return null;
+        return new ArrayList(storedMails.keySet()).iterator(); // iterate over 
clone!
     }
 
     public Mail retrieve(String key) throws MessagingException {
-        // TODO Auto-generated method stub
-        return null;
+        return (Mail)storedMails.get(key);
     }
 
     public void remove(Mail mail) throws MessagingException {
-        // TODO Auto-generated method stub
-        
+        throw new java.lang.NoSuchMethodError("method not yet implemented");
     }
 
     public void remove(Collection mails) throws MessagingException {
-        // TODO Auto-generated method stub
-        
+        throw new java.lang.NoSuchMethodError("method not yet implemented");
     }
 
     public void remove(String key) throws MessagingException {
-        // TODO Auto-generated method stub
-        
+        storedMails.remove(key);
     }
 
     public boolean lock(String key) throws MessagingException {
-        // TODO Auto-generated method stub
-        return false;
+        return true;
     }
 
     public boolean unlock(String key) throws MessagingException {
-        // TODO Auto-generated method stub
-        return false;
+        return true;
     }
 }

Modified: 
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java?rev=417309&r1=417308&r2=417309&view=diff
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java
 (original)
+++ 
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java
 Mon Jun 26 15:55:48 2006
@@ -54,6 +54,11 @@
         super((Session)null);
     }
 
+    public MockMimeMessage(int messageNumber) throws MessagingException {
+        super((Session)null);
+        m_iMessageNumber = messageNumber;
+    }
+
     public MockMimeMessage(MimeMessage mimeMessage) throws MessagingException {
         super(mimeMessage); // trivial implementation
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to