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]