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]