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/06/07 10:46:25 UTC
[15/21] james-project git commit: JAMES-2048 Add UT on
CasssandraMessageDAO for the cases of attachement with or without CID
JAMES-2048 Add UT on CasssandraMessageDAO for the cases of attachement with or without CID
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d8c7063f
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d8c7063f
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d8c7063f
Branch: refs/heads/master
Commit: d8c7063f76bbbbef5655e005c8a1fef5a2b7fb37
Parents: c69c7ef
Author: quynhn <qn...@linagora.com>
Authored: Tue Jun 6 13:43:51 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jun 7 17:35:50 2017 +0700
----------------------------------------------------------------------
.../cassandra/mail/CassandraMessageDAOTest.java | 144 +++++++++++++++++++
1 file changed, 144 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/d8c7063f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
new file mode 100644
index 0000000..7535768
--- /dev/null
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -0,0 +1,144 @@
+/****************************************************************
+ * 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.mailbox.cassandra.mail;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.cassandra.CassandraId;
+import org.apache.james.mailbox.cassandra.CassandraMessageId;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.model.Attachment;
+import org.apache.james.mailbox.model.AttachmentId;
+import org.apache.james.mailbox.model.Cid;
+import org.apache.james.mailbox.model.ComposedMessageId;
+import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
+import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.store.mail.MessageMapper;
+import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
+import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CassandraMessageDAOTest {
+ private static final int BODY_START = 16;
+ private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
+ private static final String CONTENT = "Subject: Test7 \n\nBody7\n.\n";
+ private static final MessageUid messageUid = MessageUid.of(1);
+
+ private CassandraCluster cassandra;
+
+ private CassandraMessageDAO testee;
+ private CassandraMessageId.Factory messageIdFactory;
+
+ private SimpleMailboxMessage messageWith1Attachment;
+ private CassandraMessageId messageId;
+ private Attachment attachment;
+ private ComposedMessageId composedMessageId;
+ private List<ComposedMessageIdWithMetaData> messageIds;
+
+ @Before
+ public void setUp() {
+ cassandra = CassandraCluster.create(new CassandraMessageModule());
+ cassandra.ensureAllTables();
+
+ messageIdFactory = new CassandraMessageId.Factory();
+ messageId = messageIdFactory.generate();
+ testee = new CassandraMessageDAO(cassandra.getConf(), cassandra.getTypesProvider());
+
+ attachment = Attachment.builder()
+ .attachmentId(AttachmentId.from("123"))
+ .bytes("attachment".getBytes())
+ .type("content")
+ .build();
+
+ composedMessageId = new ComposedMessageId(MAILBOX_ID, messageId, messageUid);
+
+ messageIds = ImmutableList.of(ComposedMessageIdWithMetaData.builder()
+ .composedMessageId(composedMessageId)
+ .flags(new Flags())
+ .modSeq(1)
+ .build());
+ }
+
+ @After
+ public void tearDown() {
+ cassandra.clearAllTables();
+ }
+
+ @Test
+ public void saveShouldStoreMessageWithAttachmentAndCid() throws Exception {
+ messageWith1Attachment = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(),
+ ImmutableList.of(MessageAttachment.builder()
+ .attachment(attachment)
+ .cid(Cid.from("<cid>"))
+ .isInline(true)
+ .build()));
+
+ testee.save(messageWith1Attachment);
+
+ List<Optional<CassandraMessageDAO.MessageAttachmentRepresentation>> attachmentRepresentation = testee.retrieveMessages(messageIds, MessageMapper.FetchType.Body, Optional.empty())
+ .get()
+ .map(pair -> pair.getRight())
+ .map(streamAttachemnt -> streamAttachemnt.findFirst())
+ .collect(Guavate.toImmutableList());
+
+ Cid expectedCid = Cid.from("cid");
+
+ assertThat(attachmentRepresentation).hasSize(1);
+ assertThat(attachmentRepresentation.get(0).get().getCid().get()).isEqualTo(expectedCid);
+ }
+
+ @Test
+ public void saveShouldStoreMessageWithAttachmentButNoCid() throws Exception {
+ messageWith1Attachment = createMessage(messageId, CONTENT, BODY_START, new PropertyBuilder(),
+ ImmutableList.of(MessageAttachment.builder()
+ .attachment(attachment)
+ .isInline(true)
+ .build()));
+
+ testee.save(messageWith1Attachment);
+
+ List<Optional<CassandraMessageDAO.MessageAttachmentRepresentation>> attachmentRepresentation = testee.retrieveMessages(messageIds, MessageMapper.FetchType.Body, Optional.empty())
+ .get()
+ .map(pair -> pair.getRight())
+ .map(streamAttachemnt -> streamAttachemnt.findFirst())
+ .collect(Guavate.toImmutableList());
+
+ assertThat(attachmentRepresentation).hasSize(1);
+ assertThat(attachmentRepresentation.get(0).get().getCid().isPresent()).isFalse();
+ }
+
+ private SimpleMailboxMessage createMessage(MessageId messageId, String content, int bodyStart, PropertyBuilder propertyBuilder, List<MessageAttachment> attachments) {
+ return new SimpleMailboxMessage(messageId, new Date(), content.length(), bodyStart, new SharedByteArrayInputStream(content.getBytes()), new Flags(), propertyBuilder, MAILBOX_ID, attachments);
+ }
+
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org