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 ad...@apache.org on 2017/11/15 11:15:47 UTC
[06/19] james-project git commit: JAMES-2214 Attachment checking
should be extracted from SetMessagesCreationProcessor
JAMES-2214 Attachment checking should be extracted from SetMessagesCreationProcessor
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b0f4d067
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b0f4d067
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b0f4d067
Branch: refs/heads/master
Commit: b0f4d067ad6c1c0095a3898b71f59c976e215e11
Parents: d324caa
Author: benwa <bt...@linagora.com>
Authored: Mon Nov 13 10:23:04 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Nov 15 17:59:49 2017 +0700
----------------------------------------------------------------------
.../james/jmap/methods/AttachmentChecker.java | 73 +++++++++++++
.../methods/SetMessagesCreationProcessor.java | 47 ++-------
.../jmap/methods/AttachmentCheckerTest.java | 105 +++++++++++++++++++
.../SetMessagesCreationProcessorTest.java | 62 ++---------
4 files changed, 190 insertions(+), 97 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b0f4d067/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
new file mode 100644
index 0000000..77bbd62
--- /dev/null
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/AttachmentChecker.java
@@ -0,0 +1,73 @@
+/****************************************************************
+ * 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.james.jmap.methods;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
+import org.apache.james.jmap.model.Attachment;
+import org.apache.james.jmap.model.BlobId;
+import org.apache.james.mailbox.AttachmentManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.exception.AttachmentNotFoundException;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.AttachmentId;
+
+import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.predicates.ThrowingPredicate;
+import com.github.steveash.guavate.Guavate;
+
+public class AttachmentChecker {
+ private final AttachmentManager attachmentManager;
+
+ @Inject
+ public AttachmentChecker(AttachmentManager attachmentManager) {
+ this.attachmentManager = attachmentManager;
+ }
+
+ public void assertAttachmentsExist(ValueWithId.CreationMessageEntry entry, MailboxSession session) throws AttachmentsNotFoundException, MailboxException {
+ List<Attachment> attachments = entry.getValue().getAttachments();
+ List<BlobId> notFounds = listAttachmentsNotFound(attachments, session);
+ if (!notFounds.isEmpty()) {
+ throw new AttachmentsNotFoundException(notFounds);
+ }
+ }
+
+ private List<BlobId> listAttachmentsNotFound(List<Attachment> attachments, MailboxSession session) throws MailboxException {
+ ThrowingPredicate<Attachment> notExists = attachment -> {
+ try {
+ attachmentManager.getAttachment(getAttachmentId(attachment), session);
+ return false;
+ } catch (AttachmentNotFoundException e) {
+ return true;
+ }
+ };
+ return attachments.stream()
+ .filter(Throwing.predicate(notExists).sneakyThrow())
+ .map(Attachment::getBlobId)
+ .collect(Guavate.toImmutableList());
+ }
+
+ private AttachmentId getAttachmentId(Attachment attachment) {
+ return AttachmentId.from(attachment.getBlobId().getRawValue());
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b0f4d067/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
index e2d13da..2f12ebd 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
@@ -32,8 +32,6 @@ import javax.mail.MessagingException;
import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
import org.apache.james.jmap.methods.ValueWithId.CreationMessageEntry;
import org.apache.james.jmap.methods.ValueWithId.MessageWithId;
-import org.apache.james.jmap.model.Attachment;
-import org.apache.james.jmap.model.BlobId;
import org.apache.james.jmap.model.CreationMessage;
import org.apache.james.jmap.model.Message;
import org.apache.james.jmap.model.MessageFactory;
@@ -47,14 +45,11 @@ import org.apache.james.jmap.model.SetMessagesResponse;
import org.apache.james.jmap.model.SetMessagesResponse.Builder;
import org.apache.james.jmap.model.mailbox.Role;
import org.apache.james.jmap.utils.SystemMailboxesProvider;
-import org.apache.james.mailbox.AttachmentManager;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.exception.AttachmentNotFoundException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
-import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.metrics.api.TimeMetric;
@@ -62,8 +57,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.predicates.ThrowingPredicate;
-import com.github.steveash.guavate.Guavate;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
@@ -74,7 +67,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
private static final Logger LOG = LoggerFactory.getLogger(SetMailboxesCreationProcessor.class);
private final MessageFactory messageFactory;
private final SystemMailboxesProvider systemMailboxesProvider;
- private final AttachmentManager attachmentManager;
+ private final AttachmentChecker attachmentChecker;
private final MetricFactory metricFactory;
private final MailboxManager mailboxManager;
private final MailboxId.Factory mailboxIdFactory;
@@ -82,14 +75,15 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
private final MessageSender messageSender;
@VisibleForTesting @Inject
- SetMessagesCreationProcessor(MessageFactory messageFactory, SystemMailboxesProvider systemMailboxesProvider,
- AttachmentManager attachmentManager,
+ SetMessagesCreationProcessor(MessageFactory messageFactory,
+ SystemMailboxesProvider systemMailboxesProvider,
+ AttachmentChecker attachmentChecker,
MetricFactory metricFactory,
MailboxManager mailboxManager,
MailboxId.Factory mailboxIdFactory, MessageAppender messageAppender, MessageSender messageSender) {
this.messageFactory = messageFactory;
this.systemMailboxesProvider = systemMailboxesProvider;
- this.attachmentManager = attachmentManager;
+ this.attachmentChecker = attachmentChecker;
this.metricFactory = metricFactory;
this.mailboxManager = mailboxManager;
this.mailboxIdFactory = mailboxIdFactory;
@@ -186,36 +180,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
if (!message.isValid()) {
throw new MailboxInvalidMessageCreationException();
}
- assertAttachmentsExist(entry, session);
- }
-
- @VisibleForTesting void assertAttachmentsExist(CreationMessageEntry entry, MailboxSession session) throws AttachmentsNotFoundException, MailboxException {
- List<Attachment> attachments = entry.getValue().getAttachments();
- if (!attachments.isEmpty()) {
- List<BlobId> notFounds = listAttachmentsNotFound(attachments, session);
- if (!notFounds.isEmpty()) {
- throw new AttachmentsNotFoundException(notFounds);
- }
- }
- }
-
- private List<BlobId> listAttachmentsNotFound(List<Attachment> attachments, MailboxSession session) throws MailboxException {
- ThrowingPredicate<Attachment> notExists = attachment -> {
- try {
- attachmentManager.getAttachment(getAttachmentId(attachment), session);
- return false;
- } catch (AttachmentNotFoundException e) {
- return true;
- }
- };
- return attachments.stream()
- .filter(Throwing.predicate(notExists).sneakyThrow())
- .map(Attachment::getBlobId)
- .collect(Guavate.toImmutableList());
- }
-
- private AttachmentId getAttachmentId(Attachment attachment) {
- return AttachmentId.from(attachment.getBlobId().getRawValue());
+ attachmentChecker.assertAttachmentsExist(entry, session);
}
@VisibleForTesting void validateIsUserOwnerOfMailboxes(CreationMessageEntry entry, MailboxSession session) throws MailboxRightsException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/b0f4d067/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
new file mode 100644
index 0000000..dca2a44
--- /dev/null
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/AttachmentCheckerTest.java
@@ -0,0 +1,105 @@
+/****************************************************************
+ * 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.james.jmap.methods;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
+import org.apache.james.jmap.model.Attachment;
+import org.apache.james.jmap.model.BlobId;
+import org.apache.james.jmap.model.CreationMessage;
+import org.apache.james.jmap.model.CreationMessageId;
+import org.apache.james.mailbox.AttachmentManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.exception.AttachmentNotFoundException;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.AttachmentId;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
+public class AttachmentCheckerTest {
+
+ private final CreationMessageId creationMessageId = CreationMessageId.of("dlkja");
+ private final CreationMessage.Builder creationMessageBuilder = CreationMessage.builder()
+ .from(CreationMessage.DraftEmailer.builder().name("alice").email("alice@example.com").build())
+ .to(ImmutableList.of(CreationMessage.DraftEmailer.builder().name("bob").email("bob@example.com").build()))
+ .mailboxId("id")
+ .subject("Hey! ");
+
+ private AttachmentManager attachmentManager;
+ private MailboxSession session;
+
+ private AttachmentChecker sut;
+
+ @Before
+ public void setUp() {
+ session = new MockMailboxSession("Jonhy");
+ attachmentManager = mock(AttachmentManager.class);
+
+ sut = new AttachmentChecker(attachmentManager);
+ }
+
+ @Test
+ public void assertAttachmentsExistShouldThrowWhenUnknownBlobId() throws MailboxException {
+ BlobId unknownBlobId = BlobId.of("unknownBlobId");
+ AttachmentId unknownAttachmentId = AttachmentId.from(unknownBlobId.getRawValue());
+ when(attachmentManager.getAttachment(unknownAttachmentId, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId.getRawValue()));
+
+ assertThatThrownBy(() -> sut.assertAttachmentsExist(
+ new ValueWithId.CreationMessageEntry(
+ creationMessageId,
+ creationMessageBuilder.attachments(
+ Attachment.builder().size(12L).type("image/jpeg").blobId(unknownBlobId).build())
+ .build()
+ ),
+ session))
+ .isInstanceOf(AttachmentsNotFoundException.class);
+ }
+
+ @Test
+ public void assertAttachmentsExistShouldThrowWhenUnknownBlobIds() throws MailboxException {
+ BlobId unknownBlobId1 = BlobId.of("unknownBlobId1");
+ BlobId unknownBlobId2 = BlobId.of("unknownBlobId2");
+ AttachmentId unknownAttachmentId1 = AttachmentId.from(unknownBlobId1.getRawValue());
+ AttachmentId unknownAttachmentId2 = AttachmentId.from(unknownBlobId2.getRawValue());
+
+ when(attachmentManager.getAttachment(unknownAttachmentId1, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId1.getRawValue()));
+ when(attachmentManager.getAttachment(unknownAttachmentId2, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId2.getRawValue()));
+
+ assertThatThrownBy(() -> sut.assertAttachmentsExist(
+ new ValueWithId.CreationMessageEntry(
+ creationMessageId,
+ creationMessageBuilder.attachments(
+ Attachment.builder().size(12L).type("image/jpeg").blobId(unknownBlobId1).build(),
+ Attachment.builder().size(23L).type("image/git").blobId(unknownBlobId2).build())
+ .build()
+ ),
+ session))
+ .isInstanceOf(AttachmentsNotFoundException.class)
+ .matches(e -> ((AttachmentsNotFoundException)e).getAttachmentIds().containsAll(ImmutableSet.of(unknownBlobId1, unknownBlobId2)));
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/b0f4d067/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
index 25ece63..2857b1e 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
@@ -35,10 +35,7 @@ import java.util.stream.Stream;
import javax.mail.Flags;
-import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
import org.apache.james.jmap.methods.ValueWithId.CreationMessageEntry;
-import org.apache.james.jmap.model.Attachment;
-import org.apache.james.jmap.model.BlobId;
import org.apache.james.jmap.model.CreationMessage;
import org.apache.james.jmap.model.CreationMessage.DraftEmailer;
import org.apache.james.jmap.model.CreationMessageId;
@@ -60,14 +57,11 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.exception.AttachmentNotFoundException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxId.Factory;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
@@ -84,7 +78,6 @@ import org.junit.rules.ExpectedException;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
public class SetMessagesCreationProcessorTest {
@@ -112,10 +105,8 @@ public class SetMessagesCreationProcessorTest {
private MessageFactory messageFactory;
private MailSpool mockedMailSpool;
- private MailFactory mockedMailFactory;
private SystemMailboxesProvider fakeSystemMailboxesProvider;
private MockMailboxSession session;
- private MIMEMessageConverter mimeMessageConverter;
private AttachmentManager mockedAttachmentManager;
private MailboxManager mockedMailboxManager;
private Factory mockedMailboxIdFactory;
@@ -140,19 +131,19 @@ public class SetMessagesCreationProcessorTest {
when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("fake"));
messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
mockedMailSpool = mock(MailSpool.class);
- mockedMailFactory = mock(MailFactory.class);
+ MailFactory mockedMailFactory = mock(MailFactory.class);
mockedAttachmentManager = mock(AttachmentManager.class);
mockedMailboxManager = mock(MailboxManager.class);
- mockedMailboxIdFactory = mock(MailboxId.Factory.class);
+ mockedMailboxIdFactory = mock(Factory.class);
fakeSystemMailboxesProvider = new TestSystemMailboxesProvider(() -> optionalOutbox, () -> optionalDrafts);
session = new MockMailboxSession(USER);
- mimeMessageConverter = new MIMEMessageConverter();
+ MIMEMessageConverter mimeMessageConverter = new MIMEMessageConverter();
messageAppender = new MessageAppender(mockedAttachmentManager, mimeMessageConverter);
messageSender = new MessageSender(mockedMailSpool, mockedMailFactory);
sut = new SetMessagesCreationProcessor(messageFactory,
fakeSystemMailboxesProvider,
- mockedAttachmentManager,
+ new AttachmentChecker(mockedAttachmentManager),
new NoopMetricFactory(),
mockedMailboxManager,
mockedMailboxIdFactory,
@@ -241,7 +232,7 @@ public class SetMessagesCreationProcessorTest {
@Test
public void processShouldReturnNonEmptyCreatedWhenRequestHasNonEmptyCreate() throws MailboxException {
// Given
- sut = new SetMessagesCreationProcessor(messageFactory, fakeSystemMailboxesProvider, mockedAttachmentManager, new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory, messageAppender, messageSender);
+ sut = new SetMessagesCreationProcessor(messageFactory, fakeSystemMailboxesProvider, new AttachmentChecker(mockedAttachmentManager), new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory, messageAppender, messageSender);
// When
SetMessagesResponse result = sut.process(createMessageInOutbox, session);
@@ -257,7 +248,7 @@ public class SetMessagesCreationProcessorTest {
// Given
TestSystemMailboxesProvider doNotProvideOutbox = new TestSystemMailboxesProvider(Optional::empty, () -> optionalDrafts);
SetMessagesCreationProcessor sut = new SetMessagesCreationProcessor(messageFactory, doNotProvideOutbox,
- mockedAttachmentManager, new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory,
+ new AttachmentChecker(mockedAttachmentManager), new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory,
messageAppender,
messageSender);
// When
@@ -335,47 +326,6 @@ public class SetMessagesCreationProcessorTest {
verify(mockedMailSpool, never()).send(any(Mail.class), any(MailMetadata.class));
}
-
- @Test
- public void assertAttachmentsExistShouldThrowWhenUnknownBlobId() throws MailboxException {
- BlobId unknownBlobId = BlobId.of("unknownBlobId");
- AttachmentId unknownAttachmentId = AttachmentId.from(unknownBlobId.getRawValue());
- when(mockedAttachmentManager.getAttachment(unknownAttachmentId, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId.getRawValue()));
-
- assertThatThrownBy(() -> sut.assertAttachmentsExist(
- new CreationMessageEntry(
- creationMessageId,
- creationMessageBuilder.attachments(
- Attachment.builder().size(12l).type("image/jpeg").blobId(unknownBlobId).build())
- .build()
- ),
- session))
- .isInstanceOf(AttachmentsNotFoundException.class);
- }
-
- @Test
- public void assertAttachmentsExistShouldThrowWhenUnknownBlobIds() throws MailboxException {
- BlobId unknownBlobId1 = BlobId.of("unknownBlobId1");
- BlobId unknownBlobId2 = BlobId.of("unknownBlobId2");
- AttachmentId unknownAttachmentId1 = AttachmentId.from(unknownBlobId1.getRawValue());
- AttachmentId unknownAttachmentId2 = AttachmentId.from(unknownBlobId2.getRawValue());
-
- when(mockedAttachmentManager.getAttachment(unknownAttachmentId1, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId1.getRawValue()));
- when(mockedAttachmentManager.getAttachment(unknownAttachmentId2, session)).thenThrow(new AttachmentNotFoundException(unknownBlobId2.getRawValue()));
-
- assertThatThrownBy(() -> sut.assertAttachmentsExist(
- new CreationMessageEntry(
- creationMessageId,
- creationMessageBuilder.attachments(
- Attachment.builder().size(12l).type("image/jpeg").blobId(unknownBlobId1).build(),
- Attachment.builder().size(23l).type("image/git").blobId(unknownBlobId2).build())
- .build()
- ),
- session))
- .isInstanceOf(AttachmentsNotFoundException.class)
- .matches(e -> ((AttachmentsNotFoundException)e).getAttachmentIds().containsAll(ImmutableSet.of(unknownBlobId1, unknownBlobId2)));
- }
-
@Test
public void validateIsUserOwnerOfMailboxesShouldThrowWhenMailboxIdDoesntExist() throws Exception {
InMemoryId mailboxId = InMemoryId.of(6789);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org