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¶m3\">..</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¶m3 </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¶m3 <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