Hi,
You will find as an attachement a patch containing failing test ( issue
spotted in MAILBOX-207 ).
I will provide an other patch solving the issue as soon as possible.
Sincerly yours,
Benoit Tellier
diff -uNr james-mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java james-mailbox-new/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
--- james-mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java 2014-12-16 17:49:32.163262333 +0100
+++ james-mailbox-new/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java 2014-12-19 18:04:08.105500594 +0100
@@ -19,9 +19,12 @@
package org.apache.james.mailbox.cassandra.mail;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Date;
+import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.UUID;
@@ -32,8 +35,11 @@
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
@@ -48,7 +54,7 @@
/**
* Unit tests for CassandraMessageMapper.
- *
+ *
*/
public class CassandraMessageMapperTest {
@@ -124,7 +130,7 @@
/**
* Test an ordered scenario with count, find, add... methods.
- *
+ *
* @throws Exception
*/
@Test
@@ -136,6 +142,69 @@
testAdd();
testGetLastUid();
testGetHighestModSeq();
+ testMessageUpdateReplace();
+ testMessageUpdateAddition();
+ }
+
+ /**
+ * Test message flag replacement
+ */
+ private void testMessageUpdateReplace() throws MailboxException {
+ LOG.info("message update : replace flags");
+ Flags flags = new Flags();
+ flags.add(Flags.Flag.ANSWERED);
+ flags.add(Flags.Flag.DRAFT);
+ messageMapper.updateFlags(MBOXES.get(1), flags, true, true, MessageRange.all());
+ Iterator<Message<UUID>> messageIterator = messageMapper.findInMailbox(MBOXES.get(1), MessageRange.all(), MessageMapper.FetchType.Full, 100);
+ while(messageIterator.hasNext()) {
+ Message<UUID> message = messageIterator.next();
+ assertTrue(message.isAnswered());
+ assertTrue(message.isDraft());
+ assertFalse(message.isDeleted());
+ assertFalse(message.isRecent());
+ assertFalse(message.isSeen());
+ assertFalse(message.isFlagged());
+ }
+ }
+
+ /**
+ * Test message flag set to true
+ */
+ private void testMessageUpdateAddition() throws MailboxException {
+ LOG.info("message update : flag addition");
+ Flags flags = new Flags();
+ flags.add(Flags.Flag.FLAGGED);
+ messageMapper.updateFlags(MBOXES.get(1), flags, true, false, MessageRange.all());
+ Iterator<Message<UUID>> messageIterator = messageMapper.findInMailbox(MBOXES.get(1), MessageRange.all(), MessageMapper.FetchType.Full, 100);
+ while(messageIterator.hasNext()) {
+ Message<UUID> message = messageIterator.next();
+ assertTrue(message.isAnswered());
+ assertTrue(message.isDraft());
+ assertFalse(message.isDeleted());
+ assertFalse(message.isRecent());
+ assertFalse(message.isSeen());
+ assertTrue(message.isFlagged());
+ }
+ }
+
+ /**
+ * Test message flag removal
+ */
+ private void testMessageUpdateRemove() throws MailboxException {
+ LOG.info("message update : flag removal");
+ Flags flags = new Flags();
+ flags.add(Flags.Flag.ANSWERED);
+ messageMapper.updateFlags(MBOXES.get(1), flags, false, false, MessageRange.all());
+ Iterator<Message<UUID>> messageIterator = messageMapper.findInMailbox(MBOXES.get(1), MessageRange.all(), MessageMapper.FetchType.Full, 100);
+ while(messageIterator.hasNext()) {
+ Message<UUID> message = messageIterator.next();
+ assertFalse(message.isAnswered());
+ assertTrue(message.isDraft());
+ assertFalse(message.isDeleted());
+ assertFalse(message.isRecent());
+ assertFalse(message.isSeen());
+ assertTrue(message.isFlagged());
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]