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 <qngu...@linagora.com> Authored: Tue Dec 27 17:13:22 2016 +0700 Committer: Quynh Nguyen <qngu...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org