JAMES-1892: Cassandra should Pass JMAP integration tests

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

Branch: refs/heads/master
Commit: 4f8a6b496f788a282e0bce64fd3156c1556d3d17
Parents: 64b61a4
Author: Quynh Nguyen <qngu...@linagora.com>
Authored: Wed Dec 21 14:04:59 2016 +0700
Committer: Raphaël Ouazana <raphael.ouaz...@linagora.com>
Committed: Wed Dec 21 18:24:47 2016 +0100

----------------------------------------------------------------------
 .../mail/CassandraMessageIdMapper.java          |  2 +-
 .../mailbox/store/FlagsUpdateCalculator.java    |  4 +-
 .../store/mail/model/MessageIdMapperTest.java   | 89 ++++++++++++++++++--
 .../CassandraGetMailboxesMethodTest.java        |  2 -
 .../CassandraGetMessageListMethodTest.java      |  2 -
 .../CassandraGetVacationResponseTest.java       |  2 -
 .../CassandraJmapAuthenticationTest.java        |  2 -
 .../CassandraSetMailboxesMethodTest.java        |  2 -
 .../CassandraSetMessagesMethodTest.java         |  8 +-
 .../CassandraSetVacationResponseTest.java       |  2 -
 .../CassandraVacationIntegrationTest.java       |  2 -
 .../cucumber/CassandraDownloadCucumberTest.java |  1 -
 .../CassandraGetMessagesMethodTest.java         |  1 -
 ...CassandraSetMailboxesMethodCucumberTest.java |  1 -
 .../cassandra/cucumber/CassandraStepdefs.java   |  2 +
 .../cucumber/CassandraUploadCucumberTest.java   |  1 -
 .../cucumber/GetMessagesMethodStepdefs.java     |  8 +-
 .../james/jmap/json/ObjectMapperFactory.java    |  2 +-
 18 files changed, 96 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index 6f67427..a87edd4 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -263,7 +263,7 @@ public class CassandraMessageIdMapper implements 
MessageIdMapper {
         MailboxId mailboxId = 
composedMessageId.getComposedMessageId().getMailboxId();
         try {
             long newModSeq = modSeqProvider.nextModSeq(mailboxSession, 
mailboxId);
-            Flags newFlags = new 
FlagsUpdateCalculator(composedMessageId.getFlags(), 
updateMode).buildNewFlags(newState);
+            Flags newFlags = new FlagsUpdateCalculator(newState, 
updateMode).buildNewFlags(composedMessageId.getFlags());
             ComposedMessageIdWithMetaData composedMessageIdWithMetaData = new 
ComposedMessageIdWithMetaData(
                         composedMessageId.getComposedMessageId(),
                         newFlags,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/mailbox/store/src/main/java/org/apache/james/mailbox/store/FlagsUpdateCalculator.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/FlagsUpdateCalculator.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/FlagsUpdateCalculator.java
index 5a6410b..603541a 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/FlagsUpdateCalculator.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/FlagsUpdateCalculator.java
@@ -33,8 +33,8 @@ public class FlagsUpdateCalculator {
         this.mode = mode;
     }
 
-    public Flags buildNewFlags(Flags flags) {
-        Flags updatedFlags = new Flags(flags);
+    public Flags buildNewFlags(Flags oldFlags) {
+        Flags updatedFlags = new Flags(oldFlags);
         switch (mode) {
         case REPLACE:
             return new Flags(providedFlags);

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index d03f96c..8df5433 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -31,6 +31,7 @@ import javax.mail.util.SharedByteArrayInputStream;
 
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.MailboxId;
@@ -323,7 +324,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
 
         MessageId messageId = message1.getMessageId();
         Flags newFlags = new Flags(Flag.ANSWERED);
-        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId()), newFlags, 
MessageManager.FlagsUpdateMode.REMOVE);
+        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId()), newFlags, FlagsUpdateMode.ADD);
 
         long modSeq = mapperProvider.highestModSeq(benwaInboxMailbox);
         UpdatedFlags expectedUpdatedFlags = new 
UpdatedFlags(message1.getUid(), modSeq, new Flags(), newFlags);
@@ -331,6 +332,78 @@ public class MessageIdMapperTest<T extends MapperProvider> 
{
     }
 
     @ContractTest
+    public void setFlagsShouldReturnUpdatedFlagsWhenReplaceMode() throws 
Exception {
+        Flags messageFlags = new FlagsBuilder().add(Flags.Flag.RECENT, 
Flags.Flag.FLAGGED)
+            .build();
+
+        message1.setUid(mapperProvider.generateMessageUid());
+        message1.setFlags(messageFlags);
+        message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message1);
+
+        MessageId messageId = message1.getMessageId();
+        Flags newFlags = new FlagsBuilder().add(Flags.Flag.DELETED, 
Flags.Flag.FLAGGED)
+            .add("userflag")
+            .build();
+
+        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId()), newFlags, FlagsUpdateMode.REPLACE);
+
+        long modSeq = mapperProvider.highestModSeq(benwaInboxMailbox);
+        UpdatedFlags expectedUpdatedFlags = new 
UpdatedFlags(message1.getUid(), modSeq, messageFlags, newFlags);
+
+        
assertThat(flags).contains(MapEntry.entry(benwaInboxMailbox.getMailboxId(), 
expectedUpdatedFlags));
+    }
+
+    @ContractTest
+    public void setFlagsShouldReturnUpdatedFlagsWhenRemoveMode() throws 
Exception {
+        Flags messageFlags = new FlagsBuilder().add(Flags.Flag.RECENT, 
Flags.Flag.FLAGGED)
+            .build();
+
+        message1.setUid(mapperProvider.generateMessageUid());
+        message1.setFlags(messageFlags);
+        message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message1);
+
+        MessageId messageId = message1.getMessageId();
+        Flags newFlags = new FlagsBuilder().add(Flags.Flag.DELETED, 
Flags.Flag.FLAGGED)
+            .add("userflag")
+            .build();
+
+        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId()), newFlags, FlagsUpdateMode.REMOVE);
+
+        long modSeq = mapperProvider.highestModSeq(benwaInboxMailbox);
+        UpdatedFlags expectedUpdatedFlags = new 
UpdatedFlags(message1.getUid(), modSeq, messageFlags, new 
Flags(Flags.Flag.RECENT));
+
+        
assertThat(flags).contains(MapEntry.entry(benwaInboxMailbox.getMailboxId(), 
expectedUpdatedFlags));
+    }
+
+    @ContractTest
+    public void setFlagsShouldUpdateMessageFlagsWhenRemoveMode() throws 
Exception {
+        Flags messageFlags = new FlagsBuilder().add(Flags.Flag.RECENT, 
Flags.Flag.FLAGGED)
+            .build();
+
+        message1.setUid(mapperProvider.generateMessageUid());
+        message1.setFlags(messageFlags);
+        message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        sut.save(message1);
+
+        MessageId messageId = message1.getMessageId();
+        Flags newFlags = new FlagsBuilder().add(Flags.Flag.DELETED, 
Flags.Flag.FLAGGED)
+            .add("userflag")
+            .build();
+
+        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId()), newFlags, FlagsUpdateMode.REMOVE);
+
+        long modSeq = mapperProvider.highestModSeq(benwaInboxMailbox);
+        UpdatedFlags expectedUpdatedFlags = new 
UpdatedFlags(message1.getUid(), modSeq, messageFlags, new 
Flags(Flags.Flag.RECENT));
+
+        List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), 
MessageMapper.FetchType.Body);
+        assertThat(messages).hasSize(1);
+        assertThat(messages.get(0).isRecent()).isTrue();
+        assertThat(messages.get(0).isFlagged()).isFalse();
+    }
+
+    @ContractTest
     public void setFlagsShouldReturnEmptyWhenMailboxIdsIsEmpty() throws 
Exception {
         message1.setUid(mapperProvider.generateMessageUid());
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
@@ -353,13 +426,13 @@ public class MessageIdMapperTest<T extends 
MapperProvider> {
 
     @ContractTest
     public void setFlagsShouldAddFlagsWhenAddUpdateMode() throws Exception {
+        Flags initialFlags = new Flags(Flag.RECENT);
         message1.setUid(mapperProvider.generateMessageUid());
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
+        message1.setFlags(initialFlags);
         sut.save(message1);
 
         MessageId messageId = message1.getMessageId();
-        Flags initialFlags = new Flags(Flag.RECENT);
-        sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), 
initialFlags, MessageManager.FlagsUpdateMode.REMOVE);
 
         Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), 
MessageManager.FlagsUpdateMode.ADD);
 
@@ -385,7 +458,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
 
         MessageId messageId = message1.getMessageId();
         Flags newFlags = new Flags(Flag.ANSWERED);
-        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId(), 
message1InOtherMailbox.getMailboxId()), newFlags, 
MessageManager.FlagsUpdateMode.REMOVE);
+        Map<MailboxId, UpdatedFlags> flags = sut.setFlags(messageId, 
ImmutableList.of(message1.getMailboxId(), 
message1InOtherMailbox.getMailboxId()), newFlags, FlagsUpdateMode.ADD);
 
         long modSeqBenwaInboxMailbox = 
mapperProvider.highestModSeq(benwaInboxMailbox);
         long modSeqBenwaWorkMailbox = 
mapperProvider.highestModSeq(benwaWorkMailbox);
@@ -402,7 +475,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
         sut.save(message1);
 
         MessageId messageId = message1.getMessageId();
-        sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new 
Flags(Flag.ANSWERED), MessageManager.FlagsUpdateMode.REMOVE);
+        sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId()), new 
Flags(Flag.ANSWERED), FlagsUpdateMode.ADD);
 
         List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), 
MessageMapper.FetchType.Body);
         assertThat(messages).hasSize(1);
@@ -470,7 +543,7 @@ public class MessageIdMapperTest<T extends MapperProvider> {
         sut.save(message1InOtherMailbox);
 
         MessageId messageId = message1.getMessageId();
-        sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId(), 
message1InOtherMailbox.getMailboxId()), new Flags(Flag.ANSWERED), 
MessageManager.FlagsUpdateMode.REMOVE);
+        sut.setFlags(messageId, ImmutableList.of(message1.getMailboxId(), 
message1InOtherMailbox.getMailboxId()), new Flags(Flag.ANSWERED), 
FlagsUpdateMode.ADD);
 
         List<MailboxMessage> messages = sut.find(ImmutableList.of(messageId), 
MessageMapper.FetchType.Body);
         assertThat(messages).hasSize(2);
@@ -571,10 +644,10 @@ public class MessageIdMapperTest<T extends 
MapperProvider> {
     public void countUnseenMessageShouldNotTakeCareOfOtherFlagsUpdates() 
throws Exception {
         message1.setUid(mapperProvider.generateMessageUid());
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
-        message1.setFlags(new Flags(Flag.SEEN));
+        message1.setFlags(new Flags(Flag.RECENT));
         sut.save(message1);
 
-        sut.setFlags(message1.getMessageId(), 
ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), 
MessageManager.FlagsUpdateMode.REMOVE);
+        sut.setFlags(message1.getMessageId(), 
ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), 
FlagsUpdateMode.REMOVE);
 
         
assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(1);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
index 5fc520c..67a7cd1 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
@@ -22,10 +22,8 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.methods.integration.GetMailboxesMethodTest;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraGetMailboxesMethodTest extends GetMailboxesMethodTest {
 
     @Rule 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
index dca76be..8d5aa57 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
@@ -22,10 +22,8 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.methods.integration.GetMessageListMethodTest;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraGetMessageListMethodTest extends 
GetMessageListMethodTest {
 
     @Rule 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
index f94ea8c..6e52b05 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
@@ -23,10 +23,8 @@ import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.methods.integration.GetVacationResponseTest;
 import org.apache.james.util.date.ZonedDateTimeProvider;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraGetVacationResponseTest extends GetVacationResponseTest {
 
     @Rule 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
index 642c216..28667a3 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
@@ -23,10 +23,8 @@ import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.FixedDateZonedDateTimeProvider;
 import org.apache.james.jmap.JMAPAuthenticationTest;
 import org.apache.james.util.date.ZonedDateTimeProvider;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraJmapAuthenticationTest extends JMAPAuthenticationTest {
 
     @Rule 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
index c851621..10c32e5 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
@@ -22,10 +22,8 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.methods.integration.SetMailboxesMethodTest;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraSetMailboxesMethodTest extends SetMailboxesMethodTest {
 
     @Rule 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
index d9a450a..12b4045 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
@@ -22,19 +22,15 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.methods.integration.SetMessagesMethodTest;
+import org.apache.james.mailbox.cassandra.CassandraMessageId;
 import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.TestMessageId;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraSetMessagesMethodTest extends SetMessagesMethodTest {
 
     @Rule 
     public CassandraJmapTestRule rule = new CassandraJmapTestRule();
 
-    private long nextUnusedMessageId = 100;
-
     @Override
     protected JmapJamesServer createJmapServer() {
         return rule.jmapServer();
@@ -47,7 +43,7 @@ public class CassandraSetMessagesMethodTest extends 
SetMessagesMethodTest {
     
     @Override
     protected MessageId randomMessageId() {
-        return TestMessageId.of(nextUnusedMessageId++);
+        return new CassandraMessageId.Factory().generate();
     }
     
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
index 40d56ba..463971f 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
@@ -22,10 +22,8 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.methods.integration.SetVacationResponseTest;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraSetVacationResponseTest extends SetVacationResponseTest {
 
     @Rule 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
index 833b096..c16c96d 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
@@ -22,10 +22,8 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.jmap.VacationIntegrationTest;
-import org.junit.Ignore;
 import org.junit.Rule;
 
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraVacationIntegrationTest extends VacationIntegrationTest {
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
index 3b508b0..55b28b2 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
@@ -30,6 +30,5 @@ import cucumber.api.junit.Cucumber;
                 glue={"org.apache.james.jmap.methods.integration", 
"org.apache.james.jmap.cassandra.cucumber"},
                 tags = {"~@Ignore"},
                 strict = true)
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraDownloadCucumberTest {
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
index 3244921..9d25378 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
@@ -29,6 +29,5 @@ import cucumber.api.junit.Cucumber;
 @CucumberOptions(features="classpath:cucumber/GetMessages.feature",
                 glue={"org.apache.james.jmap.methods.integration", 
"org.apache.james.jmap.cassandra.cucumber"},
                 strict = true)
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraGetMessagesMethodTest {
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
index 1a8378f..7bc43e6 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
@@ -29,6 +29,5 @@ import cucumber.api.junit.Cucumber;
 @CucumberOptions(features="classpath:cucumber/MailboxModification.feature",
                 glue={"org.apache.james.jmap.methods.integration", 
"org.apache.james.jmap.cassandra.cucumber"},
                 strict = true)
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraSetMailboxesMethodCucumberTest {
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
index 226e67c..a024d86 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
@@ -27,6 +27,7 @@ import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.JmapJamesServer;
 import org.apache.james.backends.cassandra.EmbeddedCassandra;
 import org.apache.james.jmap.methods.integration.cucumber.MainStepdefs;
+import org.apache.james.mailbox.cassandra.CassandraMessageId;
 import org.apache.james.mailbox.elasticsearch.EmbeddedElasticSearch;
 import org.apache.james.modules.CassandraJmapServerModule;
 import org.junit.rules.TemporaryFolder;
@@ -54,6 +55,7 @@ public class CassandraStepdefs {
     public void init() throws Exception {
         temporaryFolder.create();
         embeddedElasticSearch.before();
+        mainStepdefs.messageIdFactory = new CassandraMessageId.Factory();
         mainStepdefs.jmapServer = new JmapJamesServer()
                 .combineWith(CassandraJamesServerMain.cassandraServerModule)
                 .overrideWith(new CassandraJmapServerModule(temporaryFolder, 
embeddedElasticSearch, cassandra));

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
index 375b1b5..c54f778 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
@@ -30,6 +30,5 @@ import cucumber.api.junit.Cucumber;
                 glue={"org.apache.james.jmap.methods.integration", 
"org.apache.james.jmap.cassandra.cucumber"},
                 tags = {"~@Ignore"},
                 strict = true)
-@Ignore("needs messageIdManager cassandra impl")
 public class CassandraUploadCucumberTest {
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index b4d37bb..f699b51 100644
--- 
a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ 
b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -214,10 +214,15 @@ public class GetMessagesMethodStepdefs {
         requestedMessageIds = messageIds;
         String serializedIds = requestedMessageIds.stream()
                 .map(MessageId::serialize)
+                .map(toJsonString())
                 .collect(Collectors.joining(",", "[", "]" ));
         post("[[\"getMessages\", {\"ids\": " + serializedIds + "}, \"#0\"]]");
     }
 
+    private Function<? super String, ? extends String> toJsonString() {
+        return string -> "\"" + string + "\"";
+    }
+
     @When("^the user is getting messages \"(.*?)\" with properties \"(.*?)\"$")
     public void postWithParameters(List<String> ids, List<String> properties) 
throws Throwable {
         requestedMessageIds = ids.stream()
@@ -226,10 +231,11 @@ public class GetMessagesMethodStepdefs {
 
         String serializedIds = requestedMessageIds.stream()
                 .map(MessageId::serialize)
+                .map(toJsonString())
                 .collect(Collectors.joining(",", "[", "]" ));
 
         String serializedProperties = properties.stream()
-                .map(x -> "\"" + x + "\"")
+                .map(toJsonString())
                 .collect(Collectors.joining(",", "[", "]" ));
 
         post("[[\"getMessages\", {\"ids\": " + serializedIds + ", 
\"properties\": " + serializedProperties + "}, \"#0\"]]");

http://git-wip-us.apache.org/repos/asf/james-project/blob/4f8a6b49/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
index 02cfe6e..a0a12e8 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java
@@ -57,7 +57,7 @@ public class ObjectMapperFactory {
         mailboxIdModule.addSerializer(MailboxId.class, new 
MailboxIdSerializer());
         mailboxIdModule.addKeyDeserializer(MailboxId.class, new 
MailboxIdKeyDeserializer(mailboxIdFactory));
         mailboxIdModule.addKeySerializer(MailboxId.class, new 
MailboxIdKeySerializer());
-        
+
         mailboxIdModule.addDeserializer(MessageId.class, new 
MessageIdDeserializer(messageIdFactory));
         mailboxIdModule.addSerializer(MessageId.class, new 
MessageIdSerializer());
         mailboxIdModule.addKeyDeserializer(MessageId.class, new 
MessageIdKeyDeserializer(messageIdFactory));


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

Reply via email to