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/16 14:20:02 UTC
[15/18] james-project git commit: JAMES-2220 patch should not empty
keywords when no keyword property given to SetMessages
JAMES-2220 patch should not empty keywords when no keyword property given to SetMessages
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/85ad8743
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/85ad8743
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/85ad8743
Branch: refs/heads/master
Commit: 85ad874381d2f4da9cf12e244c717ba8cc73f963
Parents: 0349ca6
Author: Matthieu Baechler <ma...@apache.org>
Authored: Wed Nov 15 17:15:42 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Nov 16 12:30:31 2017 +0100
----------------------------------------------------------------------
.../integration/SetMessagesMethodTest.java | 26 ++++++++++++++++++++
.../methods/SetMessagesUpdateProcessor.java | 2 +-
.../james/jmap/model/UpdateMessagePatch.java | 9 ++-----
.../jmap/model/UpdateMessagePatchTest.java | 10 ++++++++
4 files changed, 39 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/85ad8743/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 054b589..c29302b 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -564,6 +564,31 @@ public abstract class SetMessagesMethodTest {
}
@Test
+ @Ignore("gitlab-446 should allowed in drafts mailbox, rejected outside")
+ public void setMessagesShouldReturnAnErrorWhenKeywordsWithAddingDraftArePassed() throws MailboxException {
+ mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "mailbox");
+
+ ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, USER_MAILBOX,
+ new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes(Charsets.UTF_8)), new Date(), false, new Flags(Flags.Flag.ANSWERED));
+ await();
+
+ String messageId = message.getMessageId().serialize();
+
+ given()
+ .header("Authorization", accessToken.serialize())
+ .body(String.format("[[\"setMessages\", {\"update\": {\"%s\" : { \"keywords\": {\"$Draft\": true} } } }, \"#0\"]]", messageId))
+ .when()
+ .post("/jmap")
+ .then()
+ .log().ifValidationFails()
+ .body(NOT_UPDATED, hasKey(messageId))
+ .body(NOT_UPDATED + "[\""+messageId+"\"].type", equalTo("invalidProperties"))
+ .body(NOT_UPDATED + "[\""+messageId+"\"].properties[0]", equalTo("keywords"))
+ .body(NOT_UPDATED + "[\""+messageId+"\"].description", equalTo("keywords: Cannot add or remove draft flag"))
+ .body(ARGUMENTS + ".updated", hasSize(0));
+ }
+
+ @Test
public void setMessagesShouldReturnAnErrorWhenKeywordsWithDeletedArePassed() throws MailboxException {
mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "mailbox");
@@ -675,6 +700,7 @@ public abstract class SetMessagesMethodTest {
}
@Test
+ @Ignore("gitlab-446 should allowed outside drafts mailbox, rejected inside")
public void setMessagesShouldReturnAnErrorWhenKeywordsWithRemoveDraftArePassed() throws MailboxException {
mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, "mailbox");
http://git-wip-us.apache.org/repos/asf/james-project/blob/85ad8743/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
index 2497cea..c54deec 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java
@@ -185,7 +185,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
private List<Flags> patchFlags(List<MessageResult> messagesToBeUpdated, UpdateMessagePatch updateMessagePatch) {
return messagesToBeUpdated.stream()
.map(MessageResult::getFlags)
- .map(updateMessagePatch::applyToStateNoReset)
+ .map(updateMessagePatch::applyToState)
.collect(Guavate.toImmutableList());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/85ad8743/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UpdateMessagePatch.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UpdateMessagePatch.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UpdateMessagePatch.java
index a49df67..e0b73e2 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UpdateMessagePatch.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/UpdateMessagePatch.java
@@ -149,13 +149,8 @@ public class UpdateMessagePatch {
}
public Flags applyToState(Flags currentFlags) {
- return keywords.map(keyword -> keyword.asFlagsWithRecentAndDeletedFrom(currentFlags))
- .orElse(new Flags());
- }
-
- public Flags applyToStateNoReset(Flags currentFlags) {
- return keywords.map(keyword -> keyword.asFlagsWithRecentAndDeletedFrom(currentFlags))
+ return keywords
+ .map(keyword -> keyword.asFlagsWithRecentAndDeletedFrom(currentFlags))
.orElse(currentFlags);
}
-
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/85ad8743/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
index 00aeee3..c556ce6 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
@@ -257,4 +257,14 @@ public class UpdateMessagePatchTest {
messagePatch.isFlagsIdentity();
}
+
+ @Test
+ public void applyStateShouldKeepKeywordsWhenNoKeywordPatchDefined() {
+ UpdateMessagePatch messagePatch = UpdateMessagePatch.builder()
+ .build();
+ Flags flags = FlagsBuilder.builder()
+ .add(Flags.Flag.DELETED, Flags.Flag.RECENT, Flags.Flag.DRAFT)
+ .build();
+ assertThat(messagePatch.applyToState(flags)).isEqualTo(flags);
+ }
}
\ 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