You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/09/18 06:09:47 UTC
[james-project] 05/05: JAMES-3376 Demonstrate INBOX content loading
with back-references
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 f5be35258eec3340ad73792ea94c07604a2c15bf
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Sep 17 11:39:20 2020 +0700
JAMES-3376 Demonstrate INBOX content loading with back-references
---
.../rfc8621/contract/BackReferenceContract.scala | 126 +++++++++++++++++++++
1 file changed, 126 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/BackReferenceContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/BackReferenceContract.scala
index 449e091..8207ad6 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/BackReferenceContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/BackReferenceContract.scala
@@ -18,13 +18,21 @@
****************************************************************/
package org.apache.james.jmap.rfc8621.contract
+import java.nio.charset.StandardCharsets
+
import io.netty.handler.codec.http.HttpHeaderNames.ACCEPT
import io.restassured.RestAssured._
import net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson
+import net.javacrumbs.jsonunit.core.Option
+import net.javacrumbs.jsonunit.core.internal.Options
import org.apache.http.HttpStatus.SC_OK
import org.apache.james.GuiceJamesServer
import org.apache.james.jmap.http.UserCredential
import org.apache.james.jmap.rfc8621.contract.Fixture._
+import org.apache.james.mailbox.MessageManager.AppendCommand
+import org.apache.james.mailbox.model.{MailboxId, MailboxPath, MessageId}
+import org.apache.james.mime4j.dom.Message
+import org.apache.james.modules.MailboxProbeImpl
import org.apache.james.utils.DataProbeImpl
import org.junit.jupiter.api.{BeforeEach, Test}
@@ -400,4 +408,122 @@ trait BackReferenceContract {
| ]
|}""".stripMargin)
}
+
+ @Test
+ def loadingAccountWithBackReferences(server: GuiceJamesServer): Unit = {
+ val mailboxProbe: MailboxProbeImpl = server.getProbe(classOf[MailboxProbeImpl])
+ val mailboxId: MailboxId = mailboxProbe
+ .createMailbox(MailboxPath.inbox(BOB))
+ val messageId1: MessageId = server.getProbe(classOf[MailboxProbeImpl])
+ .appendMessage(BOB.asString, MailboxPath.inbox(BOB), AppendCommand.from(Message.Builder
+ .of.setSubject("message 1")
+ .setBody("testmail", StandardCharsets.UTF_8)
+ .build))
+ .getMessageId
+ val messageId2: MessageId = server.getProbe(classOf[MailboxProbeImpl])
+ .appendMessage(BOB.asString, MailboxPath.inbox(BOB), AppendCommand.from(Message.Builder
+ .of.setSubject("message 2")
+ .setBody("testmail", StandardCharsets.UTF_8)
+ .build))
+ .getMessageId
+ val messageId3: MessageId = server.getProbe(classOf[MailboxProbeImpl])
+ .appendMessage(BOB.asString, MailboxPath.inbox(BOB), AppendCommand.from(Message.Builder
+ .of.setSubject("message 3")
+ .setBody("testmail", StandardCharsets.UTF_8)
+ .build))
+ .getMessageId
+
+ val response = `given`
+ .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
+ .body(
+ s"""{
+ | "using": [
+ | "urn:ietf:params:jmap:core",
+ | "urn:ietf:params:jmap:mail"],
+ | "methodCalls": [[
+ | "Mailbox/query",
+ | {
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+ | "filter": {"role":"Inbox"}
+ | },
+ | "c1"],[
+ | "Email/query",
+ | {
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+ | "filter": {
+ | "#inMailbox": {
+ | "resultOf":"c1",
+ | "name":"Mailbox/query",
+ | "path":"ids[0]"
+ | }
+ | }
+ | },
+ | "c2"], [
+ | "Email/get",
+ | {
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+ | "properties": ["id", "subject"],
+ | "#ids": {
+ | "resultOf":"c2",
+ | "name":"Email/query",
+ | "path":"ids/*"
+ | }
+ | },
+ | "c3"]]
+ |}""".stripMargin)
+ .when
+ .post
+ .`then`
+ .statusCode(SC_OK)
+ .extract()
+ .body()
+ .asString()
+
+ assertThatJson(response)
+ .withOptions(new Options(Option.IGNORING_ARRAY_ORDER))
+ .isEqualTo(
+ s"""{
+ | "sessionState": "75128aab4b1b",
+ | "methodResponses": [
+ | [
+ | "Mailbox/query",
+ | {
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+ | "queryState": "33cc79f8",
+ | "canCalculateChanges": false,
+ | "ids": ["${mailboxId.serialize}"],
+ | "position": 0,
+ | "limit": 256
+ | },
+ | "c1"
+ | ],
+ | [
+ | "Email/query",
+ | {
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+ | "queryState": "a6904f19",
+ | "canCalculateChanges": false,
+ | "ids": ["${messageId1.serialize}", "${messageId2.serialize}", "${messageId3.serialize}"],
+ | "position": 0,
+ | "limit": 256
+ | },
+ | "c2"
+ | ],
+ | [
+ | "Email/get",
+ | {
+ | "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+ | "state": "000001",
+ | "list": [
+ | {"id": "${messageId3.serialize}", "subject": "message 3"},
+ | {"id": "${messageId2.serialize}", "subject": "message 2"},
+ | {"id": "${messageId1.serialize}", "subject": "message 1"}
+ | ],
+ | "notFound": []
+ | },
+ | "c3"
+ | ]
+ | ]
+ |}""".stripMargin)
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org