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=830933&r1=830932&r2=830933&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 Thu Oct 29 13:24:15 2009 @@ -26,6 +26,7 @@ import net.customware.gwt.dispatch.shared.ActionException; +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; @@ -37,12 +38,10 @@ public class FetchFoldersHandlerTest extends AbstractHandlerTest{ public void testInvalidSessionId() { - User user = createUser(); - FetchFoldersHandler handler = new FetchFoldersHandler(storeCache,new MockLog(),sessionProvider); + FetchFoldersHandler handler = new FetchFoldersHandler(storeCache,new MockLog(),httpSessionProvider); try { handler.execute(new FetchFolders(), null); fail("Invalid session"); - } catch (InvalidSessionException e) { //e.printStackTrace(); } catch (ActionException e) { @@ -53,9 +52,9 @@ public void testNoFolders() { User user = createUser(); - session.setAttribute("user", user); + httpSession.setAttribute("user", user); storeCache.addValidUser(user.getName(), user.getPassword()); - FetchFoldersHandler handler = new FetchFoldersHandler(storeCache,new MockLog(),sessionProvider); + FetchFoldersHandler handler = new FetchFoldersHandler(storeCache,new MockLog(),httpSessionProvider); try { FetchFoldersResult result = handler.execute(new FetchFolders(), null); assertTrue(result.getFolders().isEmpty()); @@ -67,26 +66,26 @@ public void testFoundFolders() throws MessagingException { User user = createUser(); - session.setAttribute("user", user); + httpSession.setAttribute("user", user); storeCache.addValidUser(user.getName(), user.getPassword()); MockIMAPStore store = (MockIMAPStore) storeCache.get(user); - store.getFolder("INBOX.WHATEVER").create(Folder.HOLDS_FOLDERS); - store.getFolder("INBOX.WHATEVER1").create(Folder.HOLDS_FOLDERS); - store.getFolder("INBOX.WHATEVER.XXX").create(Folder.HOLDS_FOLDERS); + store.getFolder("WHATEVER").create(Folder.HOLDS_FOLDERS); + store.getFolder("WHATEVER1").create(Folder.HOLDS_FOLDERS); + store.getFolder("WHATEVER.XXX").create(Folder.HOLDS_FOLDERS); - FetchFoldersHandler handler = new FetchFoldersHandler(storeCache,new MockLog(),sessionProvider); + FetchFoldersHandler handler = new FetchFoldersHandler(storeCache,new MockLog(),httpSessionProvider); try { FetchFoldersResult result = handler.execute(new FetchFolders(), null); ArrayList<IMAPFolder> folders = result.getFolders(); assertFalse(folders.isEmpty()); assertEquals(3, folders.size()); - assertEquals("INBOX.WHATEVER",folders.get(0).getFullName()); - assertEquals("INBOX.WHATEVER1",folders.get(1).getFullName()); - assertEquals("INBOX.WHATEVER.XXX",folders.get(2).getFullName()); + assertEquals("WHATEVER",folders.get(0).getFullName()); + assertEquals("WHATEVER1",folders.get(1).getFullName()); + assertEquals("WHATEVER" + MockIMAPFolder.SEPARATOR + "XXX",folders.get(2).getFullName()); assertEquals("XXX",folders.get(2).getName()); - assertEquals("INBOX.WHATEVER.XXX",folders.get(0).getChildIMAPFolders().get(0).getFullName()); + assertEquals("WHATEVER" + MockIMAPFolder.SEPARATOR + "XXX",folders.get(0).getChildIMAPFolders().get(0).getFullName()); } catch (ActionException e) { e.printStackTrace();
Added: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java?rev=830933&view=auto ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java (added) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/FetchMessagesHandlerTest.java Thu Oct 29 13:24:15 2009 @@ -0,0 +1,119 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.hupa.server.handler; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; + +import javax.mail.Flags; +import javax.mail.Folder; +import javax.mail.Message; +import javax.mail.Flags.Flag; +import javax.mail.internet.MimeMessage; + +import org.apache.hupa.server.mock.MockIMAPFolder; +import org.apache.hupa.server.mock.MockIMAPStore; +import org.apache.hupa.shared.data.IMAPFolder; +import org.apache.hupa.shared.rpc.FetchMessages; +import org.apache.hupa.shared.rpc.FetchMessagesResult; + +public class FetchMessagesHandlerTest extends AbstractHandlerTest{ + + FetchMessagesHandler handler = new FetchMessagesHandler(storeCache, logger, httpSessionProvider); + + public void setUp() { + super.setUp(); + httpSession.setAttribute("user", user); + } + + public void testConvert() throws Exception { + + MockIMAPStore store = (MockIMAPStore) storeCache.get(user); + MockIMAPFolder f = (MockIMAPFolder)store.getFolder("WHATEVER"); + f.create(Folder.HOLDS_MESSAGES); + + ByteArrayInputStream is = new ByteArrayInputStream("From: [email protected]\nto: [email protected]\nsubject: something\n\ndata".getBytes()); + MimeMessage m1 = new MimeMessage(session, is); + is = new ByteArrayInputStream("From: =?ISO-8859-1?Q?Manolo_Pe=F1a?= <[email protected]>\nTo: [email protected]\nsubject: something\n\ndata".getBytes()); + MimeMessage m2 = new MimeMessage(session, is); + is = new ByteArrayInputStream("From: [email protected]\nto: [email protected]\nsubject: =?ISO-8859-1?Q?Monta=F1a?=\n\ndata".getBytes()); + MimeMessage m3 = new MimeMessage(session, is); + + ArrayList<org.apache.hupa.shared.data.Message> msgs = handler.convert(2, f, new Message[]{m1, m2, m3}); + assertEquals(2, msgs.size()); + + msgs = handler.convert(10, f, new Message[]{m1, m2, m3}); + assertEquals(3, msgs.size()); + + msgs = handler.convert(10, f, new Message[]{m2}); + assertEquals("Manolo Pe\u00F1a <[email protected]>", msgs.get(0).getFrom()); + + msgs = handler.convert(10, f, new Message[]{m3}); + assertEquals("Monta\u00F1a", msgs.get(0).getSubject()); + } + + public void testFetchMessages() throws Exception { + + MockIMAPStore store = (MockIMAPStore) storeCache.get(user); + MockIMAPFolder serverfolder = (MockIMAPFolder)store.getFolder("WHATEVER"); + serverfolder.create(Folder.HOLDS_MESSAGES); + + IMAPFolder clientfolder = new IMAPFolder("WHATEVER"); + FetchMessagesResult result = handler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null); + assertEquals(0, result.getRealCount()); + + ByteArrayInputStream is = new ByteArrayInputStream("From: [email protected]\nto: [email protected]\nsubject: something\n\ndata".getBytes()); + MimeMessage msg = new MimeMessage(session, is); + serverfolder.addMessages(new Message[]{msg}); + + result = handler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null); + assertEquals(1, result.getRealCount()); + assertEquals(1, result.getMessages().size()); + + result = handler.execute(new FetchMessages(clientfolder, 0, 10, null), null); + assertEquals(1, result.getRealCount()); + assertEquals(1, result.getMessages().size()); + + is = new ByteArrayInputStream("From: [email protected]\nto: [email protected]\nsubject: something\n\ndata".getBytes()); + msg = new MimeMessage(session, is); + serverfolder.appendMessages(new Message[]{msg}); + + result = handler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null); + assertEquals(2, result.getRealCount()); + assertEquals(2, result.getMessages().size()); + + result = handler.execute(new FetchMessages(clientfolder, 0, 10, null), null); + assertEquals(2, serverfolder.getMessageCount()); + assertEquals(2, serverfolder.getUnreadMessageCount()); + assertEquals(2, result.getRealCount()); + assertEquals(2, result.getMessages().size()); + assertEquals(2, result.getMessages().size()); + + msg.setFlags(new Flags(Flag.SEEN), true); + assertEquals(1, serverfolder.getUnreadMessageCount()); + + serverfolder.appendMessages(new Message[]{msg}); + result = handler.execute(new FetchMessages(clientfolder, 0, 10, "*"), null); + assertEquals(3, result.getRealCount()); + assertEquals(1, result.getRealUnreadCount()); + + } + +} Added: 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=830933&view=auto ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/GetMessageDetailsHandlerTest.java (added) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/GetMessageDetailsHandlerTest.java Thu Oct 29 13:24:15 2009 @@ -0,0 +1,101 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.hupa.server.handler; + +import javax.mail.Folder; +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.shared.data.IMAPFolder; +import org.apache.hupa.shared.data.MessageDetails; + +public class GetMessageDetailsHandlerTest extends AbstractHandlerTest { + + GetMessageDetailsHandler handler = new GetMessageDetailsHandler(storeCache, logger, httpSessionProvider); + + private MessageDetails loadMessageDetails(String msgFile) throws Exception { + return handler.mimeToDetails(loadMessage(msgFile)); + } + + public void testMessageDetails_textPlain() throws Exception { + MessageDetails details = loadMessageDetails("0.msg"); + assertFalse(details.isHTML()); + assertTrue(details.getText().length() > 0); + } + + public void testMessageDetails_multiparMixed() throws Exception { + MessageDetails details = loadMessageDetails("1.msg"); + assertFalse(details.isHTML()); + assertEquals(1, details.getMessageAttachments().size()); + assertTrue(details.getText().length() > 0); + } + + public void testMessageDetails_multiparAlternative() throws Exception { + MessageDetails details = loadMessageDetails("2.msg"); + assertTrue(details.isHTML()); + assertEquals(0, details.getMessageAttachments().size()); + assertTrue(details.getText().length() > 0); + } + + public void testMessageDetails_charsetIso() throws Exception { + MimeMessage message = loadMessage("3.msg"); + String from = message.getFrom()[0].toString(); + assertTrue(from.contains("\u00AE")); + + MessageDetails details = loadMessageDetails("3.msg"); + assertTrue(details.isHTML()); + assertEquals(0, details.getMessageAttachments().size()); + assertTrue(details.getText().length() > 0); + } + + public void testMessageDetails_textHtml() throws Exception { + MessageDetails details = loadMessageDetails("4.msg"); + assertTrue(details.isHTML()); + assertTrue(details.getText().length() > 0); + } + + public void testMessageDetails_multiparMixed_multipartAlternative() throws Exception { + MessageDetails details = loadMessageDetails("6.msg"); + assertTrue(details.isHTML()); + assertEquals(1, details.getMessageAttachments().size()); + assertTrue(details.getText().length() > 0); + } + + public void testMessageDetails_html_with_inline_images() throws Exception { + + MockIMAPStore store = (MockIMAPStore) storeCache.get(user); + MockIMAPFolder serverfolder = (MockIMAPFolder)store.getFolder("WHATEVER"); + serverfolder.create(Folder.HOLDS_MESSAGES); + + MimeMessage msg = loadMessage("7.msg"); + serverfolder.addMessages(new Message[]{msg}); + + + IMAPFolder clientfolder = new IMAPFolder("WHATEVER"); + MessageDetails details = handler.exposeMessage(user, clientfolder, 0); + assertTrue(details.isHTML()); + System.out.println(details.getText()); + assertTrue(details.getText().contains("img src=\"/hupa/downloadAttachmentServlet?folder_name=WHATEVER&message_uuid=0&[email protected]\"")); + + } + +} Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java?rev=830933&r1=830932&r2=830933&view=diff ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java (original) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java Thu Oct 29 13:24:15 2009 @@ -29,8 +29,8 @@ import com.google.inject.Provider; -public class LoginUserHandlerTest extends AbstractHandlerTest{ - private LoginUserHandler handler = new LoginUserHandler(storeCache, new MockLog(),sessionProvider, new Provider<Settings>() { +public class LoginUserHandlerTest extends AbstractHandlerTest { + private LoginUserHandler handler = new LoginUserHandler(storeCache, new MockLog(),httpSessionProvider, new Provider<Settings>() { public Settings get() { return new Settings(); @@ -43,7 +43,7 @@ } catch (ActionException e) { //e.printStackTrace(); } - assertNull("no user stored in session", session.getAttribute("user")); + assertNull("no user stored in session", httpSession.getAttribute("user")); } public void testValidLogin() { @@ -58,7 +58,7 @@ assertEquals("Authenticated", true, u.getAuthenticated()); assertEquals("Authenticated", username, u.getName()); assertEquals("Authenticated", password, u.getPassword()); - assertEquals("User stored in session", u, session.getAttribute("user")); + assertEquals("User stored in session", u, httpSession.getAttribute("user")); } catch (ActionException e) { e.printStackTrace(); fail("Should throw an exception"); 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=830933&r1=830932&r2=830933&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 Thu Oct 29 13:24:15 2009 @@ -37,12 +37,12 @@ user.setName(username); user.setPassword(password); user.setAuthenticated(true); - session.setAttribute("user", user); - LogoutUserHandler handler = new LogoutUserHandler(storeCache,new MockLog(),sessionProvider); + httpSession.setAttribute("user", user); + LogoutUserHandler handler = new LogoutUserHandler(storeCache,new MockLog(),httpSessionProvider); try { LogoutUserResult result = handler.execute(new LogoutUser(), null); assertFalse("Not authenticated anymore", result.getUser().getAuthenticated()); - assertNull("User removed", session.getAttribute("user")); + assertNull("User removed", httpSession.getAttribute("user")); } catch (ActionException e) { e.printStackTrace(); Modified: james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java?rev=830933&r1=830932&r2=830933&view=diff ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java (original) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/handler/NoopHandlerTest.java Thu Oct 29 13:24:15 2009 @@ -29,11 +29,11 @@ public class NoopHandlerTest extends AbstractHandlerTest{ public void testNoop() { - NoopHandler handler = new NoopHandler(storeCache,new MockLog(),sessionProvider); + NoopHandler handler = new NoopHandler(storeCache,new MockLog(),httpSessionProvider); User user = createUser(); Noop action = new Noop(); storeCache.addValidUser(user.getName(), user.getPassword()); - session.setAttribute("user", user); + httpSession.setAttribute("user", user); try { NoopResult result = handler.execute(action, null); assertNotNull(result); Added: 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=830933&view=auto ============================================================================== --- james/hupa/trunk/server/src/test/java/org/apache/hupa/server/servlet/DownloadAttachmentServletTest.java (added) +++ james/hupa/trunk/server/src/test/java/org/apache/hupa/server/servlet/DownloadAttachmentServletTest.java Thu Oct 29 13:24:15 2009 @@ -0,0 +1,25 @@ +package org.apache.hupa.server.servlet; + +import javax.mail.Part; +import javax.mail.internet.MimeMessage; + +import org.apache.hupa.server.handler.AbstractHandlerTest; + +public class DownloadAttachmentServletTest extends AbstractHandlerTest { + + public void testDownloadAttachmentByName() throws Exception { + MimeMessage message = loadMessage("7.msg"); + Part part = DownloadAttachmentServlet.handleMultiPart(message + .getContent(), "Image.4FB480B138F7456382ABBD1EE7B0748A"); + assertNotNull(part); + } + + public void testDownloadAttachmentByContentId() throws Exception { + MimeMessage message = loadMessage("7.msg"); + Part part = DownloadAttachmentServlet.handleMultiPart(message + .getContent(), "[email protected]"); + assertNotNull(part); + System.out.println(part.getContentType()); + } + +} Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java?rev=830933&r1=830932&r2=830933&view=diff ============================================================================== --- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java (original) +++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/Util.java Thu Oct 29 13:24:15 2009 @@ -39,11 +39,10 @@ return string; } - public static String toHtml(String string) { + public static String escapeHtmlTags(String string) { if (string != null) { string = string.replaceAll(STRING_LT, HTML_LT); string = string.replaceAll(STRING_GT, HTML_GT); - string = string.replaceAll(STRING_CR, HTML_CR); } return string; } Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/Message.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/Message.java?rev=830933&r1=830932&r2=830933&view=diff ============================================================================== --- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/Message.java (original) +++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/Message.java Thu Oct 29 13:24:15 2009 @@ -38,9 +38,11 @@ private Date rDate; public enum IMAPFlag { - SEEN, DELETED, RECENT, ANSWERED, JUNK, DRAFT + SEEN, DELETED, RECENT, ANSWERED, JUNK, DRAFT, FLAGGED, USER } + + public void setFlags(ArrayList<IMAPFlag> flags) { this.flags = flags; } @@ -71,7 +73,7 @@ } public Date getReceivedDate() { - return rDate; + return rDate == null ? new Date(): rDate; } Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java?rev=830933&r1=830932&r2=830933&view=diff ============================================================================== --- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java (original) +++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java Thu Oct 29 13:24:15 2009 @@ -33,6 +33,14 @@ private long uid; private String raw; + public String toString() { + return "uid=" + String.valueOf(getUid()) + + " isHTML=" + isHTML + + " text.length=" + (text != null ? text.length() : 0) + + " raw.length=" + (raw != null ? raw.length() : 0) + + " attachments=" + (aList != null ? aList.size() : 0); + } + public long getUid() { return uid; @@ -114,10 +122,6 @@ } - public String toString() { - return String.valueOf(getUid()); - } - public boolean equals(Object obj) { if (obj instanceof MessageDetails) { if (((MessageDetails)obj).getUid() == getUid()) { Modified: james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java URL: http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java?rev=830933&r1=830932&r2=830933&view=diff ============================================================================== --- james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java (original) +++ james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/rpc/FetchFoldersResult.java Thu Oct 29 13:24:15 2009 @@ -45,4 +45,12 @@ public ArrayList<IMAPFolder> getFolders() { return folders; } + + public String toString() { + String ret = ""; + for (IMAPFolder f: folders) { + ret += f.getFullName() + " "; + } + return ret; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
