This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch 3.9.x in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 632e6f8a7a2412abbf463bb9ab221b58118d8799 Author: Benoit TELLIER <[email protected]> AuthorDate: Mon Nov 10 14:29:23 2025 +0100 JAMES-3728 Test Email/se update combining move &setFlags --- .../rfc8621/contract/EmailSetMethodContract.scala | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala index 69de5c929d..fb494af4e8 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala +++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala @@ -6626,6 +6626,65 @@ trait EmailSetMethodContract { |}""".stripMargin) } + @Test + def updateShouldSupportMixingMoveAndFlagUpdate(server: GuiceJamesServer): Unit = { + val mailboxProbe = server.getProbe(classOf[MailboxProbeImpl]) + val mailboxId1: MailboxId = mailboxProbe.createMailbox(MailboxPath.inbox(BOB)) + val mailboxId2: MailboxId = mailboxProbe.createMailbox(MailboxPath.forUser(BOB, "other")) + val mailboxId3: MailboxId = mailboxProbe.createMailbox(MailboxPath.forUser(BOB, "yet-another")) + + val messageId: MessageId = mailboxProbe + .appendMessage(BOB.asString, MailboxPath.inbox(BOB), + AppendCommand.from( + buildTestMessage)) + .getMessageId + + val request = + s"""{ + | "using": ["urn:ietf:params:jmap:core","urn:ietf:params:jmap:mail"], + | "methodCalls": [ + | ["Email/set", { + | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", + | "update": { + | "${messageId.serialize}": { + | "mailboxIds": { + | "${mailboxId1.serialize}": true, + | "${mailboxId2.serialize}": true + | }, + | "keywords/music": true + | } + | } + | }, "c1"], + | ["Email/get", { + | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", + | "ids": ["${messageId.serialize}"], + | "properties": ["mailboxIds", "keywords"] + | }, "c3"] + | ] + |}""".stripMargin + + val response = `given` + .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER) + .body(request) + .when + .post + .`then` + .statusCode(SC_OK) + .contentType(JSON) + .extract + .body + .asString + + assertThatJson(response) + .inPath("methodResponses[1][1].list[0]") + .isEqualTo( + s"""{ + | "id": "${messageId.serialize}", + | "mailboxIds": {"${mailboxId1.serialize}":true, "${mailboxId2.serialize}":true}, + | "keywords" : {"music": true } + |}""".stripMargin) + } + @Test def invalidPatchPropertyShouldFail(server: GuiceJamesServer): Unit = { val mailboxProbe = server.getProbe(classOf[MailboxProbeImpl]) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
