You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/05/03 22:58:37 UTC

svn commit: r653136 - in /synapse/trunk/java/modules/transports: ./ src/test/java/org/apache/synapse/transport/mail/ src/test/resources/META-INF/

Author: veithen
Date: Sat May  3 13:58:36 2008
New Revision: 653136

URL: http://svn.apache.org/viewvc?rev=653136&view=rev
Log:
SYNAPSE-246: Mail transport unit tests now use mock JavaMail store and transport providers and no longer depend on GMail.

Added:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/Account.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestFolder.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestMimeMessage.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestStore.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestTransport.java
    synapse/trunk/java/modules/transports/src/test/resources/META-INF/
    synapse/trunk/java/modules/transports/src/test/resources/META-INF/javamail.providers
Modified:
    synapse/trunk/java/modules/transports/pom.xml
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java

Modified: synapse/trunk/java/modules/transports/pom.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/pom.xml?rev=653136&r1=653135&r2=653136&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/pom.xml (original)
+++ synapse/trunk/java/modules/transports/pom.xml Sat May  3 13:58:36 2008
@@ -43,7 +43,6 @@
                 <version>2.3</version>
                 <configuration>
                     <excludes>
-                        <exclude>**/MailEchoRawXMLTest.java</exclude>
                         <exclude>**/AbstractTransportTest.java</exclude>
                     </excludes>
                 </configuration>

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/Account.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/Account.java?rev=653136&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/Account.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/Account.java Sat May  3 13:58:36 2008
@@ -0,0 +1,88 @@
+/*
+ *  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.synapse.transport.mail;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import javax.mail.Flags;
+import javax.mail.internet.InternetAddress;
+
+public class Account {
+    public static class Message {
+        private final int uid;
+        private final byte[] content;
+        private final Flags flags = new Flags();
+        
+        public Message(int uid, byte[] content) {
+            this.uid = uid;
+            this.content = content;
+        }
+
+        public int getUid() {
+            return uid;
+        }
+
+        public byte[] getContent() {
+            return content;
+        }
+        
+        public synchronized Flags getFlags() {
+            return (Flags)flags.clone();
+        }
+        
+        public synchronized void addFlags(Flags flags) {
+            flags.add(flags);
+        }
+        
+        public synchronized void removeFlags(Flags flags) {
+            flags.remove(flags);
+        }
+    }
+    
+    private static final Map<InternetAddress,Account> accounts = new HashMap<InternetAddress,Account>();
+    
+    private final Map<Integer,Message> messageMap = new LinkedHashMap<Integer,Message>();
+    private int nextUid;
+    
+    public static synchronized Account getAccount(InternetAddress address) {
+        Account account = accounts.get(address);
+        if (account == null) {
+            account = new Account();
+            accounts.put(address, account);
+        }
+        return account;
+    }
+
+    public synchronized void receive(byte[] content) {
+        int uid = nextUid++;
+        messageMap.put(uid, new Message(uid, content));
+    }
+    
+    public synchronized Message[] getMessages() {
+        Collection<Message> messages = messageMap.values();
+        return messages.toArray(new Message[messages.size()]);
+    }
+    
+    public synchronized void deleteMessage(int uid) {
+        messageMap.remove(uid);
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java?rev=653136&r1=653135&r2=653136&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailEchoRawXMLTest.java Sat May  3 13:58:36 2008
@@ -76,6 +76,8 @@
         //Logger.getLogger("org.apache.synapse.transport.mail").setLevel(Level.TRACE);
         server = new UtilsMailServer();
 
+        props.put("mail.smtp.class", TestTransport.class.getName());
+        
         props.put("mail.pop3.host", "pop.gmail.com");
         props.put("mail.pop3.port", "995");
         props.put("mail.pop3.user", "synapse.test.0");
@@ -104,9 +106,9 @@
         session.setDebug(log.isTraceEnabled());
         
         WSMimeMessage msg = new WSMimeMessage(session);
-	    msg.setFrom(new InternetAddress("synapse.test.0@gmail.com"));
-        msg.setReplyTo(InternetAddress.parse("synapse.test.0@gmail.com"));
-        InternetAddress[] address = {new InternetAddress("synapse.test.6@gmail.com")};
+	    msg.setFrom(new InternetAddress("synapse.test.0"));
+        msg.setReplyTo(InternetAddress.parse("synapse.test.0"));
+        InternetAddress[] address = {new InternetAddress("synapse.test.6")};
 	    msg.setRecipients(Message.RecipientType.TO, address);
 	    msg.setSubject("POX Roundtrip");
         msg.setHeader(BaseConstants.SOAPACTION, Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
@@ -117,11 +119,11 @@
         Transport.send(msg);
 
         Thread.yield();
-        Thread.sleep(1000 * 10);
+        Thread.sleep(100);
 
         Object reply = null;
         boolean replyNotFound = true;
-        int retryCount = 3;
+        int retryCount = 50;
         while (replyNotFound) {
             log.debug("Checking for response ... with MessageID : " + msgId);
             reply = getMessage(msgId);
@@ -129,7 +131,7 @@
                 replyNotFound = false;
             } else {
                 if (retryCount-- > 0) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100);
                 } else {
                     break;
                 }
@@ -157,8 +159,8 @@
 
         String msgId = UUIDGenerator.getUUID();
         Options options = new Options();
-        options.setTo(new EndpointReference("mailto:synapse.test.6@gmail.com"));
-        options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+        options.setTo(new EndpointReference("mailto:synapse.test.6"));
+        options.setReplyTo(new EndpointReference("mailto:synapse.test.0"));
         options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
         options.setMessageId(msgId);
 
@@ -169,11 +171,11 @@
         sender.fireAndForget(createPayload());
 
         Thread.yield();
-        Thread.sleep(1000 * 10);
+        Thread.sleep(100);
 
         Object reply = null;
         boolean replyNotFound = true;
-        int retryCount = 3;
+        int retryCount = 50;
         while (replyNotFound) {
             log.debug("Checking for response ... with MessageID : " + msgId);
             reply = getMessage(msgId);
@@ -181,7 +183,7 @@
                 replyNotFound = false;
             } else {
                 if (retryCount-- > 0) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100);
                 } else {
                     break;
                 }
@@ -209,8 +211,8 @@
 
         String msgId = UUIDGenerator.getUUID();
         Options options = new Options();
-        options.setTo(new EndpointReference("mailto:synapse.test.6@gmail.com"));
-        options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+        options.setTo(new EndpointReference("mailto:synapse.test.6"));
+        options.setReplyTo(new EndpointReference("mailto:synapse.test.0"));
         options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
         options.setMessageId(msgId);
 
@@ -221,11 +223,11 @@
         sender.fireAndForget(createKoreanPayload());
 
         Thread.yield();
-        Thread.sleep(1000 * 10);
+        Thread.sleep(100);
 
         Object reply = null;
         boolean replyNotFound = true;
-        int retryCount = 3;
+        int retryCount = 50;
         while (replyNotFound) {
             log.debug("Checking for response ... with MessageID : " + msgId);
             reply = getMessage(msgId);
@@ -233,7 +235,7 @@
                 replyNotFound = false;
             } else {
                 if (retryCount-- > 0) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100);
                 } else {
                     break;
                 }
@@ -261,8 +263,8 @@
 
         String msgId = UUIDGenerator.getUUID();
         Options options = new Options();
-        options.setTo(new EndpointReference("mailto:synapse.test.6@gmail.com"));
-        options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+        options.setTo(new EndpointReference("mailto:synapse.test.6"));
+        options.setReplyTo(new EndpointReference("mailto:synapse.test.0"));
         options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
         options.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
         options.setMessageId(msgId);
@@ -272,11 +274,11 @@
         sender.fireAndForget(createPayload());
 
         Thread.yield();
-        Thread.sleep(1000 * 10);
+        Thread.sleep(100);
 
         Object reply = null;
         boolean replyNotFound = true;
-        int retryCount = 3;
+        int retryCount = 50;
         while (replyNotFound) {
             log.debug("Checking for response ... with MessageID : " + msgId);
             reply = getMessage(msgId);
@@ -284,7 +286,7 @@
                 replyNotFound = false;
             } else {
                 if (retryCount-- > 0) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100);
                 } else {
                     break;
                 }
@@ -312,8 +314,8 @@
 
         String msgId = UUIDGenerator.getUUID();
         Options options = new Options();
-        options.setTo(new EndpointReference("mailto:synapse.test.7@gmail.com"));
-        options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+        options.setTo(new EndpointReference("mailto:synapse.test.7"));
+        options.setReplyTo(new EndpointReference("mailto:synapse.test.0"));
         options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
         options.setMessageId(msgId);
 
@@ -322,11 +324,11 @@
         sender.fireAndForget(createKoreanPayload());
 
         Thread.yield();
-        Thread.sleep(1000 * 10);
+        Thread.sleep(100);
 
         Object reply = null;
         boolean replyNotFound = true;
-        int retryCount = 3;
+        int retryCount = 50;
         while (replyNotFound) {
             log.debug("Checking for response ... with MessageID : " + msgId);
             reply = getMessage(msgId);
@@ -334,7 +336,7 @@
                 replyNotFound = false;
             } else {
                 if (retryCount-- > 0) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100);
                 } else {
                     break;
                 }
@@ -362,8 +364,8 @@
 
         String msgId = UUIDGenerator.getUUID();
         Options options = new Options();
-        options.setTo(new EndpointReference("mailto:synapse.test.7@gmail.com"));
-        options.setReplyTo(new EndpointReference("mailto:synapse.test.0@gmail.com"));
+        options.setTo(new EndpointReference("mailto:synapse.test.7"));
+        options.setReplyTo(new EndpointReference("mailto:synapse.test.0"));
         options.setAction(Constants.AXIS2_NAMESPACE_URI + "/echoOMElement");
         options.setMessageId(msgId);
         options.setProperty(Constants.Configuration. CHARACTER_SET_ENCODING, KOREAN_CHARSET);
@@ -373,11 +375,11 @@
         sender.fireAndForget(createKoreanPayload());
 
         Thread.yield();
-        Thread.sleep(1000 * 10);
+        Thread.sleep(100);
 
         Object reply = null;
         boolean replyNotFound = true;
-        int retryCount = 3;
+        int retryCount = 50;
         while (replyNotFound) {
             log.debug("Checking for response ... with MessageID : " + msgId);
             reply = getMessage(msgId);
@@ -385,7 +387,7 @@
                 replyNotFound = false;
             } else {
                 if (retryCount-- > 0) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100);
                 } else {
                     break;
                 }
@@ -415,7 +417,7 @@
         Store store = null;
 
         try {
-            store = session.getStore("pop3");
+            store = session.getStore("test-store");
             store.connect(username, password);
             Folder folder = store.getFolder(MailConstants.DEFAULT_FOLDER);
             folder.open(Folder.READ_WRITE);
@@ -458,6 +460,7 @@
         AxisConfiguration axisCfg = new AxisConfiguration();
         TransportOutDescription trpOutDesc = new TransportOutDescription("mailto");
 
+        trpOutDesc.addParameter(new Parameter("mail.smtp.class", TestTransport.class.getName()));
         trpOutDesc.addParameter(new Parameter("mail.smtp.host", "smtp.gmail.com"));
         trpOutDesc.addParameter(new Parameter("mail.smtp.port", "587"));
         trpOutDesc.addParameter(new Parameter("mail.smtp.starttls.enable", "true"));

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestFolder.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestFolder.java?rev=653136&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestFolder.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestFolder.java Sat May  3 13:58:36 2008
@@ -0,0 +1,182 @@
+/*
+ *  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.synapse.transport.mail;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Store;
+
+public class TestFolder extends Folder {
+    private final Account account;
+    private TestMimeMessage[] messages;
+    private boolean open;
+    
+    public TestFolder(Store store, Account account) {
+        super(store);
+        this.account = account;
+    }
+    
+    private void refresh() throws MessagingException {
+        Account.Message[] messages = account.getMessages();
+        this.messages = new TestMimeMessage[messages.length];
+        for (int i=0; i<messages.length; i++) {
+            this.messages[i] = new TestMimeMessage(this, messages[i], i+1);
+        }
+    }
+    
+    @Override
+    public void open(int mode) throws MessagingException {
+        refresh();
+        open = true;
+    }
+
+    @Override
+    public boolean isOpen() {
+        return open;
+    }
+
+    @Override
+    public int getMessageCount() throws MessagingException {
+        return messages.length;
+    }
+
+    @Override
+    public Message getMessage(int msgnum) throws MessagingException {
+        return messages[msgnum-1];
+    }
+    
+    private Message[] doExpunge() throws MessagingException {
+        List<Message> expunged = new LinkedList<Message>();
+        for (TestMimeMessage message : messages) {
+            if (message.isSet(Flags.Flag.DELETED)) {
+                expunged.add(message);
+                account.deleteMessage(message.getUid());
+            }
+        }
+        return expunged.toArray(new Message[expunged.size()]);
+    }
+    
+    @Override
+    public Message[] expunge() throws MessagingException {
+        Message[] expunged = doExpunge();
+        refresh();
+        return expunged;
+    }
+
+    @Override
+    public void close(boolean expunge) throws MessagingException {
+        if (expunge) {
+            doExpunge();
+        }
+        open = false;
+        messages = null;
+    }
+
+    
+    
+    @Override
+    public void appendMessages(Message[] msgs) throws MessagingException {
+        // TODO Auto-generated method stub
+        
+    }
+
+    @Override
+    public boolean create(int type) throws MessagingException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean delete(boolean recurse) throws MessagingException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean exists() throws MessagingException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public Folder getFolder(String name) throws MessagingException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getFullName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Folder getParent() throws MessagingException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Flags getPermanentFlags() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public char getSeparator() throws MessagingException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public int getType() throws MessagingException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public boolean hasNewMessages() throws MessagingException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public Folder[] list(String pattern) throws MessagingException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean renameTo(Folder f) throws MessagingException {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestMimeMessage.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestMimeMessage.java?rev=653136&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestMimeMessage.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestMimeMessage.java Sat May  3 13:58:36 2008
@@ -0,0 +1,50 @@
+/*
+ *  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.synapse.transport.mail;
+
+import java.io.ByteArrayInputStream;
+
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+public class TestMimeMessage extends MimeMessage {
+    private final Account.Message message;
+    
+    public TestMimeMessage(Folder folder, Account.Message message, int msgnum) throws MessagingException {
+        super(folder, new ByteArrayInputStream(message.getContent()), msgnum);
+        this.message = message;
+        flags = message.getFlags();
+    }
+
+    @Override
+    public synchronized void setFlags(Flags flags, boolean set) throws MessagingException {
+        super.setFlags(flags, set);
+        if (set) {
+            message.addFlags(flags);
+        } else {
+            message.removeFlags(flags);
+        }
+    }
+    
+    public int getUid() {
+        return message.getUid();
+    }
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestStore.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestStore.java?rev=653136&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestStore.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestStore.java Sat May  3 13:58:36 2008
@@ -0,0 +1,56 @@
+/*
+ *  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.synapse.transport.mail;
+
+import javax.mail.Folder;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Store;
+import javax.mail.URLName;
+import javax.mail.internet.InternetAddress;
+
+public class TestStore extends Store {
+    private Account account;
+    
+    public TestStore(Session session, URLName urlname) {
+        super(session, urlname);
+    }
+
+    @Override
+    protected boolean protocolConnect(String host, int port, String user,
+            String password) throws MessagingException {
+        account = Account.getAccount(new InternetAddress(user));
+        return true;
+    }
+
+    @Override
+    public Folder getDefaultFolder() throws MessagingException {
+        return new TestFolder(this, account);
+    }
+
+    @Override
+    public Folder getFolder(String name) throws MessagingException {
+        return getDefaultFolder();
+    }
+
+    @Override
+    public Folder getFolder(URLName url) throws MessagingException {
+        return getDefaultFolder();
+    }
+}

Added: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestTransport.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestTransport.java?rev=653136&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestTransport.java (added)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/TestTransport.java Sat May  3 13:58:36 2008
@@ -0,0 +1,58 @@
+/*
+ *  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.synapse.transport.mail;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
+import javax.mail.Address;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.URLName;
+import javax.mail.internet.InternetAddress;
+
+public class TestTransport extends Transport {
+    public TestTransport(Session session, URLName urlname) {
+        super(session, urlname);
+    }
+
+    @Override
+    protected boolean protocolConnect(String host, int port, String user,
+            String password) throws MessagingException {
+        return true;
+    }
+
+    @Override
+    public void sendMessage(Message msg, Address[] addresses) throws MessagingException {
+        System.out.println("Message to " + Arrays.asList(addresses));
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        try {
+            msg.writeTo(baos);
+        } catch (IOException ex) {
+            throw new MessagingException("Unable to serialize message", ex);
+        }
+        byte[] content = baos.toByteArray();
+        for (Address address : addresses) {
+            Account.getAccount((InternetAddress)address).receive(content);
+        }
+    }
+}

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java?rev=653136&r1=653135&r2=653136&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/UtilsMailServer.java Sat May  3 13:58:36 2008
@@ -37,6 +37,7 @@
         TransportOutDescription trpOutDesc =
             new TransportOutDescription(MailConstants.TRANSPORT_NAME);
         // gmail
+        trpOutDesc.addParameter(new Parameter("mail.smtp.class", TestTransport.class.getName()));
         trpOutDesc.addParameter(new Parameter("mail.smtp.host", "smtp.gmail.com"));
         trpOutDesc.addParameter(new Parameter("mail.smtp.port", "587"));
         trpOutDesc.addParameter(new Parameter("mail.smtp.starttls.enable", "true"));
@@ -60,10 +61,10 @@
         // local james
         parameters.add(new Parameter("transport.mail.Address", "synapse.test.6@localhost"));
         //parameters.add(new Parameter("transport.mail.ReplyAddress", "synapse.test.1@gmail.com"));
-        parameters.add(new Parameter("transport.mail.Protocol", "pop3"));
+        parameters.add(new Parameter("transport.mail.Protocol", "test-store"));
         //parameters.add(new Parameter("transport.mail.ContentType", "text/xml"));
         parameters.add(new Parameter("transport.mail.ActionAfterProcess", "DELETE"));
-        parameters.add(new Parameter("transport.PollInterval", "5"));
+        parameters.add(new Parameter("transport.PollInterval", "1"));
 
         // gmail
         parameters.add(new Parameter("mail.pop3.host", "pop.gmail.com"));
@@ -82,10 +83,10 @@
         parameters = new ArrayList();
         parameters.add(new Parameter("transport.mail.Address", "synapse.test.7@gmail.com"));
         //parameters.add(new Parameter("transport.mail.ReplyAddress", "synapse.test.1@gmail.com"));
-        parameters.add(new Parameter("transport.mail.Protocol", "imap"));
+        parameters.add(new Parameter("transport.mail.Protocol", "test-store"));
         //parameters.add(new Parameter("transport.mail.ContentType", "text/xml"));
         //parameters.add(new Parameter("transport.mail.ActionAfterProcess", "DELETE"));
-        parameters.add(new Parameter("transport.PollInterval", "5"));
+        parameters.add(new Parameter("transport.PollInterval", "1"));
 
         parameters.add(new Parameter("mail.imap.host", "imap.gmail.com"));
         parameters.add(new Parameter("mail.imap.port", "993"));

Added: synapse/trunk/java/modules/transports/src/test/resources/META-INF/javamail.providers
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/resources/META-INF/javamail.providers?rev=653136&view=auto
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/resources/META-INF/javamail.providers (added)
+++ synapse/trunk/java/modules/transports/src/test/resources/META-INF/javamail.providers Sat May  3 13:58:36 2008
@@ -0,0 +1,2 @@
+protocol=test-transport; type=transport; class=org.apache.synapse.transport.mail.TestTransport
+protocol=test-store; type=store; class=org.apache.synapse.transport.mail.TestStore