Author: bago
Date: Sat Sep 16 11:21:47 2006
New Revision: 446908
URL: http://svn.apache.org/viewvc?view=rev&rev=446908
Log:
Minor changes to ToMultiRepository and UsersRepositoryAliasingForwarding for
better error reporting and to avoid lookup of not needed services.
Refactored MockMailServer to use an InMemorySpoolRepository for its sentMails
services.
Created a LocalDeliveryTest
Added:
james/server/trunk/src/test/org/apache/james/transport/mailets/LocalDeliveryTest.java
(with props)
Modified:
james/server/trunk/src/java/org/apache/james/transport/mailets/ToMultiRepository.java
james/server/trunk/src/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java
james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
james/server/trunk/src/test/org/apache/james/userrepository/MockUsersRepository.java
Modified:
james/server/trunk/src/java/org/apache/james/transport/mailets/ToMultiRepository.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/ToMultiRepository.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
---
james/server/trunk/src/java/org/apache/james/transport/mailets/ToMultiRepository.java
(original)
+++
james/server/trunk/src/java/org/apache/james/transport/mailets/ToMultiRepository.java
Sat Sep 16 11:21:47 2006
@@ -23,7 +23,6 @@
import org.apache.avalon.cornerstone.services.store.Store;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
-import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.james.Constants;
@@ -31,16 +30,15 @@
import org.apache.james.core.MailImpl;
import org.apache.james.services.MailRepository;
import org.apache.james.services.MailServer;
-import org.apache.mailet.RFC2822Headers;
-
import org.apache.mailet.GenericMailet;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
+import org.apache.mailet.RFC2822Headers;
import javax.mail.Header;
import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetHeaders;
+import javax.mail.internet.MimeMessage;
import java.util.Collection;
import java.util.Enumeration;
@@ -260,15 +258,6 @@
try {
// Instantiate the a MailRepository for outgoing mails
- mailServer = (MailServer) compMgr.lookup(MailServer.ROLE);
- } catch (ServiceException cnfe) {
- log("Failed to retrieve MailServer component:" +
cnfe.getMessage());
- } catch (Exception e) {
- log("Failed to retrieve MailServer component:" + e.getMessage());
- }
-
- try {
- // Instantiate the a MailRepository for outgoing mails
store = (Store) compMgr.lookup(Store.ROLE);
} catch (ServiceException cnfe) {
log("Failed to retrieve Store component:" + cnfe.getMessage());
@@ -281,6 +270,17 @@
repositoryType = getInitParameter("repositoryType");
if (repositoryType == null)
repositoryType = "MAIL";
+ } else {
+
+ try {
+ // Instantiate the a MailRepository for outgoing mails
+ mailServer = (MailServer) compMgr.lookup(MailServer.ROLE);
+ } catch (ServiceException cnfe) {
+ log("Failed to retrieve MailServer component:" +
cnfe.getMessage());
+ } catch (Exception e) {
+ log("Failed to retrieve MailServer component:" +
e.getMessage());
+ }
+
}
deliveryHeader = getInitParameter("addDeliveryHeader");
Modified:
james/server/trunk/src/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
---
james/server/trunk/src/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java
(original)
+++
james/server/trunk/src/java/org/apache/james/transport/mailets/UsersRepositoryAliasingForwarding.java
Sat Sep 16 11:21:47 2006
@@ -28,11 +28,10 @@
import org.apache.james.services.User;
import org.apache.james.services.UsersRepository;
import org.apache.james.services.UsersStore;
-import org.apache.mailet.RFC2822Headers;
-
import org.apache.mailet.GenericMailet;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
+import org.apache.mailet.RFC2822Headers;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@@ -247,11 +246,7 @@
ServiceManager compMgr = (ServiceManager) getMailetContext()
.getAttribute(Constants.AVALON_COMPONENT_MANAGER);
- UsersStore usersStore;
try {
- usersStore = (UsersStore) compMgr.lookup(UsersStore.ROLE);
-
-
enableAliases = new Boolean(getInitParameter("enableAliases",
getMailetContext().getAttribute(Constants.DEFAULT_ENABLE_ALIASES).toString()
)).booleanValue();
@@ -272,6 +267,7 @@
+ e.getMessage());
}
} else {
+ UsersStore usersStore = (UsersStore)
compMgr.lookup(UsersStore.ROLE);
usersRepository = usersStore.getRepository(userRep);
}
Modified:
james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
--- james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
(original)
+++ james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
Sat Sep 16 11:21:47 2006
@@ -45,6 +45,7 @@
import org.apache.james.userrepository.MockUsersRepository;
import org.apache.james.util.Base64;
import org.apache.james.util.connection.SimpleConnectionManager;
+import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import javax.mail.MessagingException;
@@ -151,20 +152,20 @@
}
public void verifyLastMail(String sender, String recipient, MimeMessage
msg) throws IOException, MessagingException {
- Object[] mailData = m_mailServer.getLastMail();
+ Mail mailData = m_mailServer.getLastMail();
assertNotNull("mail received by mail server", mailData);
if (sender == null && recipient == null && msg == null) fail("no
verification can be done with all arguments null");
- if (sender != null) assertEquals("sender verfication", sender,
((MailAddress)mailData[0]).toString());
- if (recipient != null) assertTrue("recipient verfication",
((Collection) mailData[1]).contains(new MailAddress(recipient)));
+ if (sender != null) assertEquals("sender verfication", sender,
((MailAddress)mailData.getSender()).toString());
+ if (recipient != null) assertTrue("recipient verfication",
((Collection) mailData.getRecipients()).contains(new MailAddress(recipient)));
if (msg != null) {
ByteArrayOutputStream bo1 = new ByteArrayOutputStream();
msg.writeTo(bo1);
ByteArrayOutputStream bo2 = new ByteArrayOutputStream();
- ((MimeMessage) mailData[2]).writeTo(bo2);
+ ((MimeMessage) mailData.getMessage()).writeTo(bo2);
assertEquals(bo1.toString(),bo2.toString());
- assertEquals("message verification", msg, ((MimeMessage)
mailData[2]));
+ assertEquals("message verification", msg, ((MimeMessage)
mailData.getMessage()));
}
}
@@ -266,7 +267,7 @@
// not cloning the message (added a MimeMessageCopyOnWriteProxy there)
System.gc();
- int size = ((MimeMessage) m_mailServer.getLastMail()[2]).getSize();
+ int size = ((MimeMessage)
m_mailServer.getLastMail().getMessage()).getSize();
assertEquals(size, 2);
}
@@ -1083,7 +1084,7 @@
verifyLastMail(sender, recipient, null);
- assertEquals(((String) mm.getContent()).trim(),((String)
((MimeMessage) m_mailServer.getLastMail()[2]).getContent()).trim());
+ assertEquals(((String) mm.getContent()).trim(),((String)
((MimeMessage) m_mailServer.getLastMail().getMessage()).getContent()).trim());
mail.dispose();
}
Modified:
james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
---
james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
(original)
+++
james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
Sat Sep 16 11:21:47 2006
@@ -439,5 +439,15 @@
public void dispose() {
clear();
}
+
+ public String toString() {
+ StringBuffer result = new StringBuffer();
+ result.append(super.toString());
+ Iterator i = list();
+ while (i.hasNext()) {
+ result.append("\n\t"+i.next());
+ }
+ return result.toString();
+ }
}
Modified:
james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
---
james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java
(original)
+++
james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java
Sat Sep 16 11:21:47 2006
@@ -21,7 +21,7 @@
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.core.MailImpl;
import org.apache.james.services.MailRepository;
import org.apache.james.services.MailServer;
import org.apache.james.smtpserver.MessageSizeException;
@@ -33,8 +33,13 @@
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
+
import java.io.InputStream;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
public class MockMailServer implements MailServer, Disposable {
@@ -43,7 +48,10 @@
private static int m_counter = 0;
private int m_maxMessageSizeBytes = 0;
- private final ArrayList mails = new ArrayList();
+ // private final ArrayList mails = new ArrayList();
+
+ private final InMemorySpoolRepository mails = new
InMemorySpoolRepository();
+ private String lastMailKey = null;
private HashMap inboxes;
@@ -52,13 +60,21 @@
}
public void sendMail(MailAddress sender, Collection recipients,
MimeMessage msg) throws MessagingException {
- Object[] mailObjects = new Object[]{sender, recipients, new
MimeMessageCopyOnWriteProxy(msg)};
- mails.add(mailObjects);
+ // Object[] mailObjects = new Object[]{sender, recipients, new
MimeMessageCopyOnWriteProxy(msg)};
+// mails.add(mailObjects);
+//
+ String newId = newId();
+ MailImpl m = new MailImpl(newId, sender, recipients, msg);
+ sendMail(m);
+ m.dispose();
}
public void sendMail(MailAddress sender, Collection recipients,
InputStream msg) throws MessagingException {
- Object[] mailObjects = new Object[]{sender, recipients, msg};
- mails.add(mailObjects);
+// Object[] mailObjects = new Object[]{sender, recipients, msg};
+// mails.add(mailObjects);
+ MailImpl m = new MailImpl(newId(), sender, recipients, msg);
+ sendMail(m);
+ m.dispose();
}
public void sendMail(Mail mail) throws MessagingException {
@@ -68,7 +84,10 @@
} catch (MessageSizeException e) {
throw new MessagingException("message size exception is nested",
e);
}
- sendMail(mail.getSender(), mail.getRecipients(), mail.getMessage());
+
+ lastMailKey = mail.getName();
+ mails.store(mail);
+ // sendMail(mail.getSender(), mail.getRecipients(), mail.getMessage());
}
public void sendMail(MimeMessage message) throws MessagingException {
@@ -127,10 +146,15 @@
return "localhost".equals(serverName);
}
- public Object[] getLastMail()
+ public Mail getLastMail()
{
if (mails.size() == 0) return null;
- return (Object[])mails.get(mails.size()-1);
+ try {
+ return mails.retrieve(lastMailKey);
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ return null;
}
public void setMaxMessageSizeBytes(int maxMessageSizeBytes) {
@@ -138,14 +162,15 @@
}
public void dispose() {
- if (mails != null) {
- Iterator i = mails.iterator();
- while (i.hasNext()) {
- Object[] obs = (Object[]) i.next();
- // this is needed to let the MimeMessageWrapper to dispose.
- ContainerUtil.dispose(obs[2]);
- }
- }
+// if (mails != null) {
+// Iterator i = mails.iterator();
+// while (i.hasNext()) {
+// Object[] obs = (Object[]) i.next();
+// // this is needed to let the MimeMessageWrapper to dispose.
+// ContainerUtil.dispose(obs[2]);
+// }
+// }
+ mails.dispose();
if (inboxes!=null) {
Iterator i = inboxes.values().iterator();
while (i.hasNext()) {
@@ -153,6 +178,10 @@
ContainerUtil.dispose(m);
}
}
+ }
+
+ public MailRepository getSentMailsRepository() {
+ return mails;
}
}
Modified:
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
---
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
(original)
+++
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
Sat Sep 16 11:21:47 2006
@@ -95,19 +95,19 @@
}
public void sendMail(MimeMessage msg) throws MessagingException {
- // trivial implementation
+ throw new UnsupportedOperationException("MOCKed method");
}
public void sendMail(MailAddress sender, Collection recipients,
MimeMessage msg) throws MessagingException {
- // trivial implementation
+ throw new UnsupportedOperationException("MOCKed method");
}
public void sendMail(MailAddress sender, Collection recipients,
MimeMessage msg, String state) throws MessagingException {
- // trivial implementation
+ throw new UnsupportedOperationException("MOCKed method");
}
public void sendMail(Mail mail) throws MessagingException {
- // trivial implementation
+ throw new UnsupportedOperationException("MOCKed method");
}
public void setAttribute(String name, Object object) {
Added:
james/server/trunk/src/test/org/apache/james/transport/mailets/LocalDeliveryTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/transport/mailets/LocalDeliveryTest.java?view=auto&rev=446908
==============================================================================
---
james/server/trunk/src/test/org/apache/james/transport/mailets/LocalDeliveryTest.java
(added)
+++
james/server/trunk/src/test/org/apache/james/transport/mailets/LocalDeliveryTest.java
Sat Sep 16 11:21:47 2006
@@ -0,0 +1,331 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you 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.transport.mailets;
+
+import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.james.Constants;
+import org.apache.james.core.MailImpl;
+import org.apache.james.services.MailRepository;
+import org.apache.james.services.MailServer;
+import org.apache.james.services.UsersRepository;
+import org.apache.james.test.mock.avalon.MockServiceManager;
+import org.apache.james.test.mock.james.InMemorySpoolRepository;
+import org.apache.james.test.mock.james.MockMailServer;
+import org.apache.james.test.mock.javaxmail.MockMimeMessage;
+import org.apache.james.test.mock.mailet.MockMail;
+import org.apache.james.test.mock.mailet.MockMailContext;
+import org.apache.james.test.mock.mailet.MockMailetConfig;
+import org.apache.james.userrepository.DefaultJamesUser;
+import org.apache.james.userrepository.MockUsersRepository;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.Mailet;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.ParseException;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+/**
+ * Test LocalDelivery Mailet
+ */
+public class LocalDeliveryTest extends TestCase {
+
+ private HashMap mailboxes;
+ private MockMailContext mockMailetContext;
+ private MockServiceManager mockServiceManager;
+ private MockMailServer mockMailServer;
+
+ public void testUnknownUser() throws MessagingException {
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("errors", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+
+ public void testSimpleDelivery() throws MessagingException {
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("localuser", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+ public void testSimpleAliasDelivery() throws MessagingException {
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_ALIASES,
Boolean.TRUE);
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("localuser", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+ public void testSimpleAliasWithDisabledAlias() throws MessagingException {
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("aliasedUser", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+
+ public void testForwardingWithForwardingDisabled() throws
MessagingException {
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("errors", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+
+ public void testForwarding() throws MessagingException {
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_FORWARDING,
Boolean.TRUE);
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("resent", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+ public void testAliasingForwarding() throws MessagingException {
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_FORWARDING,
Boolean.TRUE);
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_ALIASES,
Boolean.TRUE);
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("resent", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+ public void testForwardingToLocal() throws MessagingException {
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_FORWARDING,
Boolean.TRUE);
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_ALIASES,
Boolean.TRUE);
+ //mockMailetConfig.setProperty(key, value)
+ Mailet m = getMailet();
+
+ Mail mail = createMail(new String[] {"[EMAIL PROTECTED]"});
+ m.service(mail);
+
+ HashMap expectedMails = new HashMap();
+ expectedMails.put("resent", new String[] {"[EMAIL PROTECTED]"});
+
+ assertDeliveryWorked(mail, expectedMails);
+ }
+
+ /**
+ * @throws ParseException
+ *
+ */
+ public void setUp() throws ParseException {
+ mockServiceManager = new MockServiceManager();
+ MockUsersRepository mockUsersRepository = new MockUsersRepository();
+ mockUsersRepository.setForceUseJamesUser();
+ mockUsersRepository.addUser("localuser", "password");
+ mockUsersRepository.addUser("aliasedUser", "pass2");
+ DefaultJamesUser u = (DefaultJamesUser)
mockUsersRepository.getUserByName("aliasedUser");
+ u.setAliasing(true);
+ u.setAlias("localuser");
+ mockUsersRepository.addUser("forwardingUser", "pass2");
+ u = (DefaultJamesUser)
mockUsersRepository.getUserByName("forwardingUser");
+ u.setForwarding(true);
+ u.setForwardingDestination(new MailAddress("[EMAIL PROTECTED]"));
+ mockUsersRepository.addUser("aliasForwardUser", "pass2");
+ u = (DefaultJamesUser)
mockUsersRepository.getUserByName("aliasForwardUser");
+ u.setAliasing(true);
+ u.setAlias("localuser");
+ u.setForwarding(true);
+ u.setForwardingDestination(new MailAddress("[EMAIL PROTECTED]"));
+ mockUsersRepository.addUser("forwardToLocal", "pass2");
+ u = (DefaultJamesUser)
mockUsersRepository.getUserByName("forwardToLocal");
+ u.setForwarding(true);
+ u.setForwardingDestination(new MailAddress("[EMAIL PROTECTED]"));
+ mockServiceManager.put(UsersRepository.ROLE,mockUsersRepository);
+ mockMailServer = new MockMailServer();
+ mailboxes = new HashMap();
+ mailboxes.put("localuser", new InMemorySpoolRepository());
+ mailboxes.put("aliasedUser", new InMemorySpoolRepository());
+ Iterator mbi = mailboxes.keySet().iterator();
+ while (mbi.hasNext()) {
+ String mboxName = (String) mbi.next();
+ mockMailServer.setUserInbox(mboxName, (MailRepository)
mailboxes.get(mboxName));
+ }
+ mockServiceManager.put(MailServer.ROLE, mockMailServer);
+
+ mockMailetContext = new MockMailContext() {
+
+ public void sendMail(MailAddress sender, Collection recipients,
MimeMessage msg) throws MessagingException {
+ mockMailServer.sendMail(sender, recipients, msg);
+ }
+
+ public void sendMail(MailAddress sender, Collection recipients,
MimeMessage msg, String state) throws MessagingException {
+ MailImpl m = new MailImpl(MockMailServer.newId(), sender,
recipients, msg);
+ m.setState(state);
+ mockMailServer.sendMail(m);
+ m.dispose();
+ }
+
+ };
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_ALIASES,
Boolean.FALSE);
+ mockMailetContext.setAttribute(Constants.DEFAULT_ENABLE_FORWARDING,
Boolean.FALSE);
+ mockMailetContext.setAttribute(Constants.DEFAULT_IGNORE_USERNAME_CASE,
Boolean.FALSE);
+ mockMailetContext.setAttribute(Constants.AVALON_COMPONENT_MANAGER,
mockServiceManager);
+ }
+
+ public void tearDown() {
+ mockMailetContext = null;
+ mailboxes = null;
+ mockServiceManager = null;
+ }
+
+ /**
+ * @param mail
+ * @param expectedMails
+ * @throws MessagingException
+ */
+ private void assertDeliveryWorked(Mail mail, HashMap expectedMails) throws
MessagingException {
+ assertEquals(Mail.GHOST, mail.getState());
+ Iterator mboxes = mailboxes.keySet().iterator();
+ while (mboxes.hasNext()) {
+ String mboxName = (String) mboxes.next();
+ MailRepository inMemorySpoolRepository = (MailRepository)
mailboxes.get(mboxName);
+ assertExpectedMailsInRepository(mail, (String[])
expectedMails.get(mboxName), inMemorySpoolRepository);
+
+ }
+
+ MailRepository sentMailsRepository =
mockMailServer.getSentMailsRepository();
+ MailRepository errorsMailRepository = new InMemorySpoolRepository();
+
+ Iterator keys = sentMailsRepository.list();
+ while (keys.hasNext()) {
+ String nextKey = (String) keys.next();
+ Mail m = sentMailsRepository.retrieve(nextKey);
+ if (Mail.ERROR.equals(m.getState())) {
+ errorsMailRepository.store(m);
+ sentMailsRepository.remove(nextKey);
+ } else {
+ assertEquals("Found a mail in outgoing having a state
different from ERROR or ROOT", Mail.DEFAULT, m.getState());
+ }
+
+ ContainerUtil.dispose(m);
+ }
+
+ assertExpectedMailsInRepository(mail, (String[])
expectedMails.get("resent"), sentMailsRepository);
+ assertExpectedMailsInRepository(mail, (String[])
expectedMails.get("errors"), errorsMailRepository);
+
+ ContainerUtil.dispose(errorsMailRepository);
+ }
+
+
+ /**
+ * @param mail
+ * @param expectedMails
+ * @param mboxName
+ * @param inMemorySpoolRepository
+ * @throws MessagingException
+ */
+ private void assertExpectedMailsInRepository(Mail mail, String[]
expectedDeliveries, MailRepository inMemorySpoolRepository) throws
MessagingException {
+ List c = expectedDeliveries != null ? new
ArrayList(Arrays.asList(expectedDeliveries)) : new ArrayList();
+ Iterator i = inMemorySpoolRepository.list();
+ System.out.println("check: "+c.size()+"|"+inMemorySpoolRepository);
+ for (int j = 0; j < c.size(); j++) {
+ assertTrue("No mails have been found in the repository",
i.hasNext());
+ String next = (String) i.next();
+ assertNotNull("Mail has not been stored", next);
+ Mail storedMail = inMemorySpoolRepository.retrieve(next);
+ assertNotNull("Mail cannot be retrieved", storedMail);
+ String recipient =
storedMail.getRecipients().iterator().next().toString();
+ assertTrue("Message has been delivered to the wrong user",
c.contains(recipient));
+ c.remove(recipient);
+ }
+ assertEquals("Message has not been delivered to all expected
recipients", c.size(), 0);
+ if (i.hasNext()) {
+ String tooMuch = (String) i.next();
+ Mail m = inMemorySpoolRepository.retrieve(tooMuch);
+ fail("Found unexpected mail for recipient
"+m.getRecipients().iterator().next().toString()+"!");
+ }
+ }
+
+ /**
+ * @return
+ * @throws MessagingException
+ */
+ private Mail createMail(String[] recipients) throws MessagingException {
+ Mail mail = new MockMail();
+ ArrayList a = new ArrayList(recipients.length);
+ for (int i = 0; i < recipients.length; i++) {
+ a.add(new MailAddress(recipients[i]));
+ }
+ mail.setRecipients(a);
+ mail.setMessage(new MockMimeMessage());
+ return mail;
+ }
+
+ public Mailet getMailet() throws MessagingException {
+ MockMailetConfig mockMailetConfig = new
MockMailetConfig("TestedLocalDelivery", mockMailetContext);
+ Mailet m = new LocalDelivery();
+ m.init(mockMailetConfig);
+ return m;
+ }
+}
Propchange:
james/server/trunk/src/test/org/apache/james/transport/mailets/LocalDeliveryTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
james/server/trunk/src/test/org/apache/james/userrepository/MockUsersRepository.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/userrepository/MockUsersRepository.java?view=diff&rev=446908&r1=446907&r2=446908
==============================================================================
---
james/server/trunk/src/test/org/apache/james/userrepository/MockUsersRepository.java
(original)
+++
james/server/trunk/src/test/org/apache/james/userrepository/MockUsersRepository.java
Sat Sep 16 11:21:47 2006
@@ -111,7 +111,7 @@
}
public String getRealName(String name) {
- return ((User) m_users.get(name)).getUserName();
+ return m_users.get(name) != null ? ((User)
m_users.get(name)).getUserName() : null;
}
public boolean updateUser(User user) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]