You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/01/24 05:49:04 UTC

[04/15] james-project git commit: JAMES-1785 Testing for SystemMailboxesProviderImpl

JAMES-1785 Testing for SystemMailboxesProviderImpl


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/54fe9a4b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/54fe9a4b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/54fe9a4b

Branch: refs/heads/master
Commit: 54fe9a4bd00b69cc048d554464ee987f3c302343
Parents: 1acd459
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Wed Jan 18 16:29:53 2017 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Tue Jan 24 09:46:01 2017 +0700

----------------------------------------------------------------------
 .../utils/SystemMailboxesProviderImplTest.java  | 137 ++++++++++++++++++-
 1 file changed, 132 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/54fe9a4b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
index 3ee868d..1d40c41 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java
@@ -19,15 +19,142 @@
 
 package org.apache.james.jmap.utils;
 
-import org.junit.Ignore;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.stream.Stream;
+
+import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
+import org.apache.james.jmap.model.mailbox.Role;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MailboxMetaData;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MailboxQuery;
+import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.store.SimpleMailboxMetaData;
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.common.collect.ImmutableList;
 
 public class SystemMailboxesProviderImplTest {
 
-    @Ignore("1716 this class needs a test suite")
+    private static final MailboxPath INBOX = MailboxManagerFixture.MAILBOX_PATH1;
+    private static final MailboxPath OUTBOX = MailboxManagerFixture.MAILBOX_PATH2;
+    private static final char DELIMITER = '.';
+
+    private static final MailboxId inboxId = TestId.of(1);
+    private static final MailboxId outboxId = TestId.of(2);
+
+    private static final MailboxMetaData inboxMetadata = new SimpleMailboxMetaData(INBOX, inboxId, DELIMITER);
+    private static final MailboxMetaData outboxMetadata = new SimpleMailboxMetaData(OUTBOX, outboxId, DELIMITER);
+
+    private MailboxSession mailboxSession = new MockMailboxSession("user");
+    private SystemMailboxesProviderImpl systemMailboxProvider;
+
+    private MailboxManager mailboxManager;
+
+    private MessageManager inboxMessageManager;
+    private MessageManager outboxMessageManager;
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Before
+    public void setUp() throws Exception {
+        mailboxManager = mock(MailboxManager.class);
+        inboxMessageManager = mock(MessageManager.class);
+        outboxMessageManager = mock(MessageManager.class);
+
+        systemMailboxProvider = new SystemMailboxesProviderImpl(mailboxManager);
+    }
+
+    @Test
+    public void findMailboxesShouldReturnEmptyWhenEmptySearchResult() throws Exception {
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of());
+
+        assertThat(systemMailboxProvider.listMailboxes(Role.INBOX, mailboxSession)).isEmpty();
+    }
+
+    @Test
+    public void findMailboxesShouldFilterTheMailboxByItsRole() throws Exception {
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of(inboxMetadata, outboxMetadata));
+        when(mailboxManager.getMailbox(eq(INBOX), eq(mailboxSession))).thenReturn(inboxMessageManager);
+
+        Stream<MessageManager> result = systemMailboxProvider.listMailboxes(Role.INBOX, mailboxSession);
+
+        assertThat(result).hasSize(1).containsOnly(inboxMessageManager);
+    }
+
+    @Test
+    public void findMailboxesShouldThrowWhenMailboxManagerHasErrorWhenSearching() throws Exception {
+        expectedException.expect(MailboxException.class);
+
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenThrow(MailboxException.class);
+
+        systemMailboxProvider.listMailboxes(Role.INBOX, mailboxSession);
+    }
+
+    @Test
+    public void findMailboxesShouldBeEmptyWhenMailboxManagerCanNotGetMailbox() throws Exception {
+        expectedException.expect(MailboxException.class);
+
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of(inboxMetadata, outboxMetadata));
+        when(mailboxManager.getMailbox(eq(INBOX), eq(mailboxSession))).thenThrow(MailboxException.class);
+
+        assertThat(systemMailboxProvider.listMailboxes(Role.INBOX, mailboxSession)).isEmpty();
+    }
+
+    @Test
+    public void findMailboxesShouldReturnWhenMailboxManagerCanNotGetMailboxOfNonFilterMailbox() throws Exception {
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of(inboxMetadata, outboxMetadata));
+
+        when(mailboxManager.getMailbox(eq(INBOX), eq(mailboxSession))).thenReturn(inboxMessageManager);
+        when(mailboxManager.getMailbox(eq(OUTBOX), eq(mailboxSession))).thenThrow(MailboxException.class);
+
+        Stream<MessageManager> result = systemMailboxProvider.listMailboxes(Role.INBOX, mailboxSession);
+
+        assertThat(result).hasSize(1).containsOnly(inboxMessageManager);
+
+    }
+
     @Test
-    public void missingTestSuite() {
-        //TODO this class needs a test suite
+    public void findMailboxShouldThrowWhenEmptySearchResult() throws Exception {
+        expectedException.expect(MailboxRoleNotFoundException.class);
+
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of());
+
+        systemMailboxProvider.findMailbox(Role.INBOX, mailboxSession);
+    }
+
+    @Test
+    public void findMailboxShouldThrowWhenCanNotFindAny() throws Exception {
+        expectedException.expect(MailboxRoleNotFoundException.class);
+
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of(outboxMetadata));
+
+        systemMailboxProvider.findMailbox(Role.INBOX, mailboxSession);
     }
-    
+
+    @Test
+    public void findMailboxShouldReturnMailboxByRole() throws Exception {
+        when(mailboxManager.search(any(MailboxQuery.class), eq(mailboxSession))).thenReturn(ImmutableList.of(inboxMetadata, outboxMetadata));
+        when(mailboxManager.getMailbox(eq(INBOX), eq(mailboxSession))).thenReturn(inboxMessageManager);
+
+        MessageManager result = systemMailboxProvider.findMailbox(Role.INBOX, mailboxSession);
+
+        assertThat(result).isEqualTo(inboxMessageManager);
+    }
+
 }


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