This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit a3890ca10d99f8fa1d5725dfdc69358b760acd59 Author: Benoit Tellier <[email protected]> AuthorDate: Wed Mar 31 17:13:05 2021 +0700 JAMES-3472 s/maxChanged/maxChanges/ --- .../contract/EmailChangesMethodContract.scala | 66 ++++++++++++++++++++++ .../org/apache/james/jmap/mail/EmailGet.scala | 4 +- .../james/jmap/method/EmailChangesMethod.scala | 4 +- 3 files changed, 70 insertions(+), 4 deletions(-) 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/EmailChangesMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailChangesMethodContract.scala index 87cb3c5..7a2936c 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailChangesMethodContract.scala +++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailChangesMethodContract.scala @@ -863,6 +863,72 @@ trait EmailChangesMethodContract { } @Test + def maxChangesShouldBeTakenIntoAccount(server: GuiceJamesServer): Unit = { + val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl]) + val path: MailboxPath = MailboxPath.forUser(BOB, "mailbox1") + + mailboxProbe.createMailbox(path) + + val message: Message = Message.Builder + .of + .setSubject("test") + .setBody("testmail", StandardCharsets.UTF_8) + .build + + val messageId1: String = mailboxProbe.appendMessage(BOB.asString(), path, AppendCommand.from(message)).getMessageId.serialize + val messageId2: String = mailboxProbe.appendMessage(BOB.asString(), path, AppendCommand.from(message)).getMessageId.serialize + val messageId3: String = mailboxProbe.appendMessage(BOB.asString(), path, AppendCommand.from(message)).getMessageId.serialize + val messageId4: String = mailboxProbe.appendMessage(BOB.asString(), path, AppendCommand.from(message)).getMessageId.serialize + val messageId5: String = mailboxProbe.appendMessage(BOB.asString(), path, AppendCommand.from(message)).getMessageId.serialize + val messageId6: String = mailboxProbe.appendMessage(BOB.asString(), path, AppendCommand.from(message)).getMessageId.serialize + + val request = + s"""{ + | "using": ["urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail"], + | "methodCalls": [[ + | "Email/changes", + | { + | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", + | "sinceState": "${State.INITIAL.getValue}", + | "maxChanges": 38 + | }, + | "c1"]] + |}""".stripMargin + + awaitAtMostTenSeconds.untilAsserted { () => + 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) + .whenIgnoringPaths("methodResponses[0][1].newState") + .withOptions(new Options(IGNORING_ARRAY_ORDER)) + .isEqualTo( + s"""{ + | "sessionState": "${SESSION_STATE.value}", + | "methodResponses": [ + | [ "Email/changes", { + | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", + | "oldState": "${State.INITIAL.getValue}", + | "hasMoreChanges": false, + | "created": ["$messageId1", "$messageId2", "$messageId3", "$messageId4", "$messageId5", "$messageId6"], + | "updated": [], + | "destroyed": [] + | }, "c1"] + | ] + |}""".stripMargin) + } + } + + @Test def emailChangesShouldReturnNoChangesWhenNoNewerState(server: GuiceJamesServer): Unit = { val request = s"""{ diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailGet.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailGet.scala index a3d63dc..27f7ef2 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailGet.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/mail/EmailGet.scala @@ -113,8 +113,8 @@ case class SpecificHeaderRequest(property: NonEmptyString, headerName: String, p } case class EmailChangesRequest(accountId: AccountId, - sinceState: State, - maxChanged: Option[Limit]) extends WithAccountId + sinceState: State, + maxChanges: Option[Limit]) extends WithAccountId case class EmailChangesResponse(accountId: AccountId, diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailChangesMethod.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailChangesMethod.scala index 8f67520..d33a3c6 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailChangesMethod.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/EmailChangesMethod.scala @@ -47,9 +47,9 @@ class EmailChangesMethod @Inject()(val metricFactory: MetricFactory, SMono({ val accountId: JavaAccountId = JavaAccountId.fromUsername(mailboxSession.getUser) if (capabilities.contains(JAMES_SHARES)) { - SMono[EmailChanges](emailChangeRepository.getSinceStateWithDelegation(accountId, JavaState.of(request.sinceState.value), request.maxChanged.toJava)) + SMono[EmailChanges](emailChangeRepository.getSinceStateWithDelegation(accountId, JavaState.of(request.sinceState.value), request.maxChanges.toJava)) } else { - SMono[EmailChanges](emailChangeRepository.getSinceState(accountId, JavaState.of(request.sinceState.value), request.maxChanged.toJava)) + SMono[EmailChanges](emailChangeRepository.getSinceState(accountId, JavaState.of(request.sinceState.value), request.maxChanges.toJava)) } }) .map(emailChanges => EmailChangesResponse( --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
