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