You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2009/12/01 16:05:02 UTC

svn commit: r885783 [2/2] - in /james/hupa/trunk: client/src/main/java/org/apache/hupa/client/ client/src/main/java/org/apache/hupa/client/mvp/ client/war/WEB-INF/ server/src/main/java/org/apache/hupa/server/guice/ server/src/main/java/org/apache/hupa/...

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/AbtractSendMessageHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -21,55 +21,62 @@
 
 
 import javax.mail.Message;
-import javax.mail.Session;
+import javax.mail.Part;
 import javax.servlet.http.HttpSession;
 
-import junit.framework.TestCase;
-
-import org.apache.hupa.server.FileItemRegistry;
+import org.apache.hupa.server.HupaTestCase;
 import org.apache.hupa.server.IMAPStoreCache;
 import org.apache.hupa.server.guice.DemoModeConstants;
-import org.apache.hupa.server.guice.GuiceTestModule;
 import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStoreCache;
+import org.apache.hupa.server.utils.MessageUtils;
+import org.apache.hupa.server.utils.TestUtils;
 import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.rpc.SendMessage;
 
-import com.google.inject.Injector;
 import com.sun.mail.imap.IMAPStore;
 
-public class AbtractSendMessageHandlerTest extends TestCase {
-    
-    GuiceTestModule module = new GuiceTestModule();
-    Injector injector = module.getInjector();
-    
-    public void testFillMockMessages () throws Exception{
-        Session session = injector.getInstance(Session.class);
-        
-        Message msg = MsgUtils.fillMockMimeMessage(session, "Hola", null, 0);
+public class AbtractSendMessageHandlerTest extends HupaTestCase {
+
+    User demouser = DemoModeConstants.demoUser;
+
+    String contentTwoAttach = "multipart/mixed\n"
+                            + " multipart/alternative\n"
+                            + "  text/plain\n"
+                            + "  text/html\n"
+                            + " mock/attachment => file_1.bin\n"
+                            + " mock/attachment => file_2.bin\n";
+
+    public void testComposeMessage() throws Exception{
+
+        Message msg = TestUtils.createMockMimeMessage(session, "body", null, -1);
         String exp = "text/plain\n";
-        assertEquals(exp, MsgUtils.summaryzeContent(msg).toString());
+        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
+        
+        msg = TestUtils.createMockMimeMessage(session, "body", null, 0);
+        exp = "text/plain\n";
+        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
 
-        msg = MsgUtils.fillMockMimeMessage(session, null, "<div>hola</div>", 0);
+        msg = TestUtils.createMockMimeMessage(session, null, "html", 0);
         exp = "text/html\n";
-        assertEquals(exp, MsgUtils.summaryzeContent(msg).toString());
+        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
 
-        msg = MsgUtils.fillMockMimeMessage(session, "hola", "<div>hola</div>", 0);
+        msg = TestUtils.createMockMimeMessage(session, 0);
         exp = "multipart/alternative\n" +
               " text/plain\n" +
               " text/html\n";
-        assertEquals(exp, MsgUtils.summaryzeContent(msg).toString());
+        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
         
-        msg = MsgUtils.fillMockMimeMessage(session, "hola", "<div>hola</div>", 1);
+        msg = TestUtils.createMockMimeMessage(session, 1);
         exp = "multipart/mixed\n" +
               " multipart/alternative\n" +
               "  text/plain\n" +
               "  text/html\n" +
               " mock/attachment => file_1.bin\n";
-        assertEquals(exp, MsgUtils.summaryzeContent(msg).toString());
+        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
         
-        msg = MsgUtils.fillMockMimeMessage(session, "hola", "<div>hola</div>", 3);
+        msg = TestUtils.createMockMimeMessage(session, 3);
         exp = "multipart/mixed\n" +
               " multipart/alternative\n" +
               "  text/plain\n" +
@@ -77,25 +84,25 @@
               " mock/attachment => file_1.bin\n" +
               " mock/attachment => file_2.bin\n" +
               " mock/attachment => file_3.bin\n";
-        assertEquals(exp, MsgUtils.summaryzeContent(msg).toString());
+        assertEquals(exp, TestUtils.summaryzeContent(msg).toString());
     }
     
+    public void testRestoreInlineLinks() {
+        String txt, res;
+        txt = ".. <img\nsrc='...&name=abcd' name='cid:abcd'\nwhatever=/> ..";
+        res = abstSendMsgHndl.restoreInlineLinks(txt);
+        assertEquals(".. <img\nsrc='cid:abcd'\nwhatever=/> ..", res);
+    }
+
     public void testHtmlmessageToText() {
         String txt, res;
         txt = "<div>Hola:</div>Como \n estas<br/>Adios\n\n";
-        
-        @SuppressWarnings("unchecked")
-        AbstractSendMessageHandler<SendMessage> handler = injector.getInstance(AbstractSendMessageHandler.class);
-
-        res = handler.htmlToText(txt);
+        res = abstSendMsgHndl.htmlToText(txt);
         assertEquals("Hola:\nComo estas\nAdios ", res);
     }
     
     public void testSendEmailWithAttachments() throws Exception {
         
-        Session session = injector.getInstance(Session.class);
-        User demouser = DemoModeConstants.demoUser;
-
         HttpSession httpSession = injector.getInstance(HttpSession.class);
         httpSession.setAttribute("user", demouser);
 
@@ -103,33 +110,55 @@
         IMAPStore store = injector.getInstance(IMAPStore.class);
         ((MockIMAPStoreCache)storeCache).addValidUser(demouser, store);
         
-        FileItemRegistry registry = injector.getInstance(FileItemRegistry.class);
-        
-        @SuppressWarnings("unchecked")
-        AbstractSendMessageHandler<SendMessage> handler = injector.getInstance(AbstractSendMessageHandler.class);
-
         MockIMAPFolder sentbox = (MockIMAPFolder) store.getFolder(DemoModeConstants.DEMO_MODE_SENT_FOLDER);
-        assertTrue(sentbox.getMessages().length == 0);
         
-        SMTPMessage smtpmsg = MsgUtils.fillSMTPMessage(registry, 2);
+        SMTPMessage smtpmsg = TestUtils.createMockSMTPMessage(MessageUtils.getSessionRegistry(httpSession, logger), 2);
         SendMessage action = new SendMessage(smtpmsg);
         
-        Message message = handler.createMessage(session, action);
-        message =  handler.fillBody(message, action);
+        Message message = abstSendMsgHndl.createMessage(session, action);
+        message =  abstSendMsgHndl.fillBody(message, action);
         
-        String expected = "multipart/mixed\n"
-                        + " multipart/alternative\n"
-                        + "  text/plain\n"
-                        + "  text/html\n"
-                        + " mock/attachment => file_1.bin\n"
-                        + " mock/attachment => file_2.bin\n";
+        assertEquals(contentTwoAttach, TestUtils.summaryzeContent(message).toString());
+
+        abstSendMsgHndl.sendMessage(session, demouser, message);
+
+        Part part = MessageUtils.handleMultiPart(logger, message.getContent(), "file_1.bin");
+        assertTrue(part.getSize() < 0);
+
+        assertTrue(sentbox.getMessages().length == 0);
+        abstSendMsgHndl.saveSentMessage(session, demouser, message);
+        assertTrue(sentbox.getMessages().length == 1);
         
-        assertEquals(expected, MsgUtils.summaryzeContent(message).toString());
+        message = sentbox.getMessage(0);
+        assertNotNull(message);
+        assertEquals(contentTwoAttach, TestUtils.summaryzeContent(message).toString());
         
-        handler.sendMessage(demouser, session, message);
-        handler.saveSentMessage(demouser, message);
-        assertTrue(sentbox.getMessages().length == 1);
+        part = MessageUtils.handleMultiPart(logger, message.getContent(), "file_1.bin");
+        assertTrue(part.getSize() > 0);
         
     }
 
+    public void testExecute() throws Exception {
+
+        HttpSession httpSession = injector.getInstance(HttpSession.class);
+        httpSession.setAttribute("user", demouser);
+
+        IMAPStore store = injector.getInstance(IMAPStore.class);
+        ((MockIMAPStoreCache)storeCache).addValidUser(demouser, store);
+        
+        MockIMAPFolder sentbox = (MockIMAPFolder) store.getFolder(DemoModeConstants.DEMO_MODE_SENT_FOLDER);
+        
+        SMTPMessage smtpmsg = TestUtils.createMockSMTPMessage(MessageUtils.getSessionRegistry(httpSession, logger), 2);
+        SendMessage action = new SendMessage(smtpmsg);
+        
+        assertTrue(sentbox.getMessages().length == 0);
+        abstSendMsgHndl.execute(action, null);
+        Message message = sentbox.getMessage(0);
+        assertNotNull(message);
+        assertEquals(contentTwoAttach, TestUtils.summaryzeContent(message).toString());
+        
+        Part part = MessageUtils.handleMultiPart(logger, message.getContent(), "file_1.bin");
+        assertTrue(part.getSize() > 0);
+        
+    }
 }

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -27,14 +27,12 @@
 
 import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStore;
-import org.apache.hupa.server.mock.MockLog;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.exception.InvalidSessionException;
 import org.apache.hupa.shared.rpc.CreateFolder;
 
 public class CreateFolderHandlerTest extends AbstractHandlerTest{
-
     
     public void testCreate() throws MessagingException {
         User user = createUser();

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -26,7 +26,6 @@
 
 import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStore;
-import org.apache.hupa.server.mock.MockLog;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.exception.InvalidSessionException;

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/DeleteMessageByUidHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -32,13 +32,11 @@
 
 import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStore;
-import org.apache.hupa.server.mock.MockLog;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.rpc.DeleteMessageByUid;
 
 public class DeleteMessageByUidHandlerTest extends AbstractHandlerTest{
-
     
     public void testDeleteFolderNotExists() throws MessagingException {
         DeleteMessageByUidHandler handler = new DeleteMessageByUidHandler(storeCache, logger, httpSessionProvider);

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -28,7 +28,6 @@
 
 import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStore;
-import org.apache.hupa.server.mock.MockLog;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.exception.InvalidSessionException;

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FowardMessageHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FowardMessageHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FowardMessageHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FowardMessageHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -20,62 +20,26 @@
 package org.apache.hupa.server.handler;
 
 import javax.mail.Message;
-import javax.mail.Session;
 import javax.servlet.http.HttpSession;
 
-import junit.framework.TestCase;
-
-import org.apache.commons.logging.Log;
 import org.apache.hupa.server.FileItemRegistry;
+import org.apache.hupa.server.HupaTestCase;
 import org.apache.hupa.server.IMAPStoreCache;
-import org.apache.hupa.server.InMemoryIMAPStoreCache;
 import org.apache.hupa.server.guice.DemoModeConstants;
-import org.apache.hupa.server.guice.GuiceTestModule;
-import org.apache.hupa.server.guice.SessionProvider;
-import org.apache.hupa.server.mock.MockHttpSession;
 import org.apache.hupa.server.mock.MockIMAPFolder;
 import org.apache.hupa.server.mock.MockIMAPStoreCache;
-import org.apache.hupa.server.mock.MockLogProvider;
+import org.apache.hupa.server.utils.TestUtils;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.rpc.ForwardMessage;
 
-import com.google.inject.AbstractModule;
-import com.google.inject.Injector;
-import com.google.inject.Singleton;
-import com.google.inject.name.Names;
 import com.sun.mail.imap.IMAPStore;
 
-public class FowardMessageHandlerTest extends TestCase {
-
-    public class TestConfigurationModule extends AbstractModule {
-        @Override
-        protected void configure() {
-
-            DemoModeConstants.demoProperties.put("DefaultUserSessionId", "WhateverId");
-            Names.bindProperties(binder(), DemoModeConstants.demoProperties);
-
-            bind(Log.class).toProvider(MockLogProvider.class).in(Singleton.class);
-            bind(FileItemRegistry.class).in(Singleton.class);
-            bind(Session.class).toProvider(SessionProvider.class);
-            bind(HttpSession.class).to(MockHttpSession.class).in(Singleton.class);
+public class FowardMessageHandlerTest extends HupaTestCase {
 
-            bind(IMAPStoreCache.class).to(InMemoryIMAPStoreCache.class);
-
-            bind(ForwardMessageHandler.class);
-            bind(GetMessageDetailsHandler.class);
-
-        }
-    }
+    public void testForwardMessage() throws Exception {
 
-    public void testMine() throws Exception {
-        
-        
-        GuiceTestModule module = new GuiceTestModule();
-        Injector injector = module.getInjector();
-
-        Session session = injector.getInstance(Session.class);
         User demouser = DemoModeConstants.demoUser;
 
         HttpSession httpSession = injector.getInstance(HttpSession.class);
@@ -87,38 +51,33 @@
         
         FileItemRegistry registry = injector.getInstance(FileItemRegistry.class);
         
-        ForwardMessageHandler handler = injector.getInstance(ForwardMessageHandler.class);
-
         MockIMAPFolder sentbox = (MockIMAPFolder) store.getFolder(DemoModeConstants.DEMO_MODE_SENT_FOLDER);
         assertTrue(sentbox.getMessages().length == 0);
 
         MockIMAPFolder inbox = (MockIMAPFolder) store.getFolder(DemoModeConstants.DEMO_MODE_INBOX_FOLDER);
         assertTrue(inbox.getMessages().length >= 0);
         
-        Message message = MsgUtils.fillMockMimeMessage(session, "hola", null, 2);
+        Message message = TestUtils.createMockMimeMessage(session, 2);
         inbox.appendMessages(new Message[]{message});
         long msgUid = inbox.getUID(message);
         message = inbox.getMessageByUID(msgUid);
         assertNotNull(message);
         
         IMAPFolder ifolder = new IMAPFolder(inbox.getFullName());
-        SMTPMessage smtpmsg = MsgUtils.fillSMTPMessage(registry, 2);
+        SMTPMessage smtpmsg = TestUtils.createMockSMTPMessage(registry, 2);
         ForwardMessage action = new ForwardMessage(smtpmsg, ifolder, msgUid);
         
-        message = handler.createMessage(session, action);
-        message = handler.fillBody(message, action);
-
-        // TODO: this is the expected behavior of the handler, but it doesn't work
-        // It's commented to avoid breaking the build
+        message = fwdMsgHndl.createMessage(session, action);
+        message = fwdMsgHndl.fillBody(message, action);
+        
+        String expected = "multipart/mixed\n"
+            + " multipart/alternative\n"
+            + "  text/plain\n"
+            + "  text/html\n"
+            + " mock/attachment => file_1.bin\n"
+            + " mock/attachment => file_2.bin\n";
         
-//        String expected = "multipart/mixed\n"
-//            + " multipart/alternative\n"
-//            + "  text/plain\n"
-//            + "  text/html\n"
-//            + " mock/attachment => file_1.bin\n"
-//            + " mock/attachment => file_2.bin\n";
-//        
-//        assertEquals(expected, MsgUtils.summaryzeContent(message).toString());
+        assertEquals(expected, TestUtils.summaryzeContent(message).toString());
 
     }
 

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/GetMessageDetailsHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/GetMessageDetailsHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/GetMessageDetailsHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/GetMessageDetailsHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -23,117 +23,33 @@
 import javax.mail.Message;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.hupa.server.mock.MockIMAPFolder;
-import org.apache.hupa.server.mock.MockIMAPStore;
+import org.apache.hupa.server.HupaTestCase;
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.server.guice.DemoModeConstants;
+import org.apache.hupa.server.mock.MockIMAPStoreCache;
+import org.apache.hupa.server.utils.TestUtils;
 import org.apache.hupa.shared.SConsts;
-import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.MessageDetails;
+import org.apache.hupa.shared.data.User;
 
-public class GetMessageDetailsHandlerTest extends AbstractHandlerTest {
-    
-    GetMessageDetailsHandler handler = new GetMessageDetailsHandler(storeCache, logger, httpSessionProvider);
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPStore;
 
-    public void testRegexHtml() {
-        String txt, res;
-        txt = "<!'https://www.aaa.1:#@%/;$()~_?+-=\\.&<br/>";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_http, "");
-        assertEquals("<!'<br/>", res);
-
-        txt = "... a b c http://somewhere d e f ...";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_http, GetMessageDetailsHandler.repl_http);
-        assertEquals("... a b c <a href=\"http://somewhere\">http://somewhere</a> d e f ...", res);
-    }
-
-    public void testRegexEmail() {
-        String txt, res;
-        txt = "!'BcD091_%55-+.aa@abc01-01.dd-a.aBc+";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_email, "");
-        assertEquals("!'+", res);
-
-        txt = "!'=BcD091_%55-+.aa@abc01-01.dd-a.aBc+";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_email, "");
-        assertEquals(txt, res);
-
-        txt = "... a b c aaa@aaa.bbb d e f ...";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_email, GetMessageDetailsHandler.repl_email);
-        assertEquals(res, "... a b c <a href=\"mailto:aaa@aaa.bbb\">aaa@aaa.bbb</a> d e f ...");
-    }
-
-    public void testRegexInlineImg() {
-        String txt, res;
-        txt = ".. <img\nsrc=\"cid:abcd\"\nwhatever=/>click</a\n> ..";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_inlineImg, GetMessageDetailsHandler.repl_inlineImg);
-        assertEquals(".. <img\nsrc=\"hupa/downloadAttachmentServlet?folder=%%FOLDER%%&uid=%%UID%%&name=abcd\"\nwhatever=/>click</a\n> ..", res);
-    }
-    
-    public void testRegexBadTags() {
-        String txt, res;
-        txt = "<html><head>h<tag></head><body>.<style>..</style>.<script type=>//</script></body>.</html>";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_badTags, GetMessageDetailsHandler.repl_badTags);
-        res = handler.replaceAll(res, GetMessageDetailsHandler.regex_unneededTags, GetMessageDetailsHandler.repl_unneededTags);
-        assertEquals("...", res);
-    }
-
-    public void testRegexBadAttributes() {
-
-        String txt, res;
-        txt = "... <div attr=a onClick=\"something('');\"> ...";
-        res = handler.replaceAllRecursive(txt, GetMessageDetailsHandler.regex_badAttrs, GetMessageDetailsHandler.repl_badAttrs);
-        assertEquals("... <div attr=a> ...", res);
-
-        txt = "... <div attr=a onClick=\"something('');\" attr=b onMouseOver=whatever attr=c onKeyup=\"\" /> ...";
-        res = handler.replaceAllRecursive(txt, GetMessageDetailsHandler.regex_badAttrs, GetMessageDetailsHandler.repl_badAttrs);
-        assertEquals("... <div attr=a attr=b attr=c /> ...", res);
-    }
+public class GetMessageDetailsHandlerTest extends HupaTestCase {
     
-    public void testRegexHtmlLinks() {
-        String txt, res;
-        txt = ".. <a href=\"http://whatever\">..</a> ..";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_existingHttpLinks, GetMessageDetailsHandler.repl_existingHttpLinks);
-        assertEquals(".. <a onClick=\"openLink('http://whatever');return false;\" href=\"http://whatever\">..</a> ..", res);
-
-        txt = "-- <div> .. <img src=\"http://whatever\"/> .. </div>";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_orphandHttpLinks, GetMessageDetailsHandler.repl_orphandHttpLinks);
-        assertEquals(txt, res);
-        
-        txt = "-- <div> .. \"http://whatever\" .. </div>";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_orphandHttpLinks, GetMessageDetailsHandler.repl_orphandHttpLinks);
-        assertEquals("-- <div> .. \"<a href=\"http://whatever\">http://whatever</a>\" .. </div>", res);
-
-        res = handler.replaceAll(res, GetMessageDetailsHandler.regex_existingHttpLinks, GetMessageDetailsHandler.repl_existingHttpLinks);
-        assertEquals("-- <div> .. \"<a onClick=\"openLink('http://whatever');return false;\" href=\"http://whatever\">http://whatever</a>\" .. </div>", res);
-        
-    }
-
-    public void testRegexEmailLinks() {
-        String txt, res;
-        
-        txt = ".. <a href=\"mailTo:someone@somedomain.com\">..</a> ..";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_existingEmailLinks, GetMessageDetailsHandler.repl_existngEmailLinks);
-        assertEquals(".. <a onClick=\"mailTo('someone@somedomain.com');return false;\" href=\"mailto:someone@somedomain.com\">..</a> ..", res);
-        
-        txt = "-- <div> .. someone@somedomain.com .. </div>";
-        res = handler.replaceAll(txt, GetMessageDetailsHandler.regex_orphandEmailLinks, GetMessageDetailsHandler.repl_orphandEmailLinks);
-        assertEquals("-- <div> .. <a href=\"mailto:someone@somedomain.com\">someone@somedomain.com</a> .. </div>", res);
-
-        res = handler.replaceAll(res, GetMessageDetailsHandler.regex_existingEmailLinks, GetMessageDetailsHandler.repl_existngEmailLinks);
-        assertEquals("-- <div> .. <a onClick=\"mailTo('someone@somedomain.com');return false;\" href=\"mailto:someone@somedomain.com\">someone@somedomain.com</a> .. </div>", res);
-        
-    }
-
     public void testTextDocumentToHtml() throws Exception {
 
         String msg = "...\nhttp://www.example.com/path/action.do;s=1;a=2?p=abcd\n...";
-        String res = handler.txtDocumentToHtml(msg, "aFolder", 9999l);
+        String res = getDetailsMsgHndl.txtDocumentToHtml(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
         assertTrue(res.contains("onClick=\"openLink('http://"));
         
         msg = "...\nnobody@subdomain.the-domain.org\n...";
-        res = handler.txtDocumentToHtml(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.txtDocumentToHtml(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
         assertTrue(res.contains("onClick=\"mailTo('nobody@"));
         
-        res = handler.txtDocumentToHtml("", "aFolder", 9999l);
+        res = getDetailsMsgHndl.txtDocumentToHtml("", "aFolder", 9999l);
         assertTrue(res.length()==0);
         
     }
@@ -141,42 +57,42 @@
     public void testFilterHtmlDocument() throws Exception {
 
         String msg = "<div>...\nhttp://whatever\n...</div>";
-        String res = handler.txtDocumentToHtml(msg, "aFolder", 9999l);
+        String res = getDetailsMsgHndl.txtDocumentToHtml(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
         assertTrue(res.contains("onClick=\"openLink('http://whatever"));
         
         msg = "...\n<a\nhref=https://www.example.com/path/action.do;s=1;a=2?p=abcd\n...";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
         assertTrue(res.contains("onClick=\"openLink('https://"));
 
         msg = "...\n<a\nhref=mailTo:nobody@subdomain.the-domain.org\n...";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
         assertTrue(res.contains("onClick=\"mailTo('nobody@"));
 
         msg = "...\n...<img   \n   src=\"cid:1.1934304663@web28309.mail.ukl.yahoo.com\" width=200\n....";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
-        assertEquals("...\n...<img   \n   src=\"" + 
+        assertEquals("...\n...<img   \n   src='" + 
                 SConsts.HUPA + SConsts.SERVLET_DOWNLOAD + "?" 
                 + SConsts.PARAM_FOLDER + "=aFolder&" 
                 + SConsts.PARAM_UID + "=9999&"
-                + SConsts.PARAM_NAME + "=1.1934304663@web28309.mail.ukl.yahoo.com\" width=200\n....", res);
+                + SConsts.PARAM_NAME + "=1.1934304663@web28309.mail.ukl.yahoo.com' name='cid:1.1934304663@web28309.mail.ukl.yahoo.com' width=200\n....", res);
         
         msg = "\n\n.... <Script \ntype=\"whatever\"\n>\nalert('hello');\n</script > ---\n\n";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
 
         msg = "\n\n.... <a \nid=\"whatever\"\nonclick=\"alert('hello');\"\n</a > ---\n\n";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
 
         msg = "\n\n.... <style \ntype=\"whatever\"\n>\n.a{};\n</Style > ---\n\n";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertNotSame(msg, res);
         
-        res = handler.filterHtmlDocument("", "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument("", "aFolder", 9999l);
         assertTrue(res.length()==0);
 
     }
@@ -184,28 +100,28 @@
     public void testRegexEmailsInsideTagAttributes() {
         String msg, res;
         msg = ".. <a href=\"http://whatever?param1=whatever&email= dock@example.com&param3\">..</a> ..";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertFalse(res.contains("mailTo("));
 
         msg = ".. <a href=bla > http://whatever?param1=whatever&email=dock@example.com&param3 </a> ..";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertFalse(res.contains("mailTo("));
         assertFalse(res.contains("openLink("));
 
         msg = ".. <div > http://whatever?param1=whatever&email=dock@example.com&param3 <p> ..";
-        res = handler.filterHtmlDocument(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.filterHtmlDocument(msg, "aFolder", 9999l);
         assertFalse(res.contains("mailTo("));
         assertTrue(res.contains("openLink("));
         
         msg = "http://accounts.myspace.com.deaaaf.me.uk/msp/index.php?fuseaction=update&code=78E2BL6-EKY5L893K4MHSA-74ESO-D743U41GYB18J-FA18EI698V4M&email=somehone@somewere.com";
-        res = handler.txtDocumentToHtml(msg, "aFolder", 9999l);
+        res = getDetailsMsgHndl.txtDocumentToHtml(msg, "aFolder", 9999l);
         assertFalse(res.contains("mailTo("));
         assertTrue(res.contains("openLink("));
         
     }
 
     private MessageDetails loadMessageDetails(String msgFile) throws Exception {
-        return handler.mimeToDetails(loadMessage(msgFile), "theFolder", 9999l);
+        return getDetailsMsgHndl.mimeToDetails(TestUtils.loadMessageFromFile(session,msgFile), "theFolder", 9999l);
     }
     
     public void testMessageDetails_textPlain() throws Exception {
@@ -226,7 +142,7 @@
     }
 
     public void testMessageDetails_charsetIso() throws Exception {
-        MimeMessage message = loadMessage("3.msg");
+        MimeMessage message = TestUtils.loadMessageFromFile(session,"3.msg");
         String from = message.getFrom()[0].toString();
         assertTrue(from.contains("\u00AE"));
         
@@ -246,30 +162,39 @@
         assertTrue(details.getText().length() > 0);
     }
     
-
     public void testMessageDetails_html_with_inline_images() throws Exception {
+
+        IMAPStoreCache storeCache = injector.getInstance(IMAPStoreCache.class);
+        IMAPStore store = injector.getInstance(IMAPStore.class);
+
+        User demouser = DemoModeConstants.demoUser;
+        ((MockIMAPStoreCache)storeCache).addValidUser(demouser, store);
         
-        MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
-        MockIMAPFolder serverfolder = (MockIMAPFolder)store.getFolder("WHATEVER"); 
+        IMAPFolder serverfolder = (IMAPFolder)store.getFolder("WHATEVER"); 
         serverfolder.create(Folder.HOLDS_MESSAGES);
         
-        MimeMessage msg = loadMessage("7.msg");
+        MimeMessage msg = TestUtils.loadMessageFromFile(session,"7.msg");
         serverfolder.addMessages(new Message[]{msg});
-
-        IMAPFolder clientfolder = new IMAPFolder("WHATEVER");
-        MessageDetails details = handler.exposeMessage(user, clientfolder, 0);
-        assertTrue(details.getText().contains("img src=\"" + 
+        
+        org.apache.hupa.shared.data.IMAPFolder clientfolder = new org.apache.hupa.shared.data.IMAPFolder("WHATEVER");
+        MessageDetails details = getDetailsMsgHndl.exposeMessage(demouser, clientfolder, 0);
+        
+        // inline images have to be downloaded from the server
+        assertTrue(details.getText().contains("img src=\'" + 
                 SConsts.HUPA + SConsts.SERVLET_DOWNLOAD + "?" +
                 SConsts.PARAM_FOLDER + "=WHATEVER&" + 
                 SConsts.PARAM_UID + "=0&" + 
-                SConsts.PARAM_NAME + "=1.1934304663@web28309.mail.ukl.yahoo.com\""));
+                SConsts.PARAM_NAME + "=1.1934304663@web28309.mail.ukl.yahoo.com'"));
+        
+        // inline images are not in the message list
+        assertEquals(0, details.getMessageAttachments().size());
         
     }
 
     public void testMessageDetails_links() throws Exception {
         MessageDetails details = loadMessageDetails("2.msg");
 
-        String html = handler.filterHtmlDocument(details.getText(), "foldername", 111l);
+        String html = getDetailsMsgHndl.filterHtmlDocument(details.getText(), "foldername", 111l);
         assertFalse(html.contains("<script>"));
         assertFalse(html.contains("<style>"));
         assertTrue(html.contains("<a onClick=\"openLink('http://code.google.com/intl/es/webtoolkit/');return false;\" href=\"http://code.google.com/intl/es/webtoolkit/\""));

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java Tue Dec  1 15:05:00 2009
@@ -22,13 +22,11 @@
 
 import net.customware.gwt.dispatch.shared.ActionException;
 
-import org.apache.hupa.server.mock.MockLog;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.rpc.LogoutUser;
 import org.apache.hupa.shared.rpc.LogoutUserResult;
 
 public class LogoutUserHandlerTest extends AbstractHandlerTest{
-
     
     public void testLogout() {
         String username = "test";

Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/servlet/DownloadAttachmentServletTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/servlet/DownloadAttachmentServletTest.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/servlet/DownloadAttachmentServletTest.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/servlet/DownloadAttachmentServletTest.java Tue Dec  1 15:05:00 2009
@@ -4,19 +4,21 @@
 import javax.mail.internet.MimeMessage;
 
 import org.apache.hupa.server.handler.AbstractHandlerTest;
+import org.apache.hupa.server.utils.MessageUtils;
+import org.apache.hupa.server.utils.TestUtils;
 
 public class DownloadAttachmentServletTest extends AbstractHandlerTest {
 
     public void testDownloadAttachmentByName() throws Exception {
-        MimeMessage message = loadMessage("7.msg");
-        Part part = DownloadAttachmentServlet.handleMultiPart(logger, message
+        MimeMessage message = TestUtils.loadMessageFromFile(session, "7.msg");
+        Part part = MessageUtils.handleMultiPart(logger, message
                 .getContent(), "Image.4FB480B138F7456382ABBD1EE7B0748A");
         assertNotNull(part);
     }
     
     public void testDownloadAttachmentByContentId() throws Exception {
-        MimeMessage message = loadMessage("7.msg");
-        Part part = DownloadAttachmentServlet.handleMultiPart(logger, message
+        MimeMessage message = TestUtils.loadMessageFromFile(session, "7.msg");
+        Part part = MessageUtils.handleMultiPart(logger, message
                 .getContent(), "1.1934304663@web28309.mail.ukl.yahoo.com");
         assertNotNull(part);
     }

Added: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java?rev=885783&view=auto
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java (added)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/MessageUtilsTest.java Tue Dec  1 15:05:00 2009
@@ -0,0 +1,28 @@
+package org.apache.hupa.server.utils;
+
+import java.util.List;
+
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.Session;
+
+import org.apache.commons.logging.Log;
+import org.apache.hupa.server.guice.GuiceTestModule;
+
+import com.google.inject.Injector;
+
+import junit.framework.TestCase;
+
+public class MessageUtilsTest extends TestCase {
+
+    GuiceTestModule module = new GuiceTestModule();
+    Injector injector = module.getInjector();
+    
+    public void testExtractMessageAttachments() throws Exception {
+        Session session = injector.getInstance(Session.class);
+        Log logger = injector.getInstance(Log.class);
+        Message message = TestUtils.createMockMimeMessage(session, 2);
+        List<BodyPart> parts = MessageUtils.extractMessageAttachments(logger, message.getContent());
+        assertEquals(2, parts.size());
+    }
+}
\ No newline at end of file

Added: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/RegexPatternsTest.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/RegexPatternsTest.java?rev=885783&view=auto
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/RegexPatternsTest.java (added)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/RegexPatternsTest.java Tue Dec  1 15:05:00 2009
@@ -0,0 +1,106 @@
+package org.apache.hupa.server.utils;
+
+import junit.framework.TestCase;
+
+public class RegexPatternsTest extends TestCase {
+    
+    public void testRegexHtml() {
+        String txt, res;
+        txt = "<!'https://www.aaa.1:#@%/;$()~_?+-=\\.&<br/>";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_htmllink, "");
+        assertEquals("<!'<br/>", res);
+
+        txt = "... a b c http://somewhere d e f ...";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_htmllink, RegexPatterns.repl_htmllink);
+        assertEquals("... a b c <a href=\"http://somewhere\">http://somewhere</a> d e f ...", res);
+    }
+
+    public void testRegexEmail() {
+        String txt, res;
+        txt = "!'BcD091_%55-+.aa@abc01-01.dd-a.aBc+";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_email, "");
+        assertEquals("!'+", res);
+
+        txt = "!'=BcD091_%55-+.aa@abc01-01.dd-a.aBc+";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_email, "");
+        assertEquals(txt, res);
+
+        txt = "... a b c aaa@aaa.bbb d e f ...";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_email, RegexPatterns.repl_email);
+        assertEquals(res, "... a b c <a href=\"mailto:aaa@aaa.bbb\">aaa@aaa.bbb</a> d e f ...");
+    }
+
+    public void testRegexInlineImg() {
+        String txt, res;
+        txt = ".. <img\nsrc=\"cid:abcd\"\nwhatever=/>click</a\n> ..";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_inlineImg, RegexPatterns.repl_inlineImg);
+        assertEquals(".. <img\nsrc='hupa/downloadAttachmentServlet?folder=%%FOLDER%%&uid=%%UID%%&name=abcd' name='cid:abcd'\nwhatever=/>click</a\n> ..", res);
+    }
+
+    public void testRegexRestoreInlineLinks() {
+        String txt, res;
+        txt = ".. <img\nsrc='cid:abcd'\nwhatever=/>click</a\n> ..";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_inlineImg, RegexPatterns.repl_inlineImg);
+        assertNotSame(txt, res);
+        
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_revertInlineImg, RegexPatterns.repl_revertInlineImg);
+        assertEquals(txt, res);
+    }
+
+    
+    public void testRegexBadTags() {
+        String txt, res;
+        txt = "<html><head>h<tag></head><body>.<style>..</style>.<script type=>//</script></body>.</html>";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_badTags, RegexPatterns.repl_badTags);
+        res = RegexPatterns.replaceAll(res, RegexPatterns.regex_unneededTags, RegexPatterns.repl_unneededTags);
+        assertEquals("...", res);
+    }
+
+    public void testRegexBadAttributes() {
+
+        String txt, res;
+        txt = "... <div attr=a onClick=\"something('');\"> ...";
+        res = RegexPatterns.replaceAllRecursive(txt, RegexPatterns.regex_badAttrs, RegexPatterns.repl_badAttrs);
+        assertEquals("... <div attr=a> ...", res);
+
+        txt = "... <div attr=a onClick=\"something('');\" attr=b onMouseOver=whatever attr=c onKeyup=\"\" /> ...";
+        res = RegexPatterns.replaceAllRecursive(txt, RegexPatterns.regex_badAttrs, RegexPatterns.repl_badAttrs);
+        assertEquals("... <div attr=a attr=b attr=c /> ...", res);
+    }
+    
+    public void testRegexHtmlLinks() {
+        String txt, res;
+        txt = ".. <a href=\"http://whatever\">..</a> ..";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_existingHttpLinks, RegexPatterns.repl_existingHttpLinks);
+        assertEquals(".. <a onClick=\"openLink('http://whatever');return false;\" href=\"http://whatever\">..</a> ..", res);
+
+        txt = "-- <div> .. <img src=\"http://whatever\"/> .. </div>";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_orphandHttpLinks, RegexPatterns.repl_orphandHttpLinks);
+        assertEquals(txt, res);
+        
+        txt = "-- <div> .. \"http://whatever\" .. </div>";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_orphandHttpLinks, RegexPatterns.repl_orphandHttpLinks);
+        assertEquals("-- <div> .. \"<a href=\"http://whatever\">http://whatever</a>\" .. </div>", res);
+
+        res = RegexPatterns.replaceAll(res, RegexPatterns.regex_existingHttpLinks, RegexPatterns.repl_existingHttpLinks);
+        assertEquals("-- <div> .. \"<a onClick=\"openLink('http://whatever');return false;\" href=\"http://whatever\">http://whatever</a>\" .. </div>", res);
+        
+    }
+
+    public void testRegexEmailLinks() {
+        String txt, res;
+        
+        txt = ".. <a href=\"mailTo:someone@somedomain.com\">..</a> ..";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_existingEmailLinks, RegexPatterns.repl_existngEmailLinks);
+        assertEquals(".. <a onClick=\"mailTo('someone@somedomain.com');return false;\" href=\"mailto:someone@somedomain.com\">..</a> ..", res);
+        
+        txt = "-- <div> .. someone@somedomain.com .. </div>";
+        res = RegexPatterns.replaceAll(txt, RegexPatterns.regex_orphandEmailLinks, RegexPatterns.repl_orphandEmailLinks);
+        assertEquals("-- <div> .. <a href=\"mailto:someone@somedomain.com\">someone@somedomain.com</a> .. </div>", res);
+
+        res = RegexPatterns.replaceAll(res, RegexPatterns.regex_existingEmailLinks, RegexPatterns.repl_existngEmailLinks);
+        assertEquals("-- <div> .. <a onClick=\"mailTo('someone@somedomain.com');return false;\" href=\"mailto:someone@somedomain.com\">someone@somedomain.com</a> .. </div>", res);
+        
+    }
+
+}
\ No newline at end of file

Copied: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/TestUtils.java (from r884868, james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/MsgUtils.java)
URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/TestUtils.java?p2=james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/TestUtils.java&p1=james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/MsgUtils.java&r1=884868&r2=885783&rev=885783&view=diff
==============================================================================
--- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/MsgUtils.java (original)
+++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/utils/TestUtils.java Tue Dec  1 15:05:00 2009
@@ -17,11 +17,12 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.server.handler;
-
-import gwtupload.server.MemoryFileItemFactory;
+package org.apache.hupa.server.utils;
 
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 
@@ -30,72 +31,25 @@
 import javax.mail.Multipart;
 import javax.mail.Part;
 import javax.mail.Session;
+import javax.mail.Message.RecipientType;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
 
+import junit.framework.TestCase;
+
 import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.hupa.server.FileItemRegistry;
+import org.apache.hupa.server.guice.DemoModeConstants;
+import org.apache.hupa.server.handler.AbstractSendMessageHandler;
 import org.apache.hupa.shared.data.MessageAttachment;
 import org.apache.hupa.shared.data.SMTPMessage;
 
-public class MsgUtils {
-
-    /**
-     * Creates a FileItem which is stored in memory
-     * 
-     * @param filename
-     * @return a new item
-     * @throws IOException
-     */
-    public static FileItem createMockFileItem(String filename) throws IOException {
-        MemoryFileItemFactory f = new MemoryFileItemFactory();
-        FileItem item = f.createItem("fieldname_" + filename, "mock/attachment", false, filename);
-        item.getOutputStream().write("file content".getBytes());
-        item.getOutputStream().close();
-        return item;
-    }
-
-    /**
-     * Parses a mime message and returns an array of content-types which is a
-     * simple representation of its structure. Each line of the array represents
-     * a part and it is indented with spaces. It's used in testing or debugging.
-     * 
-     * @param msg
-     * @return
-     * @throws IOException
-     * @throws MessagingException
-     */
-    protected static ArrayList<String> summaryzeContent(Message msg) throws IOException, MessagingException {
-        return summaryzeContent(msg.getContent(), msg.getContentType(), 0);
-    }
-
-    static ArrayList<String> summaryzeContent(Object content, String contentType, final int spaces) throws IOException, MessagingException {
-
-        ContenTypeArrayList ret = new ContenTypeArrayList();
-
-        ret.add(contentType, spaces);
-        if (content instanceof Multipart) {
-            Multipart mp = (Multipart) content;
-            contentType = mp.getContentType();
-            for (int i = 0; i < mp.getCount(); i++) {
-                Part part = mp.getBodyPart(i);
-                contentType = part.getContentType();
-                if (contentType.startsWith("text")) {
-                    ret.add(contentType, spaces + 1);
-                } else if (contentType.startsWith("message/rfc822")) {
-                    MimeMessage msg = (MimeMessage) part.getDataHandler().getContent();
-                    ret.addAll(summaryzeContent(msg.getContent(), msg.getContentType(), spaces + 1));
-                } else {
-                    if (part.getFileName() != null) {
-                        ret.add(part.getContentType(), part.getFileName(), spaces + 1);
-                    } else {
-                        ret.addAll(summaryzeContent(part.getContent(), contentType, spaces + 1));
-                    }
-                }
-            }
-        }
-        return ret;
-    }
+/**
+ * A bunch of useful methods used for testing
+ */
+public class TestUtils extends TestCase {
 
     /**
      * A class which represents the tree of content-types present in a mime
@@ -114,14 +68,6 @@
             return super.add(ident(spaces, cleanCType(type) + " => " + name));
         }
 
-        public String toString() {
-            String ret = "";
-            for (String s : this) {
-                ret += s + "\n";
-            }
-            return ret;
-        }
-
         private String cleanCType(String contenType) {
             return contenType.toLowerCase().replaceAll("(?s)[\"\\s]*(.+);.*$", "$1");
         }
@@ -132,14 +78,104 @@
                 ret += " ";
             return ret + text;
         }
+
+        public String toString() {
+            String ret = "";
+            for (String s : this) {
+                ret += s + "\n";
+            }
+            return ret;
+        }
     }
 
-    public static SMTPMessage fillSMTPMessage(FileItemRegistry registry, int nfiles) throws AddressException, MessagingException, IOException {
+    /**
+     * Creates a FileItem which stores data in memory
+     * 
+     * @param filename
+     * @return a new item
+     * @throws IOException
+     */
+    public static FileItem createMockFileItem(String filename) throws IOException {
+        FileItemFactory f = new DiskFileItemFactory();
+        FileItem item = f.createItem("fieldname_" + filename, "mock/attachment", false, filename);
+        OutputStream os = item.getOutputStream();
+        os.write("ABCDEFGHIJK\n".getBytes());
+        os.close();
+        return item;
+    }
+    
+    public void testCreateMockFileItem() throws Exception {
+        FileItem item = createMockFileItem("filename.jpg");
+        assertEquals("ABCDEFGHIJK\n", item.getString());
+    }
+
+    /**
+     * Create a new mime-message from a file stored in the fixtures folder
+     * 
+     * @param session
+     * @param msgFile
+     * @return
+     * @throws Exception
+     */
+    public static MimeMessage loadMessageFromFile(Session session, String msgFile) throws Exception {
+        msgFile = DemoModeConstants.DEMO_MODE_MESSAGES_LOCATION + msgFile;
+        URL url = Thread.currentThread().getContextClassLoader().getResource(msgFile);
+        assertNotNull("Check that the file " + msgFile + " is in the classpath", url);
+    
+        FileInputStream is = new FileInputStream(url.getFile());
+        return new MimeMessage(session, is);
+    }
+
+    /**
+     * Creates a new mime message.
+     * It is possible to specify which parts to create (text, html or both) and
+     * the number of attachments 
+     *  
+     * @param session
+     * @param text
+     * @param html
+     * @param nfiles
+     * @return
+     * @throws MessagingException
+     * @throws IOException
+     */
+    public static Message createMockMimeMessage(Session session, String text, String html, int nfiles) throws MessagingException, IOException {
+        ArrayList<FileItem> items = new ArrayList<FileItem>();
+        for (int i = 1; i <= nfiles; i++) {
+            FileItem fileItem;
+            fileItem = TestUtils.createMockFileItem("file_" + i + ".bin");
+            items.add(fileItem);
+        }
+        MimeMessage message = new MimeMessage(session);
+        message.setFrom(MessageUtils.getRecipients("from@dom.com")[0]);
+        message.setRecipients(RecipientType.TO, MessageUtils.getRecipients("to@dom.com"));
+        message.setRecipients(RecipientType.CC, MessageUtils.getRecipients("cc@dom.com"));
+        message.setRecipients(RecipientType.BCC, MessageUtils.getRecipients("bcc@dom.com"));
+        message.setSubject("Subject");
+        return AbstractSendMessageHandler.composeMessage(message, text, html, items);
+    }
+    
+    public static Message createMockMimeMessage(Session session, int nfiles) throws MessagingException, IOException {
+        return createMockMimeMessage(session, "Body", "<div>Body</div>", nfiles);
+    }
+
+    /**
+     * Creates a client side mock smtp message.
+     * It is possible to say the number of attachments we want.
+     *  
+     * @param registry
+     * @param nfiles
+     * @return
+     * @throws AddressException
+     * @throws MessagingException
+     * @throws IOException
+     */
+    public static SMTPMessage createMockSMTPMessage(FileItemRegistry registry, int nfiles) throws AddressException, MessagingException, IOException {
         ArrayList<MessageAttachment> attachments = new ArrayList<MessageAttachment>();
 
         for (int i = 1; i <= nfiles; i++) {
             FileItem fileItem;
-            fileItem = MsgUtils.createMockFileItem("file_" + i + ".bin");
+            fileItem = TestUtils.createMockFileItem("file_" + i + ".bin");
             registry.add(fileItem);
 
             MessageAttachment msgAttach = new MessageAttachment();
@@ -152,9 +188,9 @@
 
         SMTPMessage smtpMessage = new SMTPMessage();
         smtpMessage.setFrom("from@dom.com");
-        smtpMessage.setTo(Arrays.asList("to@dom.com"));
-        smtpMessage.setCc(Arrays.asList("cc@dom.com"));
-        smtpMessage.setBcc(Arrays.asList("bcc@dom.com"));
+        smtpMessage.setTo(new ArrayList<String>(Arrays.asList("to@dom.com")));
+        smtpMessage.setCc(new ArrayList<String>(Arrays.asList("cc@dom.com")));
+        smtpMessage.setBcc(new ArrayList<String>(Arrays.asList("bcc@dom.com")));
         smtpMessage.setSubject("Subject");
         smtpMessage.setText("<div>Body</div>");
         smtpMessage.setMessageAttachments(attachments);
@@ -163,14 +199,48 @@
 
     }
 
-    public static Message fillMockMimeMessage(Session session, String text, String html, int nfiles) throws MessagingException, IOException {
-        ArrayList<FileItem> items = new ArrayList<FileItem>();
-        for (int i = 1; i <= nfiles; i++) {
-            FileItem fileItem;
-            fileItem = MsgUtils.createMockFileItem("file_" + i + ".bin");
-            items.add(fileItem);
+    /**
+     * Parses a mime message and returns an array of content-types.
+     * Each line in the array represents a mime part and is indented 
+     * with spaces.
+     *  
+     * It's used in testing or debugging.
+     * 
+     * @param msg
+     * @return
+     * @throws IOException
+     * @throws MessagingException
+     */
+    public static ArrayList<String> summaryzeContent(Message msg) throws IOException, MessagingException {
+        return summaryzeContent(msg.getContent(), msg.getContentType(), 0);
+    }
+
+    public static ArrayList<String> summaryzeContent(Object content, String contentType, final int spaces) throws IOException, MessagingException {
+
+        ContenTypeArrayList ret = new ContenTypeArrayList();
+
+        ret.add(contentType, spaces);
+        if (content instanceof Multipart) {
+            Multipart mp = (Multipart) content;
+            contentType = mp.getContentType();
+            for (int i = 0; i < mp.getCount(); i++) {
+                Part part = mp.getBodyPart(i);
+                contentType = part.getContentType();
+                if (contentType.startsWith("text")) {
+                    ret.add(contentType, spaces + 1);
+                } else if (contentType.startsWith("message/rfc822")) {
+                    MimeMessage msg = (MimeMessage) part.getDataHandler().getContent();
+                    ret.addAll(summaryzeContent(msg.getContent(), msg.getContentType(), spaces + 1));
+                } else {
+                    if (part.getFileName() != null) {
+                        ret.add(part.getContentType(), part.getFileName(), spaces + 1);
+                    } else {
+                        ret.addAll(summaryzeContent(part.getContent(), contentType, spaces + 1));
+                    }
+                }
+            }
         }
-        return AbstractSendMessageHandler.composeMessage(session, text, html, items);
+        return ret;
     }
 
 }
\ No newline at end of file

Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java Tue Dec  1 15:05:00 2009
@@ -20,7 +20,7 @@
 package org.apache.hupa.shared.data;
 
 import java.io.Serializable;
-import java.util.List;
+import java.util.ArrayList;
 
 public class AbstractMessage implements Serializable{
     
@@ -30,8 +30,8 @@
     private static final long serialVersionUID = 5208272852772006815L;
     private String from;
     private String subject;
-    private List<String> to;
-    private List<String> cc;
+    private ArrayList<String> to;
+    private ArrayList<String> cc;
     private boolean hasAttachment;
     
     public String toString() {
@@ -80,11 +80,11 @@
     }
 
 
-    public void setCc(List<String> cc) {
+    public void setCc(ArrayList<String> cc) {
         this.cc = cc;
     }
 
-    public List<String> getCc() {
+    public ArrayList<String> getCc() {
         return cc;
     }
 
@@ -106,11 +106,11 @@
         return subject;
     }
 
-    public  List<String> getTo() {
+    public ArrayList<String> getTo() {
         return to;
     }
 
-    public void setTo(List<String> to) {
+    public void setTo(ArrayList<String> to) {
         this.to = to;
     }
     

Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java?rev=885783&r1=885782&r2=885783&view=diff
==============================================================================
--- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java (original)
+++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java Tue Dec  1 15:05:00 2009
@@ -20,11 +20,10 @@
 package org.apache.hupa.shared.data;
 
 import java.util.ArrayList;
-import java.util.List;
 
 public class SMTPMessage extends AbstractMessage{
     private static final long serialVersionUID = 7331361994526216161L;
-    private List<String> bcc;
+    private ArrayList<String> bcc;
     private String text;
     private ArrayList<MessageAttachment> aList;
     
@@ -44,10 +43,10 @@
              + "'\nMessage:\n" + text;
     }
     
-    public List<String> getBcc() {
+    public ArrayList<String> getBcc() {
         return bcc;
     }
-    public void setBcc( List<String> bcc) {
+    public void setBcc(ArrayList<String> bcc) {
         this.bcc = bcc;
     }
     



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org