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 rc...@apache.org on 2020/05/18 03:03:32 UTC
[james-project] 05/06: JAMES-3168: Use assertJ for json assertion
in EchoMethod test
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 8b87d4505de2325ced264177d238b929dfd37f34
Author: duc91 <du...@gmail.com>
AuthorDate: Mon May 11 17:12:41 2020 +0700
JAMES-3168: Use assertJ for json assertion in EchoMethod test
---
server/protocols/jmap-rfc-8621/pom.xml | 8 +-
.../james/jmap/routes/JMAPApiRoutesTest.scala | 157 +++++++++++++++------
2 files changed, 118 insertions(+), 47 deletions(-)
diff --git a/server/protocols/jmap-rfc-8621/pom.xml b/server/protocols/jmap-rfc-8621/pom.xml
index 9f2d220..ba30cd2 100644
--- a/server/protocols/jmap-rfc-8621/pom.xml
+++ b/server/protocols/jmap-rfc-8621/pom.xml
@@ -17,7 +17,8 @@
specific language governing permissions and limitations
under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -83,6 +84,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>net.javacrumbs.json-unit</groupId>
+ <artifactId>json-unit-assertj</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/JMAPApiRoutesTest.scala b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/JMAPApiRoutesTest.scala
index 4301319..004529b 100644
--- a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/JMAPApiRoutesTest.scala
+++ b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/JMAPApiRoutesTest.scala
@@ -1,4 +1,4 @@
-/** **************************************************************
+/****************************************************************
* Licensed to the Apache Software Foundation (ASF) under one *
* or more contributor license agreements. See the NOTICE file *
* distributed with this work for additional information *
@@ -6,16 +6,16 @@
* to you under the Apache License, Version 2.0 (the *
* "License"); you may not use this file except in compliance *
* with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
* Unless required by applicable law or agreed to in writing, *
* software distributed under the License is distributed on an *
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
* KIND, either express or implied. See the License for the *
* specific language governing permissions and limitations *
* under the License. *
- * ***************************************************************/
+ ****************************************************************/
package org.apache.james.jmap.routes
import java.nio.charset.StandardCharsets
@@ -27,11 +27,9 @@ import io.restassured.builder.RequestSpecBuilder
import io.restassured.config.EncoderConfig.encoderConfig
import io.restassured.config.RestAssuredConfig.newConfig
import io.restassured.http.ContentType
+import net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson
import org.apache.http.HttpStatus
import org.apache.james.jmap.JMAPUrls.JMAP
-import org.apache.james.jmap.json.Fixture._
-import org.apache.james.jmap.json.Serializer
-import org.apache.james.jmap.model.RequestObject
import org.apache.james.jmap.{JMAPConfiguration, JMAPRoutesHandler, JMAPServer, Version, VersionParser}
import org.scalatest.BeforeAndAfter
import org.scalatest.flatspec.AnyFlatSpec
@@ -48,13 +46,80 @@ class JMAPApiRoutesTest extends AnyFlatSpec with BeforeAndAfter with Matchers {
private val ROUTES_HANDLER: ImmutableSet[JMAPRoutesHandler] = ImmutableSet.of(new JMAPRoutesHandler(Version.RFC8621, JMAP_API_ROUTE))
private val REQUEST_OBJECT: String =
- new Serializer().serialize(RequestObject(Seq(coreIdentifier), Seq(invocation1))).toString()
-
+ """{
+ | "using": [
+ | "urn:ietf:params:jmap:core"
+ | ],
+ | "methodCalls": [
+ | [
+ | "Core/echo",
+ | {
+ | "arg1": "arg1data",
+ | "arg2": "arg2data"
+ | },
+ | "c1"
+ | ]
+ | ]
+ |}""".stripMargin
private val REQUEST_OBJECT_WITH_UNSUPPORTED_METHOD: String =
- new Serializer().serialize(RequestObject(Seq(coreIdentifier), Seq(invocation1, unsupportedInvocation))).toString()
-
- private val RESPONSE_OBJECT: String = new Serializer().serialize(responseObject1).toString()
- private val RESPONSE_OBJECT_WITH_UNSUPPORTED_METHOD: String = new Serializer().serialize(responseObjectWithUnsupportedMethod).toString()
+ """{
+ | "using": [
+ | "urn:ietf:params:jmap:core"
+ | ],
+ | "methodCalls": [
+ | [
+ | "Core/echo",
+ | {
+ | "arg1": "arg1data",
+ | "arg2": "arg2data"
+ | },
+ | "c1"
+ | ],
+ | [
+ | "error",
+ | {
+ | "type": "Not implemented"
+ | },
+ | "notsupport"
+ | ]
+ | ]
+ |}""".stripMargin
+
+ private val RESPONSE_OBJECT: String =
+ """{
+ | "sessionState": "75128aab4b1b",
+ | "methodResponses": [
+ | [
+ | "Core/echo",
+ | {
+ | "arg1": "arg1data",
+ | "arg2": "arg2data"
+ | },
+ | "c1"
+ | ]
+ | ]
+ |}""".stripMargin
+ private val RESPONSE_OBJECT_WITH_UNSUPPORTED_METHOD: String =
+ """{
+ | "sessionState": "75128aab4b1b",
+ | "methodResponses": [
+ | [
+ | "Core/echo",
+ | {
+ | "arg1": "arg1data",
+ | "arg2": "arg2data"
+ | },
+ | "c1"
+ | ],
+ | [
+ | "error",
+ | {
+ | "type": "Not implemented"
+ | },
+ | "notsupport"
+ | ]
+ | ]
+ |}""".stripMargin
private val SUPPORTED_VERSIONS = ImmutableSet.of(Version.DRAFT, Version.RFC8621)
@@ -92,86 +157,86 @@ class JMAPApiRoutesTest extends AnyFlatSpec with BeforeAndAfter with Matchers {
"RFC-8621 version, GET" should "not supported and return 404 status" in {
RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
+ .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
.when()
- .get
+ .get
.then
- .statusCode(HttpStatus.SC_NOT_FOUND)
+ .statusCode(HttpStatus.SC_NOT_FOUND)
}
"RFC-8621 version, POST, without body" should "return 200 status" in {
RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
+ .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
.when()
- .post
+ .post
.then
- .statusCode(HttpStatus.SC_OK)
+ .statusCode(HttpStatus.SC_OK)
}
"RFC-8621 version, POST, methods include supported" should "return OK status" in {
val response = RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
- .body(REQUEST_OBJECT)
+ .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
+ .body(REQUEST_OBJECT)
.when()
- .post()
+ .post()
.then
- .statusCode(HttpStatus.SC_OK)
- .contentType(ContentType.JSON)
+ .statusCode(HttpStatus.SC_OK)
+ .contentType(ContentType.JSON)
.extract()
- .body()
- .asString()
+ .body()
+ .asString()
- response shouldBe (RESPONSE_OBJECT)
+ assertThatJson(response).isEqualTo(RESPONSE_OBJECT)
}
"RFC-8621 version, POST, with methods" should "return OK status, ResponseObject depend on method" in {
val response = RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
- .body(REQUEST_OBJECT_WITH_UNSUPPORTED_METHOD)
+ .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
+ .body(REQUEST_OBJECT_WITH_UNSUPPORTED_METHOD)
.when()
- .post()
+ .post()
.then
- .statusCode(HttpStatus.SC_OK)
- .contentType(ContentType.JSON)
+ .statusCode(HttpStatus.SC_OK)
+ .contentType(ContentType.JSON)
.extract()
- .body()
- .asString()
+ .body()
+ .asString()
- response shouldBe (RESPONSE_OBJECT_WITH_UNSUPPORTED_METHOD)
+ assertThatJson(response).isEqualTo(RESPONSE_OBJECT_WITH_UNSUPPORTED_METHOD)
}
"Draft version, GET" should "return 404 status" in {
RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_DRAFT_VERSION_HEADER)
+ .header(ACCEPT.toString, ACCEPT_DRAFT_VERSION_HEADER)
.when()
- .get
+ .get
.then
- .statusCode(HttpStatus.SC_NOT_FOUND)
+ .statusCode(HttpStatus.SC_NOT_FOUND)
}
"Draft version, POST, without body" should "return 400 status" in {
RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_DRAFT_VERSION_HEADER)
+ .header(ACCEPT.toString, ACCEPT_DRAFT_VERSION_HEADER)
.when()
- .post
+ .post
.then
- .statusCode(HttpStatus.SC_NOT_FOUND)
+ .statusCode(HttpStatus.SC_NOT_FOUND)
}
"RFC-8621 version, POST, with wrong requestObject body" should "return 400 status" in {
RestAssured
.`given`()
- .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
- .body(WRONG_OBJECT_REQUEST)
+ .header(ACCEPT.toString, ACCEPT_RFC8621_VERSION_HEADER)
+ .body(WRONG_OBJECT_REQUEST)
.when()
- .post
+ .post
.then
- .statusCode(HttpStatus.SC_BAD_REQUEST)
+ .statusCode(HttpStatus.SC_BAD_REQUEST)
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org