Added: 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersRepository.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersRepository.java?rev=365388&view=auto
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersRepository.java
 (added)
+++ 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersRepository.java
 Mon Jan  2 10:25:59 2006
@@ -0,0 +1,95 @@
+/***********************************************************************
+ * Copyright (c) 2000-2005 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.test.mock.james;
+
+import org.apache.james.security.DigestUtil;
+import org.apache.james.services.User;
+import org.apache.james.services.UsersRepository;
+import org.apache.james.userrepository.DefaultUser;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class MockUsersRepository implements UsersRepository {
+
+    private final HashMap m_users = new HashMap();
+
+    public boolean addUser(User user) {
+        String key = user.getUserName();
+        if (m_users.containsKey(key)) return false;
+        m_users.put(key, user);
+        return true; 
+    }
+
+    public void addUser(String name, Object attributes) {
+        try {
+            addUser(new DefaultUser(name, 
DigestUtil.digestString(((String)attributes), "SHA"), "SHA"));
+        } catch (Exception e) {
+            e.printStackTrace();  // encoding failed
+        }
+    }
+
+    public Object getAttributes(String name) {
+        return null;  // trivial implementation
+    }
+
+    public User getUserByName(String name) {
+        return (User) m_users.get(name);
+    }
+
+    public User getUserByNameCaseInsensitive(String name) {
+        return null;  // trivial implementation
+    }
+
+    public String getRealName(String name) {
+        return ((User) m_users.get(name)).getUserName();
+    }
+
+    public boolean updateUser(User user) {
+        return false;  // trivial implementation
+    }
+
+    public void removeUser(String name) {
+        // trivial implementation
+    }
+
+    public boolean contains(String name) {
+        return m_users.containsKey(name);
+    }
+
+    public boolean containsCaseInsensitive(String name) {
+        return false;  // trivial implementation
+    }
+
+    public boolean test(String name, Object attributes) {
+        return false;  // trivial implementation
+    }
+
+    public boolean test(String name, String password) {
+        User user = getUserByName(name);
+        if (user == null) return false;
+        return user.verifyPassword(password);
+    }
+
+    public int countUsers() {
+        return m_users.size();
+    }
+
+    public Iterator list() {
+        return m_users.values().iterator();
+    }
+}

Added: 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersStore.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersStore.java?rev=365388&view=auto
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersStore.java
 (added)
+++ 
james/server/trunk/src/test/org/apache/james/test/mock/james/MockUsersStore.java
 Mon Jan  2 10:25:59 2006
@@ -0,0 +1,43 @@
+/***********************************************************************
+ * Copyright (c) 2000-2005 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.test.mock.james;
+
+import org.apache.james.services.UsersStore;
+import org.apache.james.services.UsersRepository;
+
+import java.util.Iterator;
+import java.util.ArrayList;
+
+public class MockUsersStore implements UsersStore {
+    private UsersRepository m_usersRepository;
+
+    public MockUsersStore(UsersRepository usersRepository) {
+        m_usersRepository = usersRepository;
+    }
+
+    public UsersRepository getRepository(String name) {
+        return m_usersRepository;
+    }
+
+    public Iterator getRepositoryNames() {
+        ArrayList repositoryList = new ArrayList();
+        repositoryList.add(m_usersRepository);
+        return repositoryList.iterator();
+    }
+}

Added: 
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java?rev=365388&view=auto
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java
 (added)
+++ 
james/server/trunk/src/test/org/apache/james/test/mock/javaxmail/MockMimeMessage.java
 Mon Jan  2 10:25:59 2006
@@ -0,0 +1,468 @@
+/***********************************************************************
+ * Copyright (c) 2000-2005 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.test.mock.javaxmail;
+
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.InternetHeaders;
+import javax.mail.internet.InternetAddress;
+import javax.mail.*;
+import javax.mail.search.SearchTerm;
+import javax.activation.DataHandler;
+import java.util.*;
+import java.io.InputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+
+public class MockMimeMessage extends MimeMessage {
+
+    private final List m_fromAddresses = new ArrayList();
+    private Address m_senderAddress;
+    private final List m_toRecepients = new ArrayList();
+    private final List m_ccRecepients = new ArrayList();
+    private final List m_bccRecepients = new ArrayList();
+    private final List m_replyToAddresses = new ArrayList();
+    private String m_subject;
+    private int m_iMessageNumber;
+    private boolean m_bIsExpunged;
+    private Object m_content;
+    private Date m_sentDate;
+    private String[] m_contentLanguage;
+    private String m_fileName;
+    private DataHandler m_dataHandler;
+    private HashMap m_contentHeaders = new HashMap();
+    private Flags m_setFlags = new Flags();
+    private boolean m_doMatch;
+
+    public MockMimeMessage() throws MessagingException {
+        super((Session)null);
+    }
+
+    public MockMimeMessage(MimeMessage mimeMessage) throws MessagingException {
+        super(mimeMessage); // trivial implementation
+    }
+
+    public Address[] getFrom() throws MessagingException {
+        return (Address[])m_fromAddresses.toArray();
+    }
+
+    public void setFrom(Address address) throws MessagingException {
+        m_fromAddresses.clear();
+        m_fromAddresses.add(address);
+    }
+
+    public void setFrom() throws MessagingException {
+        m_fromAddresses.clear();
+        m_fromAddresses.add(InternetAddress.getLocalAddress(null));
+    }
+
+    public void addFrom(Address[] addresses) throws MessagingException {
+        m_fromAddresses.add(addresses);
+    }
+
+    public Address getSender() throws MessagingException {
+        return m_senderAddress;
+    }
+
+    public void setSender(Address address) throws MessagingException {
+        m_senderAddress = address;
+    }
+
+    public Address[] getRecipients(Message.RecipientType recipientType) throws 
MessagingException {
+        return (Address[]) getRecipientsList(recipientType).toArray();
+    }
+
+    private List getRecipientsList(Message.RecipientType recipientType) {
+        if (Message.RecipientType.TO.equals(recipientType)) return 
m_toRecepients; 
+        if (Message.RecipientType.CC.equals(recipientType)) return 
m_ccRecepients; 
+        if (Message.RecipientType.BCC.equals(recipientType)) return 
m_bccRecepients;
+        return null;
+    }
+    
+    public Address[] getAllRecipients() throws MessagingException {
+        List allRecipients = new ArrayList();
+        allRecipients.addAll(m_toRecepients);
+        allRecipients.addAll(m_ccRecepients);
+        allRecipients.addAll(m_bccRecepients);
+        return (Address[]) allRecipients.toArray();
+    }
+
+    public void setRecipients(Message.RecipientType recipientType, Address[] 
addresses) throws MessagingException {
+        getRecipientsList(recipientType).addAll(Arrays.asList(addresses));
+    }
+
+    public void setRecipients(Message.RecipientType recipientType, String 
recipient) throws MessagingException {
+        getRecipientsList(recipientType).add(recipient);
+    }
+
+    public void addRecipients(Message.RecipientType recipientType, Address[] 
addresses) throws MessagingException {
+        getRecipientsList(recipientType).addAll(Arrays.asList(addresses));
+    }
+
+    public void addRecipients(Message.RecipientType recipientType, String 
recipient) throws MessagingException {
+        getRecipientsList(recipientType).add(recipient);
+    }
+
+    public Address[] getReplyTo() throws MessagingException {
+        return (Address[]) m_replyToAddresses.toArray();
+    }
+
+    public void setReplyTo(Address[] addresses) throws MessagingException {
+        m_replyToAddresses.addAll(Arrays.asList(addresses));
+    }
+
+    public String getSubject() throws MessagingException {
+        return m_subject;
+    }
+
+    public void setSubject(String subject) throws MessagingException {
+        m_subject = subject;
+    }
+
+    public void setSubject(String subject, String charset) throws 
MessagingException {
+        if (subject == null)
+        {
+            m_subject = null;
+            return;
+        }
+        try {
+            m_subject = new String(subject.getBytes(charset));
+        } catch (UnsupportedEncodingException e) {
+            throw new MessagingException("setting subject failed", e);
+        }
+    }
+
+    public Date getSentDate() throws MessagingException {
+        return m_sentDate;
+    }
+
+    public void setSentDate(Date date) throws MessagingException {
+        m_sentDate = date;
+    }
+
+    public Date getReceivedDate() throws MessagingException {
+        return null; // trivial implementation
+    }
+
+    public int getSize() throws MessagingException {
+        return -1; // trivial implementation
+    }
+
+    public int getLineCount() throws MessagingException {
+        return -1; // trivial implementation
+    }
+
+    public String getContentType() throws MessagingException {
+        return getHeader("Content-Type", null);
+    }
+
+    public boolean isMimeType(String mimeType) throws MessagingException {
+        return mimeType.startsWith(getContentType());
+    }
+
+    public String getDisposition() throws MessagingException {
+        return getHeader("Content-Disposition", null);
+    }
+
+    public void setDisposition(String disposition) throws MessagingException {
+        setHeader("Content-Disposition", disposition);
+    }
+
+    public String getEncoding() throws MessagingException {
+        return getHeader("Content-Transfer-Encoding", null);
+    }
+
+    public String getContentID() throws MessagingException {
+        return getHeader("Content-ID", null);
+    }
+
+    public void setContentID(String contentID) throws MessagingException {
+        setHeader("Content-ID", contentID);
+    }
+
+    public String getContentMD5() throws MessagingException {
+        return getHeader("Content-MD5", null);
+    }
+
+    public void setContentMD5(String value) throws MessagingException {
+        setHeader("Content-MD5", value);
+    }
+
+    public String getDescription() throws MessagingException {
+        return getHeader("Content-Description", null);
+    }
+
+    public void setDescription(String description) throws MessagingException { 
+        setHeader("Content-Description", description);
+    }
+
+    public void setDescription(String description, String charset) throws 
MessagingException {
+        try {
+            setDescription(new String(description.getBytes(charset)));
+        } catch (UnsupportedEncodingException e) {
+            throw new MessagingException("setting description failed", e);
+        }
+    }
+
+    public String[] getContentLanguage() throws MessagingException {
+        return m_contentLanguage;
+    }
+
+    public void setContentLanguage(String[] contentLanguage) throws 
MessagingException {
+        m_contentLanguage = contentLanguage;
+    }
+
+    public String getMessageID() throws MessagingException {
+        return "ID-" + m_iMessageNumber; // trivial implementation
+    }
+
+    public String getFileName() throws MessagingException {
+        return m_fileName;
+    }
+
+    public void setFileName(String fileName) throws MessagingException {
+        m_fileName = fileName;
+    }
+
+    public InputStream getInputStream() throws IOException, MessagingException 
{
+        return null; // trivial implementation
+    }
+
+    protected InputStream getContentStream() throws MessagingException {
+        return null; // trivial implementation
+    }
+
+    public InputStream getRawInputStream() throws MessagingException {
+        return null; // trivial implementation
+    }
+
+    public synchronized DataHandler getDataHandler() throws MessagingException 
{
+        return m_dataHandler;
+    }
+
+    public synchronized void setDataHandler(DataHandler dataHandler) throws 
MessagingException {
+        m_dataHandler = dataHandler;
+    }
+
+    public Object getContent() throws IOException, MessagingException {
+        return m_content;
+    }
+
+    public void setContent(Object object, String mimeType) throws 
MessagingException {
+        m_content = object;  // trivial implementation
+    }
+
+    public void setText(String string) throws MessagingException {
+        setContent(string, "text/plain");
+    }
+
+    public void setText(String string, String charset) throws 
MessagingException {
+        try {
+            setContent(new String(string.getBytes(charset)) , "text/plain");
+        } catch (UnsupportedEncodingException e) {
+            throw new MessagingException("setting text content failed", e);
+        }
+    }
+
+    public void setContent(Multipart multipart) throws MessagingException {
+        m_content = multipart;
+    }
+
+    public Message reply(boolean b) throws MessagingException {
+        return new MockMimeMessage(this); // trivial implementation
+    }
+
+    public void writeTo(OutputStream outputStream) throws IOException, 
MessagingException {
+        ; // trivial implementation
+    }
+
+    public void writeTo(OutputStream outputStream, String[] strings) throws 
IOException, MessagingException {
+        ; // trivial implementation
+    }
+
+    public String[] getHeader(String name) throws MessagingException {
+        String value = (String) m_contentHeaders.get(name);
+        if (value == null) return null;
+        return new String[] {value};
+    }
+
+    public String getHeader(String name, String delimiter) throws 
MessagingException {
+        String[] header = getHeader(name);
+        if (header.length == 0) return null;
+        return header[0];
+    }
+
+    public void setHeader(String name, String value) throws MessagingException 
{
+        addHeader(name, value);
+    }
+
+    public void addHeader(String name, String value) throws MessagingException 
{
+        m_contentHeaders.put(name, value);
+    }
+
+    public void removeHeader(String name) throws MessagingException {
+        m_contentHeaders.remove(name);
+    }
+
+    public Enumeration getAllHeaders() throws MessagingException {
+        return Collections.enumeration(m_contentHeaders.values());
+    }
+
+    public Enumeration getMatchingHeaders(String[] names) throws 
MessagingException {
+        ArrayList matchingHeaders = new ArrayList();
+        for (int i = 0; i < names.length; i++) {
+            String name = names[i];
+            String value = getHeader(name, null);
+            if (value == null) continue;
+            matchingHeaders.add(value);
+        }
+        return Collections.enumeration(matchingHeaders); 
+    }
+
+    public Enumeration getNonMatchingHeaders(String[] names) throws 
MessagingException {
+        List existingHeaders = Arrays.asList(names);
+
+        ArrayList nonMatchingHeaders = new ArrayList();
+        
+        Iterator iterator = m_contentHeaders.keySet().iterator();
+        while (iterator.hasNext()) {
+            String name = (String) iterator.next();
+            if (existingHeaders.contains(name)) continue;
+            String value = getHeader(name, null);
+            if (value == null) continue;
+            nonMatchingHeaders.add(value);
+        }
+        return Collections.enumeration(nonMatchingHeaders); 
+    }
+
+    public void addHeaderLine(String headerLine) throws MessagingException {
+        int separatorIndex = headerLine.indexOf(":");
+        if (separatorIndex < 0) throw new MessagingException("header line does 
not conform to standard");
+        
+        addHeader(headerLine.substring(0,separatorIndex), 
headerLine.substring(separatorIndex,headerLine.length()));
+    }
+
+    public Enumeration getAllHeaderLines() throws MessagingException {
+        return Collections.enumeration(getHeadersAsStrings(m_contentHeaders));
+    }
+
+    private ArrayList getHeadersAsStrings(HashMap contentHeaders) {
+        ArrayList headerLines = new ArrayList();
+        Iterator iterator = contentHeaders.keySet().iterator();
+        while (iterator.hasNext()) {
+            String key = (String) iterator.next();
+            String value = (String) contentHeaders.get(key);
+            headerLines.add(key + ":" + value);
+        }
+        return headerLines;
+    }
+
+    public Enumeration getMatchingHeaderLines(String[] names) throws 
MessagingException {
+        ArrayList matchingHeaders = new ArrayList();
+        for (int i = 0; i < names.length; i++) {
+            String name = names[i];
+            String value = getHeader(name, null);
+            if (value == null) continue;
+            matchingHeaders.add(name + ":" + value);
+        }
+        return Collections.enumeration(matchingHeaders); 
+    }
+
+    public Enumeration getNonMatchingHeaderLines(String[] names) throws 
MessagingException {
+        List existingHeaders = Arrays.asList(names);
+
+        ArrayList nonMatchingHeaders = new ArrayList();
+        
+        Iterator iterator = m_contentHeaders.keySet().iterator();
+        while (iterator.hasNext()) {
+            String name = (String) iterator.next();
+            if (existingHeaders.contains(name)) continue;
+            String value = getHeader(name, null);
+            if (value == null) continue;
+            nonMatchingHeaders.add(name + ":" + value);
+        }
+        return Collections.enumeration(nonMatchingHeaders); 
+    }
+
+    public synchronized Flags getFlags() throws MessagingException {
+        return new Flags(m_setFlags);
+    }
+
+    public synchronized boolean isSet(Flags.Flag flag) throws 
MessagingException {
+        return m_setFlags.contains(flag);
+    }
+
+    public synchronized void setFlags(Flags flags, boolean set) throws 
MessagingException {
+        if (set) m_setFlags.add(flags);
+        else m_setFlags.remove(flags);
+    }
+
+    public void saveChanges() throws MessagingException {
+        ; // trivial implementation
+    }
+
+    protected void updateHeaders() throws MessagingException {
+        ; // trivial implementation 
+    }
+
+    protected InternetHeaders createInternetHeaders(InputStream inputStream) 
throws MessagingException {
+        return new InternetHeaders();
+    }
+
+    public void setRecipient(Message.RecipientType recipientType, Address 
address) throws MessagingException {
+        setRecipients(recipientType, new Address[]{address});
+    }
+
+    public void addRecipient(Message.RecipientType recipientType, Address 
address) throws MessagingException {
+        setRecipients(recipientType, new Address[]{address});
+    }
+
+    public void setFlag(Flags.Flag flag, boolean set) throws 
MessagingException {
+        if (set) m_setFlags.add(flag);
+        else m_setFlags.remove(flag);
+    }
+
+    public int getMessageNumber() {
+        return m_iMessageNumber;
+    }
+
+    protected void setMessageNumber(int i) {
+        m_iMessageNumber = i;
+    }
+
+    public Folder getFolder() {
+        return null;
+    }
+
+    public boolean isExpunged() {
+        return m_bIsExpunged;
+    }
+
+    protected void setExpunged(boolean b) {
+        m_bIsExpunged = b;
+    }
+
+    public void setShouldMatch(boolean doMatch) {
+        m_doMatch = doMatch;
+    }
+    
+    public boolean match(SearchTerm searchTerm) throws MessagingException {
+        return m_doMatch; 
+    }
+}

Added: 
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java?rev=365388&view=auto
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
 (added)
+++ 
james/server/trunk/src/test/org/apache/james/test/mock/mailet/MockMailContext.java
 Mon Jan  2 10:25:59 2006
@@ -0,0 +1,113 @@
+/***********************************************************************
+ * Copyright (c) 1999-2005 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.test.mock.mailet;
+
+import org.apache.mailet.MailetContext;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.util.Collection;
+import java.util.Iterator;
+
+public class MockMailContext implements MailetContext {
+
+    public void bounce(Mail mail, String message) throws MessagingException {
+        // trivial implementation
+    }
+
+    public void bounce(Mail mail, String message, MailAddress bouncer) throws 
MessagingException {
+        // trivial implementation
+    }
+
+    public Collection getMailServers(String host) {
+        return null;  // trivial implementation
+    }
+
+    public MailAddress getPostmaster() {
+        return null;  // trivial implementation
+    }
+
+    public Object getAttribute(String name) {
+        return null;  // trivial implementation
+    }
+
+    public Iterator getAttributeNames() {
+        return null;  // trivial implementation
+    }
+
+    public int getMajorVersion() {
+        return 0;  // trivial implementation
+    }
+
+    public int getMinorVersion() {
+        return 0;  // trivial implementation
+    }
+
+    public String getServerInfo() {
+        return null;  // trivial implementation
+    }
+
+    public boolean isLocalServer(String serverName) {
+        return false;  // trivial implementation
+    }
+
+    public boolean isLocalUser(String userAccount) {
+        return false;  // trivial implementation
+    }
+
+    public void log(String message) {
+        // trivial implementation
+    }
+
+    public void log(String message, Throwable t) {
+        // trivial implementation
+    }
+
+    public void removeAttribute(String name) {
+        // trivial implementation
+    }
+
+    public void sendMail(MimeMessage msg) throws MessagingException {
+        // trivial implementation
+    }
+
+    public void sendMail(MailAddress sender, Collection recipients, 
MimeMessage msg) throws MessagingException {
+        // trivial implementation
+    }
+
+    public void sendMail(MailAddress sender, Collection recipients, 
MimeMessage msg, String state) throws MessagingException {
+        // trivial implementation
+    }
+
+    public void sendMail(Mail mail) throws MessagingException {
+        // trivial implementation
+    }
+
+    public void setAttribute(String name, Object object) {
+        // trivial implementation
+    }
+
+    public void storeMail(MailAddress sender, MailAddress recipient, 
MimeMessage msg) throws MessagingException {
+        // trivial implementation
+    }
+
+    public Iterator getSMTPHostAddresses(String domainName) {
+        return null;  // trivial implementation
+    }
+}

Added: james/server/trunk/src/test/org/apache/james/test/util/Util.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/test/util/Util.java?rev=365388&view=auto
==============================================================================
--- james/server/trunk/src/test/org/apache/james/test/util/Util.java (added)
+++ james/server/trunk/src/test/org/apache/james/test/util/Util.java Mon Jan  2 
10:25:59 2006
@@ -0,0 +1,33 @@
+/***********************************************************************
+ * Copyright (c) 1999-2005 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.test.util;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.DefaultConfiguration;
+
+public class Util {
+    
+    public static int getRandomNonPrivilegedPort() {
+        return ((int)( Math.random() * 1000) + 3000);
+    }
+    
+    public static Configuration getValuedConfiguration(String name, String 
value) {
+        DefaultConfiguration defaultConfiguration = new 
DefaultConfiguration(name);
+        defaultConfiguration.setValue(value);
+        return defaultConfiguration;
+    }
+}

Added: 
james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java
URL: 
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java?rev=365388&view=auto
==============================================================================
--- 
james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java 
(added)
+++ 
james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java 
Mon Jan  2 10:25:59 2006
@@ -0,0 +1,202 @@
+/***********************************************************************
+ * Copyright (c) 1999-2005 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.transport;
+
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.james.core.MailImpl;
+import org.apache.james.core.MimeMessageInputStreamSource;
+import org.apache.james.core.MimeMessageWrapper;
+import org.apache.james.test.mock.james.MockSpoolRepository;
+import org.apache.james.test.mock.mailet.MockMailContext;
+import org.apache.james.transport.mailets.debug.DumpSystemErr;
+import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.RecipientIs;
+import org.apache.mailet.GenericMailet;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.Mailet;
+import org.apache.mailet.MailetConfig;
+import org.apache.mailet.MailetContext;
+import org.apache.mailet.Matcher;
+import org.apache.mailet.MatcherConfig;
+
+import com.sun.mail.util.SharedByteArrayInputStream;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.ParseException;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+/**
+ * Currently here as a proof of JAMES-421.
+ * Fixing code will follow
+ */
+public class LinearProcessorTest extends TestCase {
+    Collection c;
+    LinearProcessor t;
+    MimeMessage mw = null;
+    String content = "Subject: test\r\nContent-Transfer-Encoding: plain";
+    String sep = "\r\n\r\n";
+    String body = "original body\r\n.\r\n";
+    MailetContext       mockContext = new MockMailContext();
+
+    public static int counter = 0;
+    
+    
+    
+    private class CheckerMailet extends GenericMailet {
+        
+        public ArrayList receivedMails = new ArrayList();
+
+        public void service(Mail mail) throws MessagingException {
+            receivedMails.add(mail);
+        }
+        
+    }
+    
+    private MailetConfig mockMailetConfig = new MailetConfig() {
+
+        public String getInitParameter(String name) {
+            return "";
+        }
+
+        public Iterator getInitParameterNames() {
+            return null;
+        }
+
+        public MailetContext getMailetContext() {
+            return mockContext;
+        }
+
+        public String getMailetName() {
+            return "Dummy";
+        }
+        
+    };
+    private CheckerMailet checkerMailet;
+    
+    private class MyMailet extends GenericMailet {
+
+        public void service(Mail mail) throws MessagingException {
+      try {
+        MimeMessage message = mail.getMessage () ;
+        //Set the header name and value (supplied at init time).
+        String newText =  "new text "+counter++;
+        System.err.println("Setting body to "+newText);
+        message.addHeader("x-Header", newText);
+        message.setText(newText);
+        message.saveChanges();
+      } catch (javax.mail.MessagingException me) {
+         log (me.getMessage());
+      }
+        }
+    }
+
+    public LinearProcessorTest(String arg0) throws Exception {
+        super(arg0);
+
+        MimeMessageInputStreamSource mmis = null;
+        try {
+            mmis = new MimeMessageInputStreamSource("test", new 
SharedByteArrayInputStream((content+sep+body).getBytes()));
+        } catch (MessagingException e) {
+        }
+        mw = new MimeMessageWrapper(mmis);
+        setUp();
+  }
+
+    private class DummyMatcherConfig implements MatcherConfig {
+        public String getCondition() {
+            return "";
+        }
+        
+        public MailetContext getMailetContext() {
+            return mockContext;
+        }
+
+        public String getMatcherName() {
+            return "All";
+        }
+    }
+    
+    public void testCopyOnWrite() throws ParseException, IOException {
+        Collection recipients = new ArrayList();
+        recipients.add(new MailAddress("rec1","domain.com"));
+        recipients.add(new MailAddress("rec2","domain.com"));
+        try {
+            MailImpl m = new MailImpl("mail1",new 
MailAddress("sender","domain.com"),recipients,mw);
+            t.service(m);
+            ArrayList a = checkerMailet.receivedMails;
+            assertEquals(2,a.size());
+            MimeMessage m1 = ((Mail) a.get(0)).getMessage();
+            MimeMessage m2 = ((Mail) a.get(1)).getMessage();
+            assertNotSame(m1,m2);
+        } catch (MessagingException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    public void setUp() throws Exception {
+        super.setUp();
+        t = new LinearProcessor();
+        Logger l = new ConsoleLogger();
+        t.enableLogging(l);
+        t.initialize();
+        t.setSpool(new MockSpoolRepository());
+        Matcher recipientIs = new RecipientIs();
+        recipientIs.init(new DummyMatcherConfig() {
+
+            public String getCondition() {
+                return "[EMAIL PROTECTED]";
+            }
+            
+        });
+        
+        Matcher all = new All();
+        all.init(new DummyMatcherConfig());
+        
+        Mailet changeBody = new MyMailet();
+        Mailet changeBody2 = new MyMailet();
+
+        changeBody.init(mockMailetConfig);
+        changeBody2.init(mockMailetConfig);
+        
+        Mailet dumpSystemErr = new DumpSystemErr();
+        changeBody.init(mockMailetConfig);
+        
+        checkerMailet = new CheckerMailet();
+        t.add(recipientIs,changeBody);
+        t.add(all,changeBody);
+        t.add(all,dumpSystemErr);
+        t.add(all,checkerMailet);
+        t.closeProcessorLists();
+        
+    }
+    
+    public void tearDown() throws Exception {
+        t.dispose();
+        super.tearDown();
+    }
+    
+}



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

Reply via email to