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 ro...@apache.org on 2017/01/09 08:40:53 UTC

james-project git commit: JAMES-1903: Automatically subscribe the user to a folder created with JMAP

Repository: james-project
Updated Branches:
  refs/heads/master 20e6f63b9 -> 84c66946d


JAMES-1903: Automatically subscribe the user to a folder created with JMAP


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

Branch: refs/heads/master
Commit: 84c66946d955b1e63d1a59eba63e290d88a87e8f
Parents: 20e6f63
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Tue Dec 27 17:13:22 2016 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Mon Jan 9 09:53:44 2017 +0700

----------------------------------------------------------------------
 .../apache/james/utils/ExtendedServerProbe.java |   3 +
 .../apache/james/utils/GuiceServerProbe.java    |  11 +-
 .../integration/SetMailboxesMethodTest.java     | 221 +++++++++++++++++++
 .../methods/SetMailboxesCreationProcessor.java  |   6 +-
 .../SetMailboxesDestructionProcessor.java       |   6 +-
 .../methods/SetMailboxesUpdateProcessor.java    |   8 +-
 .../SetMailboxesCreationProcessorTest.java      |   4 +-
 .../SetMailboxesUpdateProcessorTest.java        |   5 +-
 8 files changed, 258 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ExtendedServerProbe.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ExtendedServerProbe.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ExtendedServerProbe.java
index 77f2947..bcd5296 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ExtendedServerProbe.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ExtendedServerProbe.java
@@ -20,6 +20,7 @@
 package org.apache.james.utils;
 
 import java.io.InputStream;
+import java.util.Collection;
 import java.util.Date;
 
 import javax.mail.Flags;
@@ -40,4 +41,6 @@ public interface ExtendedServerProbe extends ServerProbe {
 
     void addActiveSieveScript(String user, String name, String script) throws Exception;
 
+    Collection<String> listSubscriptions(String user) throws Exception;
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceServerProbe.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceServerProbe.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceServerProbe.java
index 2ad3c54..fa28cd0 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceServerProbe.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/GuiceServerProbe.java
@@ -35,6 +35,7 @@ import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
@@ -65,17 +66,19 @@ public class GuiceServerProbe implements ExtendedServerProbe, GuiceProbe {
     private final UsersRepository usersRepository;
     private final RecipientRewriteTable recipientRewriteTable;
     private final SieveRepository sieveRepository;
+    private final SubscriptionManager subscriptionManager;
 
     @Inject
     private GuiceServerProbe(MailboxManager mailboxManager, MailboxMapperFactory mailboxMapperFactory,
                              DomainList domainList, UsersRepository usersRepository, SieveRepository sieveRepository,
-                             RecipientRewriteTable recipientRewriteTable) {
+                             RecipientRewriteTable recipientRewriteTable, SubscriptionManager subscriptionManager) {
         this.mailboxManager = mailboxManager;
         this.mailboxMapperFactory = mailboxMapperFactory;
         this.domainList = domainList;
         this.usersRepository = usersRepository;
         this.sieveRepository = sieveRepository;
         this.recipientRewriteTable = recipientRewriteTable;
+        this.subscriptionManager = subscriptionManager;
     }
 
     @Override
@@ -355,4 +358,10 @@ public class GuiceServerProbe implements ExtendedServerProbe, GuiceProbe {
         sieveRepository.putScript(user, name, script);
         sieveRepository.setActive(user, name);
     }
+
+    @Override
+    public Collection<String> listSubscriptions(String user) throws Exception {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(user, LOGGER);
+        return subscriptionManager.subscriptions(mailboxSession);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
index 5a8e86b..6e229a3 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMailboxesMethodTest.java
@@ -23,6 +23,7 @@ import static com.jayway.restassured.RestAssured.given;
 import static com.jayway.restassured.RestAssured.with;
 import static com.jayway.restassured.config.EncoderConfig.encoderConfig;
 import static com.jayway.restassured.config.RestAssuredConfig.newConfig;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.hamcrest.Matchers.containsString;
@@ -96,6 +97,226 @@ public abstract class SetMailboxesMethodTest {
     }
 
     @Test
+    public void userShouldBeSubscribedOnCreatedMailboxWhenCreateMailbox() throws Exception{
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"create\": {" +
+                "        \"create-id01\" : {" +
+                "          \"name\" : \"foo\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxesSet"))
+            .body(ARGUMENTS + ".created", hasKey("create-id01"));
+
+        assertThat(jmapServer.serverProbe().listSubscriptions(username)).containsOnly("foo");
+    }
+
+    @Test
+    public void userShouldBeSubscribedOnCreatedMailboxWhenCreateChildOfInboxMailbox() throws Exception {
+        String inboxId =
+            with()
+                .header("Authorization", this.accessToken.serialize())
+                .body("[[\"getMailboxes\", {}, \"#0\"]]")
+            .when()
+                .post("/jmap")
+            .then()
+                .extract()
+                .jsonPath()
+                .getString(ARGUMENTS + ".list[0].id");
+
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"create\": {" +
+                "        \"create-id01\" : {" +
+                "          \"name\" : \"foo\"," +
+                "          \"parentId\" : \"" + inboxId + "\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap");
+
+        assertThat(jmapServer.serverProbe().listSubscriptions(username)).containsOnly("inbox.foo");
+    }
+
+    @Test
+    public void subscriptionUserShouldBeChangedWhenUpdateMailbox() throws Exception {
+        jmapServer.serverProbe().createMailbox("#private", username, "root");
+
+        jmapServer.serverProbe().createMailbox("#private", username, "root.myBox");
+        Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "root.myBox");
+        String mailboxId = mailbox.getMailboxId().serialize();
+
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"update\": {" +
+                "        \"" + mailboxId + "\" : {" +
+                "          \"name\" : \"mySecondBox\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+        with()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+            .post("/jmap");
+
+        assertThat(jmapServer.serverProbe().listSubscriptions(username)).containsOnly("mySecondBox");
+    }
+
+    @Test
+    public void subscriptionUserShouldBeChangedWhenCreateThenUpdateMailboxNameWithJMAP() throws Exception {
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"create\": {" +
+                "        \"create-id01\" : {" +
+                "          \"name\" : \"foo\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxesSet"))
+            .body(ARGUMENTS + ".created", hasKey("create-id01"));
+
+        Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "foo");
+        String mailboxId = mailbox.getMailboxId().serialize();
+
+        requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"update\": {" +
+                "        \"" + mailboxId + "\" : {" +
+                "          \"name\" : \"mySecondBox\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        with()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+            .post("/jmap");
+
+        assertThat(jmapServer.serverProbe().listSubscriptions(username)).containsOnly("mySecondBox");
+    }
+
+    @Test
+    public void subscriptionUserShouldBeDeletedWhenDestroyMailbox() throws Exception {
+        jmapServer.serverProbe().createMailbox("#private", username, "myBox");
+        Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "myBox");
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"destroy\": [\"" + mailbox.getMailboxId().serialize() + "\"]" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200);
+
+        assertThat(jmapServer.serverProbe().listSubscriptions(username)).isEmpty();
+    }
+
+    @Test
+    public void subscriptionUserShouldBeDeletedWhenCreateThenDestroyMailboxWithJMAP() throws Exception {
+        String requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"create\": {" +
+                "        \"create-id01\" : {" +
+                "          \"name\" : \"foo\"" +
+                "        }" +
+                "      }" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200)
+            .body(NAME, equalTo("mailboxesSet"))
+            .body(ARGUMENTS + ".created", hasKey("create-id01"));
+
+        Mailbox mailbox = jmapServer.serverProbe().getMailbox("#private", username, "foo");
+
+        requestBody =
+            "[" +
+                "  [ \"setMailboxes\"," +
+                "    {" +
+                "      \"destroy\": [\"" + mailbox.getMailboxId().serialize() + "\"]" +
+                "    }," +
+                "    \"#0\"" +
+                "  ]" +
+                "]";
+
+        given()
+            .header("Authorization", this.accessToken.serialize())
+            .body(requestBody)
+        .when()
+            .post("/jmap")
+        .then()
+            .statusCode(200);
+
+        assertThat(jmapServer.serverProbe().listSubscriptions(username)).isEmpty();
+    }
+
+    @Test
     public void setMailboxesShouldErrorNotSupportedWhenRoleGiven() {
         String requestBody =
             "[" +

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index 28e36f6..e3e957c 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -38,6 +38,7 @@ import org.apache.james.jmap.utils.DependencyGraph.CycleDetectedException;
 import org.apache.james.jmap.utils.SortingHierarchicalCollections;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -59,11 +60,13 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
     private final SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, MailboxCreationId> sortingHierarchicalCollections;
     private final MailboxFactory mailboxFactory;
     private final Factory mailboxIdFactory;
+    private final SubscriptionManager subscriptionManager;
 
     @Inject
     @VisibleForTesting
-    SetMailboxesCreationProcessor(MailboxManager mailboxManager, MailboxFactory mailboxFactory, MailboxId.Factory mailboxIdFactory) {
+    SetMailboxesCreationProcessor(MailboxManager mailboxManager, SubscriptionManager subscriptionManager, MailboxFactory mailboxFactory, MailboxId.Factory mailboxIdFactory) {
         this.mailboxManager = mailboxManager;
+        this.subscriptionManager = subscriptionManager;
         this.sortingHierarchicalCollections =
             new SortingHierarchicalCollections<Map.Entry<MailboxCreationId, MailboxCreateRequest>, MailboxCreationId>(
                 x -> x.getKey(),
@@ -101,6 +104,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
             ensureValidMailboxName(mailboxRequest, mailboxSession);
             MailboxPath mailboxPath = getMailboxPath(mailboxRequest, creationIdsToCreatedMailboxId, mailboxSession);
             mailboxManager.createMailbox(mailboxPath, mailboxSession);
+            subscriptionManager.subscribe(mailboxSession, mailboxPath.getName());
             Optional<Mailbox> mailbox = mailboxFactory.fromMailboxPath(mailboxPath, mailboxSession);
             if (mailbox.isPresent()) {
                 builder.created(mailboxCreationId, mailbox.get());

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
index ea06438..faf18a5 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java
@@ -38,6 +38,7 @@ import org.apache.james.jmap.utils.MailboxUtils;
 import org.apache.james.jmap.utils.SortingHierarchicalCollections;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -52,14 +53,16 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
     private static final Logger LOGGER = LoggerFactory.getLogger(SetMailboxesDestructionProcessor.class);
 
     private final MailboxManager mailboxManager;
+    private final SubscriptionManager subscriptionManager;
     private final SortingHierarchicalCollections<Map.Entry<MailboxId, Mailbox>, MailboxId> sortingHierarchicalCollections;
     private final MailboxUtils mailboxUtils;
     private final MailboxFactory mailboxFactory;
 
     @Inject
     @VisibleForTesting
-    SetMailboxesDestructionProcessor(MailboxManager mailboxManager, MailboxUtils mailboxUtils, MailboxFactory mailboxFactory) {
+    SetMailboxesDestructionProcessor(MailboxManager mailboxManager, SubscriptionManager subscriptionManager, MailboxUtils mailboxUtils, MailboxFactory mailboxFactory) {
         this.mailboxManager = mailboxManager;
+        this.subscriptionManager = subscriptionManager;
         this.sortingHierarchicalCollections =
             new SortingHierarchicalCollections<>(
                     Entry::getKey,
@@ -102,6 +105,7 @@ public class SetMailboxesDestructionProcessor implements SetMailboxesProcessor {
 
             MailboxPath mailboxPath = mailboxManager.getMailbox(mailbox.getId(), mailboxSession).getMailboxPath();
             mailboxManager.deleteMailbox(mailboxPath, mailboxSession);
+            subscriptionManager.unsubscribe(mailboxSession, mailboxPath.getName());
             builder.destroyed(entry.getKey());
         } catch (MailboxHasChildException e) {
             builder.notDestroyed(entry.getKey(), SetError.builder()

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
index 0f52829..ec4fd69 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java
@@ -38,6 +38,7 @@ import org.apache.james.jmap.model.mailbox.Role;
 import org.apache.james.jmap.utils.MailboxUtils;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -55,12 +56,14 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
     private final MailboxUtils mailboxUtils;
     private final MailboxManager mailboxManager;
     private final MailboxFactory mailboxFactory;
+    private final SubscriptionManager subscriptionManager;
 
     @Inject
     @VisibleForTesting
-    SetMailboxesUpdateProcessor(MailboxUtils mailboxUtils, MailboxManager mailboxManager, MailboxFactory mailboxFactory) {
+    SetMailboxesUpdateProcessor(MailboxUtils mailboxUtils, MailboxManager mailboxManager, SubscriptionManager subscriptionManager, MailboxFactory mailboxFactory) {
         this.mailboxUtils = mailboxUtils;
         this.mailboxManager = mailboxManager;
+        this.subscriptionManager = subscriptionManager;
         this.mailboxFactory = mailboxFactory;
     }
 
@@ -188,6 +191,9 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
         MailboxPath destinationMailboxPath = computeNewMailboxPath(mailbox, originMailboxPath, updateRequest, mailboxSession);
         if (!originMailboxPath.equals(destinationMailboxPath)) {
             mailboxManager.renameMailbox(originMailboxPath, destinationMailboxPath, mailboxSession);
+
+            subscriptionManager.unsubscribe(mailboxSession, originMailboxPath.getName());
+            subscriptionManager.subscribe(mailboxSession, destinationMailboxPath.getName());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
index c16aa4e..1aa82d7 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessorTest.java
@@ -31,6 +31,7 @@ import org.apache.james.jmap.model.SetMailboxesResponse;
 import org.apache.james.jmap.model.mailbox.MailboxCreateRequest;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryId.Factory;
@@ -44,12 +45,13 @@ public class SetMailboxesCreationProcessorTest {
     private MailboxFactory mailboxFactory;
     private SetMailboxesCreationProcessor sut;
     private MailboxManager mailboxManager;
+    private SubscriptionManager subscriptionManager;
 
     @Before
     public void setup() {
         mailboxManager = mock(MailboxManager.class);
         mailboxIdFactory = new InMemoryId.Factory();
-        sut = new SetMailboxesCreationProcessor(mailboxManager, mailboxFactory, mailboxIdFactory);
+        sut = new SetMailboxesCreationProcessor(mailboxManager, subscriptionManager, mailboxFactory, mailboxIdFactory);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/84c66946/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
index ec1cc15..a296303 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessorTest.java
@@ -35,6 +35,7 @@ import org.apache.james.jmap.utils.MailboxUtils;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.junit.Before;
@@ -43,6 +44,7 @@ import org.junit.Test;
 public class SetMailboxesUpdateProcessorTest {
 
     private MailboxManager mockedMailboxManager;
+    private SubscriptionManager mockSubscriptionManager;
     private MailboxUtils mockedMailboxUtils;
     private MailboxFactory mockedMailboxFactory;
     private MailboxSession mockedMailboxSession;
@@ -51,10 +53,11 @@ public class SetMailboxesUpdateProcessorTest {
     @Before
     public void setup() {
         mockedMailboxManager = mock(MailboxManager.class);
+        mockSubscriptionManager = mock(SubscriptionManager.class);
         mockedMailboxUtils = mock(MailboxUtils.class);
         mockedMailboxFactory = mock(MailboxFactory.class);
         mockedMailboxSession = mock(MailboxSession.class);
-        sut = new SetMailboxesUpdateProcessor(mockedMailboxUtils, mockedMailboxManager, mockedMailboxFactory);
+        sut = new SetMailboxesUpdateProcessor(mockedMailboxUtils, mockedMailboxManager, mockSubscriptionManager, mockedMailboxFactory);
     }
 
     @Test


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