Author: norman
Date: Fri Aug 21 14:01:17 2009
New Revision: 806560

URL: http://svn.apache.org/viewvc?rev=806560&view=rev
Log:
Add a bunch of unit tests

Added:
    labs/hupa/src/test/java/org/apache/hupa/server/handler/
    
labs/hupa/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java
    
labs/hupa/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java
    
labs/hupa/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java
    
labs/hupa/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java
    
labs/hupa/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java
    
labs/hupa/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java
    labs/hupa/src/test/java/org/apache/hupa/server/mock/MockHttpSession.java
    labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStoreCache.java
    labs/hupa/src/test/java/org/apache/hupa/server/mock/MockLog.java
Modified:
    labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPFolder.java
    labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStore.java

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java?rev=806560&view=auto
==============================================================================
--- 
labs/hupa/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java 
(added)
+++ 
labs/hupa/src/test/java/org/apache/hupa/server/handler/AbstractHandlerTest.java 
Fri Aug 21 14:01:17 2009
@@ -0,0 +1,70 @@
+/****************************************************************
+ * 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.util.Properties;
+
+import javax.mail.Session;
+import javax.servlet.http.HttpSession;
+
+import org.apache.hupa.server.mock.MockHttpSession;
+import org.apache.hupa.server.mock.MockIMAPStore;
+import org.apache.hupa.server.mock.MockIMAPStoreCache;
+import org.apache.hupa.shared.data.User;
+
+import com.google.inject.Provider;
+
+import junit.framework.TestCase;
+
+public abstract class AbstractHandlerTest extends TestCase{
+       public final static String VALID_ID ="VALID_ID";
+       
+       protected HttpSession session = new MockHttpSession(VALID_ID);
+       
+       protected MockIMAPStoreCache storeCache = new MockIMAPStoreCache( new 
Provider<Session>() {
+
+               public Session get() {
+                       Session session = Session.getDefaultInstance(new 
Properties());
+                       session.addProvider(MockIMAPStore.getProvider());
+                       return session;
+               }
+               
+       });
+       
+       protected Provider<HttpSession> sessionProvider = new 
Provider<HttpSession>() {
+               public HttpSession get() {
+                       return session;
+               }
+               
+       };
+       
+       public void tearDown() {
+               storeCache.clear();
+       }
+       
+       protected User createUser() {
+               User user = new User();
+               user.setName("test");
+               user.setPassword("password");
+               user.setSessionId(VALID_ID);
+               return user;
+       }
+}

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java?rev=806560&view=auto
==============================================================================
--- 
labs/hupa/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java
 (added)
+++ 
labs/hupa/src/test/java/org/apache/hupa/server/handler/CreateFolderHandlerTest.java
 Fri Aug 21 14:01:17 2009
@@ -0,0 +1,108 @@
+/****************************************************************
+ * 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.MessagingException;
+
+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;
+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();
+
+               session.setAttribute("user", user);
+               storeCache.addValidUser(user.getName(),user.getPassword());
+               IMAPFolder folder = createFolder();
+               MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
+               Folder f1 = store.getFolder(folder.getFullName());
+               assertFalse("not exists",f1.exists());
+               
+               CreateFolderHandler handler = new 
CreateFolderHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       handler.execute(new 
CreateFolder(user.getSessionId(),folder), null);
+                       Folder f = store.getFolder(folder.getFullName());
+                       assertTrue("exists",f.exists());
+                       
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+               
+       }
+       
+       
+       public void testDuplicateFolder() throws MessagingException {
+               User user = createUser();
+
+               session.setAttribute("user", user);
+               storeCache.addValidUser(user.getName(),user.getPassword());
+               IMAPFolder folder = createFolder();
+               MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
+               Folder f1 = store.getFolder(folder.getFullName());
+               
+               f1.create(Folder.HOLDS_FOLDERS);
+
+               CreateFolderHandler handler = new 
CreateFolderHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       handler.execute(new 
CreateFolder(user.getSessionId(),folder), null);
+                       fail("Folder already exists");
+               } catch (ActionException e) {
+                       // folder already exists
+                       e.printStackTrace();
+               }
+               
+       }
+       
+       public void testInvalidSessionId() {
+               User user = createUser();
+               user.setSessionId("INVALID");
+               IMAPFolder folder = createFolder();
+               CreateFolderHandler handler = new 
CreateFolderHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       handler.execute(new 
CreateFolder(user.getSessionId(),folder), null);
+                       fail("Invalid session");
+                       
+               } catch (InvalidSessionException e) {
+                       e.printStackTrace();
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+       }
+       
+       private IMAPFolder createFolder() {
+               IMAPFolder folder = new IMAPFolder();
+               folder.setFullName("NewFolder");
+               folder.setDelimiter(String.valueOf(MockIMAPFolder.SEPERATOR));
+               return folder;
+       }
+}

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java?rev=806560&view=auto
==============================================================================
--- 
labs/hupa/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java
 (added)
+++ 
labs/hupa/src/test/java/org/apache/hupa/server/handler/DeleteFolderHandlerTest.java
 Fri Aug 21 14:01:17 2009
@@ -0,0 +1,100 @@
+/****************************************************************
+ * 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.MessagingException;
+
+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;
+import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.exception.InvalidSessionException;
+import org.apache.hupa.shared.rpc.DeleteFolder;
+
+public class DeleteFolderHandlerTest extends AbstractHandlerTest{
+
+       public void testDelete() throws MessagingException {
+               User user = createUser();
+
+               session.setAttribute("user", user);
+               storeCache.addValidUser(user.getName(),user.getPassword());
+               IMAPFolder folder = createFolder();
+               MockIMAPStore store = (MockIMAPStore) storeCache.get(user);
+               Folder f1 = store.getFolder(folder.getFullName());
+               f1.create(Folder.HOLDS_FOLDERS);
+               
+               DeleteFolderHandler handler = new 
DeleteFolderHandler(storeCache,new MockLog(),sessionProvider);
+
+               try {
+                       handler.execute(new 
DeleteFolder(user.getSessionId(),folder), null);
+                       Folder f = store.getFolder(folder.getFullName());
+                       assertFalse("not exists",f.exists());
+                       
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+               
+       }
+       
+       public void testDeleteNonExistFolder() throws MessagingException {
+               User user = createUser();
+
+               session.setAttribute("user", user);
+               storeCache.addValidUser(user.getName(),user.getPassword());
+               IMAPFolder folder = createFolder();
+               DeleteFolderHandler handler = new 
DeleteFolderHandler(storeCache,new MockLog(),sessionProvider);
+
+               try {
+                       handler.execute(new 
DeleteFolder(user.getSessionId(),folder), null);
+                       fail("Folder should not exist");
+               } catch (ActionException e) {
+                       e.printStackTrace();
+               }       
+       }
+       
+       public void testInvalidSessionId() {
+               User user = createUser();
+               user.setSessionId("INVALID");
+               IMAPFolder folder = createFolder();
+               DeleteFolderHandler handler = new 
DeleteFolderHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       handler.execute(new 
DeleteFolder(user.getSessionId(),folder), null);
+                       fail("Invalid session");
+                       
+               } catch (InvalidSessionException e) {
+                       e.printStackTrace();
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+       }
+       
+       private IMAPFolder createFolder() {
+               IMAPFolder folder = new IMAPFolder();
+               folder.setFullName("NewFolder");
+               folder.setDelimiter(String.valueOf(MockIMAPFolder.SEPERATOR));
+               return folder;
+       }
+}

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java?rev=806560&view=auto
==============================================================================
--- 
labs/hupa/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java
 (added)
+++ 
labs/hupa/src/test/java/org/apache/hupa/server/handler/FetchFoldersHandlerTest.java
 Fri Aug 21 14:01:17 2009
@@ -0,0 +1,97 @@
+/****************************************************************
+ * 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.util.ArrayList;
+
+import javax.mail.Folder;
+import javax.mail.MessagingException;
+
+import net.customware.gwt.dispatch.shared.ActionException;
+
+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.FetchFolders;
+import org.apache.hupa.shared.rpc.FetchFoldersResult;
+
+public class FetchFoldersHandlerTest extends AbstractHandlerTest{
+
+       public void testInvalidSessionId() {
+               User user = createUser();
+               user.setSessionId("INVALID");
+               FetchFoldersHandler handler = new 
FetchFoldersHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       handler.execute(new FetchFolders(user.getSessionId()), 
null);
+                       fail("Invalid session");
+                       
+               } catch (InvalidSessionException e) {
+                       e.printStackTrace();
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+       }
+       
+       public void testNoFolders() {
+               User user = createUser();
+               session.setAttribute("user", user);
+               storeCache.addValidUser(user.getName(), user.getPassword());
+               FetchFoldersHandler handler = new 
FetchFoldersHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       FetchFoldersResult result = handler.execute(new 
FetchFolders(user.getSessionId()), null);
+                       assertTrue(result.getFolders().isEmpty());
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+       }
+       
+       public void testFoundFolders() throws MessagingException {
+               User user = createUser();
+               session.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);
+
+               FetchFoldersHandler handler = new 
FetchFoldersHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       FetchFoldersResult result = handler.execute(new 
FetchFolders(user.getSessionId()), 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("XXX",folders.get(2).getName());
+
+                       
assertEquals("INBOX.WHATEVER.XXX",folders.get(0).getChildIMAPFolders().get(0).getFullName());
+
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+       }
+}

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java?rev=806560&view=auto
==============================================================================
--- 
labs/hupa/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java
 (added)
+++ 
labs/hupa/src/test/java/org/apache/hupa/server/handler/LoginUserHandlerTest.java
 Fri Aug 21 14:01:17 2009
@@ -0,0 +1,62 @@
+/****************************************************************
+ * 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 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.LoginUser;
+import org.apache.hupa.shared.rpc.LoginUserResult;
+
+public class LoginUserHandlerTest extends AbstractHandlerTest{
+       private LoginUserHandler handler = new LoginUserHandler(storeCache, new 
MockLog(),sessionProvider);
+       
+       public void testInvalidLogin() {
+               try {
+                       handler.execute(new LoginUser("invalid","invalid"), 
null);
+                       fail("Should throw an exception");
+               } catch (ActionException e) {
+                       e.printStackTrace();
+               }
+               assertNull("no user stored in session", 
session.getAttribute("user"));
+       }
+       
+       public void testValidLogin() {
+               String username = "valid";
+               String password = "valid";
+               storeCache.addValidUser(username, password);
+               
+               try {
+                       LoginUserResult result = handler.execute(new 
LoginUser(username,password), null);
+                       User u = result.getUser();
+                       
+                       assertEquals("Authenticated", true, 
u.getAuthenticated());
+                       assertEquals("Authenticated", username, u.getName());
+                       assertEquals("Authenticated", password, 
u.getPassword());
+                       assertEquals("Authenticated", VALID_ID, 
u.getSessionId());
+                       assertEquals("User stored in session", u, 
session.getAttribute("user"));
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail("Should throw an exception");
+               }
+       }
+       
+}

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java?rev=806560&view=auto
==============================================================================
--- 
labs/hupa/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java
 (added)
+++ 
labs/hupa/src/test/java/org/apache/hupa/server/handler/LogoutUserHandlerTest.java
 Fri Aug 21 14:01:17 2009
@@ -0,0 +1,54 @@
+/****************************************************************
+ * 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 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";
+               String password = "pass";
+               User user = new User();
+               user.setName(username);
+               user.setPassword(password);
+               user.setAuthenticated(true);
+               user.setSessionId(VALID_ID);
+               session.setAttribute("user", user);
+               LogoutUserHandler handler = new 
LogoutUserHandler(storeCache,new MockLog(),sessionProvider);
+               try {
+                       LogoutUserResult result = handler.execute(new 
LogoutUser(user.getSessionId()), null);
+                       assertFalse("Not authenticated anymore", 
result.getUser().getAuthenticated());
+                       assertNull("User removed", 
session.getAttribute("user"));
+                       
+               } catch (ActionException e) {
+                       e.printStackTrace();
+                       fail();
+               }
+               
+       }
+}

Added: labs/hupa/src/test/java/org/apache/hupa/server/mock/MockHttpSession.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/mock/MockHttpSession.java?rev=806560&view=auto
==============================================================================
--- labs/hupa/src/test/java/org/apache/hupa/server/mock/MockHttpSession.java 
(added)
+++ labs/hupa/src/test/java/org/apache/hupa/server/mock/MockHttpSession.java 
Fri Aug 21 14:01:17 2009
@@ -0,0 +1,131 @@
+/****************************************************************
+ * 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.mock;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpSessionContext;
+
+...@suppresswarnings("deprecation")
+public class MockHttpSession implements HttpSession{
+       private Map<String,Object> attributeMap = new HashMap<String, Object>();
+       private Map<String,Object> valueMap = new HashMap<String, Object>();
+       private long cTime;
+       private String id;
+       
+       public MockHttpSession(String id) {
+               cTime = System.currentTimeMillis();
+               this.id = id;
+       }
+       
+       public Object getAttribute(String name) {
+               return attributeMap.get(name);
+       }
+
+       
+       @SuppressWarnings("unchecked")
+       public Enumeration getAttributeNames() {
+               return new Enumeration() {
+                       Iterator it = attributeMap.keySet().iterator();
+                       public boolean hasMoreElements() {
+                               return it.hasNext();
+                       }
+
+                       public Object nextElement() {
+                               return it.next();
+                       }
+                       
+               };
+       }
+
+       public long getCreationTime() {
+               return cTime;
+       }
+
+       public String getId() {
+               return id;
+       }
+
+       public long getLastAccessedTime() {
+               return 0;
+       }
+
+       public int getMaxInactiveInterval() {
+               return 0;
+       }
+
+       public ServletContext getServletContext() {
+               return null;
+       }
+
+       public HttpSessionContext getSessionContext() {
+               return null;
+       }
+
+       public Object getValue(String name) {
+               return valueMap.get(name);
+       }
+
+       public String[] getValueNames() {
+               List<String> names = new ArrayList<String>();
+               Iterator<String> it = valueMap.keySet().iterator();
+               while (it.hasNext()) {
+                       names.add(it.next());
+               }
+               return names.toArray(new String[names.size()]);
+       }
+
+       public void invalidate() {
+       }
+
+       public boolean isNew() {
+               return false;
+       }
+
+       public void putValue(String name, Object value) {
+               valueMap.put(name, value);
+       }
+
+       public void removeAttribute(String name) {
+               attributeMap.remove(name);
+       }
+
+       public void removeValue(String name) {
+               valueMap.remove(name);
+       
+       }
+
+       public void setAttribute(String name, Object value) {
+               attributeMap.put(name, value);
+       }
+
+       public void setMaxInactiveInterval(int interval) {
+               // TODO Auto-generated method stub
+               
+       }
+
+}

Modified: 
labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPFolder.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPFolder.java?rev=806560&r1=806559&r2=806560&view=diff
==============================================================================
--- labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPFolder.java 
(original)
+++ labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPFolder.java Fri 
Aug 21 14:01:17 2009
@@ -38,9 +38,9 @@
 
        private boolean closed;
        private boolean exists;
-       
-       public MockIMAPFolder(String fullName, char separator, IMAPStore store) 
{
-               super(fullName, separator, store);
+       public final static char SEPERATOR = '.';
+       public MockIMAPFolder(String fullName, IMAPStore store) {
+               super(fullName, SEPERATOR, store);
        }
 
        public List<Message> messages = new ArrayList<Message>();
@@ -57,6 +57,12 @@
        }
 
        @Override
+       public Folder[] list() throws MessagingException {
+               List<MockIMAPFolder> folders = 
((MockIMAPStore)store).getChilds(this);
+               return folders.toArray(new Folder[folders.size()]);
+       }
+
+       @Override
        public synchronized void copyMessages(Message[] messages, Folder folder)
                        throws MessagingException {
        }
@@ -64,13 +70,13 @@
        @Override
        public synchronized boolean create(int type) throws MessagingException {
                exists = true;
-               return true;
+               return ((MockIMAPStore)store).save(this);
        }
 
        @Override
        public synchronized boolean delete(boolean recursive) throws 
MessagingException {
                exists = false;
-               return true;
+               return ((MockIMAPStore)store).delete(this,recursive);
        }
 
        @Override
@@ -109,10 +115,9 @@
        }
 
        @Override
-       public synchronized Message getMessageByUID(long arg0)
+       public synchronized Message getMessageByUID(long uid)
                        throws MessagingException {
-               // TODO Auto-generated method stub
-               return super.getMessageByUID(arg0);
+               return getMessage(new Long(uid).intValue());
        }
 
        @Override
@@ -121,17 +126,19 @@
        }
 
        @Override
-       public synchronized Message[] getMessagesByUID(long arg0, long arg1)
+       public synchronized Message[] getMessagesByUID(long uidstart, long 
uidend)
                        throws MessagingException {
-               // TODO Implement me
-               return super.getMessagesByUID(arg0, arg1);
+               return getMessages(new Long(uidstart).intValue(), new 
Long(uidend).intValue());
        }
 
        @Override
-       public synchronized Message[] getMessagesByUID(long[] arg0)
+       public synchronized Message[] getMessagesByUID(long[] uids)
                        throws MessagingException {
-               // TODO Auto-generated method stub
-               return super.getMessagesByUID(arg0);
+               int ints[] = new int[uids.length];
+               for (int i = 0; i < uids.length; i++) {
+                       ints[i] = new Long(uids[i]).intValue();
+               }
+               return getMessages(ints);
        }
 
        @Override
@@ -146,7 +153,7 @@
 
        @Override
        public synchronized Folder getParent() throws MessagingException {
-               return null;
+               return ((MockIMAPStore)store).getParent(this);
        }
 
        @Override
@@ -171,8 +178,7 @@
 
        @Override
        public synchronized boolean renameTo(Folder f) throws 
MessagingException {
-               // TODO Auto-generated method stub
-               return super.renameTo(f);
+               return false;
        }
 
        @Override
@@ -232,8 +238,7 @@
 
        @Override
        public Store getStore() {
-               // TODO Auto-generated method stub
-               return super.getStore();
+               return store;
        }
 
        @Override
@@ -247,6 +252,16 @@
                        throws MessagingException {
        
        }
+
+       @Override
+       public synchronized long getUID(Message message) throws 
MessagingException {
+               return messages.indexOf(message);
+       }
+
+       @Override
+       public synchronized int getUnreadMessageCount() throws 
MessagingException {
+               return 1900;
+       }
        
        
 

Modified: labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStore.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStore.java?rev=806560&r1=806559&r2=806560&view=diff
==============================================================================
--- labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStore.java 
(original)
+++ labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStore.java Fri 
Aug 21 14:01:17 2009
@@ -1,15 +1,3 @@
-package org.apache.hupa.server.mock;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.mail.AuthenticationFailedException;
-import javax.mail.Folder;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.URLName;
-
 /****************************************************************
  * Licensed to the Apache Software Foundation (ASF) under one   *
  * or more contributor license agreements.  See the NOTICE file *
@@ -28,6 +16,19 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
+package org.apache.hupa.server.mock;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.mail.AuthenticationFailedException;
+import javax.mail.Folder;
+import javax.mail.MessagingException;
+import javax.mail.Provider;
+import javax.mail.Session;
+import javax.mail.URLName;
 
 import com.sun.mail.imap.IMAPStore;
 
@@ -36,11 +37,63 @@
        private Map<String, String> validLogins = new HashMap<String, String>();
        private Map<String, Integer> validServers = new HashMap<String, 
Integer>();
        private boolean connected = false;
+       private List<MockIMAPFolder> folders = new ArrayList<MockIMAPFolder>();
        
        public MockIMAPStore(Session session, URLName url) {
                super(session, url);
        }
 
+       public static Provider getProvider() {
+               return new 
Provider(Provider.Type.STORE,"mockimap",MockIMAPStore.class.getName(),"","");
+       }
+       
+       public boolean save(MockIMAPFolder folder) {
+               for (int i= 0; i < folders.size(); i++) {
+                       if 
(folders.get(i).getFullName().equals(folder.getFullName())) {
+                               return false;
+                       }
+               }
+               folders.add(folder);
+               return true;
+       } 
+       
+       public boolean delete(MockIMAPFolder folder, boolean recursive) {
+               boolean found = false;
+               for (int i= 0; i < folders.size(); i++) {
+                       if 
(folders.get(i).getFullName().equals(folder.getFullName())) {
+                               folders.remove(i);
+                               found = true;
+                               if(recursive == false) {
+                                       break;
+                               }
+                       } else if 
(folders.get(i).getFullName().startsWith(folder.getFullName() + 
MockIMAPFolder.SEPERATOR)) {
+                               folders.remove(i);
+                       }
+                       
+               }
+               return found;
+       } 
+       
+       public MockIMAPFolder getParent(MockIMAPFolder folder) {
+               for (int i = 0; i < folders.size(); i++) {
+                       MockIMAPFolder f = folders.get(i);
+                       if ((f.getFullName() +MockIMAPFolder.SEPERATOR + 
folder.getName()).equals(folder.getFullName())) {
+                               return f;
+                       }
+               }
+               return null;
+       }
+       
+       public List<MockIMAPFolder> getChilds(MockIMAPFolder folder) {
+               List<MockIMAPFolder> childs = new ArrayList<MockIMAPFolder>();
+               for (int i = 0; i < folders.size(); i++) {
+                       MockIMAPFolder f = folders.get(i);
+                       if (f.getFullName().startsWith(folder.getFullName() + 
MockIMAPFolder.SEPERATOR)) {
+                               childs.add(f);
+                       }
+               }
+               return childs;
+       }
        public void setValidLogins(Map<String,String> validLogins) {
                this.validLogins = validLogins;
        }
@@ -48,6 +101,14 @@
        public void setValidServers(Map<String,Integer> validServers) {
                this.validServers = validServers;
        }
+       
+       public void clear() {
+               validLogins.clear();
+               validServers.clear();
+               folders.clear();
+               connected = false;
+       }
+       
        @Override
        public synchronized void close() throws MessagingException {
                connected = false;
@@ -55,12 +116,18 @@
 
        @Override
        public synchronized Folder getDefaultFolder() throws MessagingException 
{
-               return super.getDefaultFolder();
+               return getFolder("INBOX");
        }
 
        @Override
        public synchronized Folder getFolder(String name) throws 
MessagingException {
-               return super.getFolder(name);
+               for (int i = 0; i < folders.size(); i++) {
+                       MockIMAPFolder mfolder = folders.get(i);
+                       if (mfolder.getFullName().equals(name)) {
+                               return mfolder;
+                       }
+               }
+               return new MockIMAPFolder(name,this);
        }
 
        @Override

Added: 
labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStoreCache.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStoreCache.java?rev=806560&view=auto
==============================================================================
--- labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStoreCache.java 
(added)
+++ labs/hupa/src/test/java/org/apache/hupa/server/mock/MockIMAPStoreCache.java 
Fri Aug 21 14:01:17 2009
@@ -0,0 +1,77 @@
+/****************************************************************
+ * 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.mock;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.mail.MessagingException;
+import javax.mail.NoSuchProviderException;
+import javax.mail.Session;
+
+import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.User;
+
+import com.google.inject.Provider;
+import com.sun.mail.imap.IMAPStore;
+
+public class MockIMAPStoreCache implements IMAPStoreCache{
+       private Provider<Session> provider;
+       private Map<String,String> users = new HashMap<String, String>();
+       private Map<String,MockIMAPStore> stores = new HashMap<String, 
MockIMAPStore>();
+       public MockIMAPStoreCache(Provider<Session> provider) {
+               this.provider = provider;
+       }
+       
+       public void addValidUser(String username, String password) {
+               users.put(username, password);
+               try {
+                       stores.put(username, (MockIMAPStore) 
provider.get().getStore("mockimap"));
+               } catch (NoSuchProviderException e) {
+                       throw new RuntimeException("Invalid store");
+               }
+       }
+       
+       public void clear() {
+               users.clear();
+       }
+       
+       public void delete(User user) {
+               users.remove(user.getName());
+       }
+
+       public void delete(String username) {
+               users.remove(username);
+       }
+
+       public IMAPStore get(User user) throws MessagingException {
+               return get(user.getName(),user.getPassword());
+       }
+
+       public IMAPStore get(String username, String password)
+                       throws MessagingException {
+               String pass = users.get(username);
+               if (pass != null && pass.equals(password)) {
+                       return stores.get(username);
+               } else {
+                       throw new MessagingException("Invalid user");
+               }
+       }
+}

Added: labs/hupa/src/test/java/org/apache/hupa/server/mock/MockLog.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/test/java/org/apache/hupa/server/mock/MockLog.java?rev=806560&view=auto
==============================================================================
--- labs/hupa/src/test/java/org/apache/hupa/server/mock/MockLog.java (added)
+++ labs/hupa/src/test/java/org/apache/hupa/server/mock/MockLog.java Fri Aug 21 
14:01:17 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.mock;
+
+import org.apache.commons.logging.Log;
+
+public class MockLog implements Log{
+
+       public void debug(Object arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void debug(Object arg0, Throwable arg1) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void error(Object arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void error(Object arg0, Throwable arg1) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void fatal(Object arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void fatal(Object arg0, Throwable arg1) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void info(Object arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void info(Object arg0, Throwable arg1) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public boolean isDebugEnabled() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isErrorEnabled() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isFatalEnabled() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isInfoEnabled() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isTraceEnabled() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public boolean isWarnEnabled() {
+               // TODO Auto-generated method stub
+               return true;
+       }
+
+       public void trace(Object arg0) {
+               log(arg0);
+
+       }
+
+       public void trace(Object arg0, Throwable arg1) {
+               log(arg0);
+
+       }
+
+       public void warn(Object arg0) {
+               log(arg0);
+
+       }
+
+       public void warn(Object arg0, Throwable arg1) {
+               log(arg0);
+       }
+       
+       private void log(Object msg) {
+               System.out.println(msg);
+       }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to