Skip to content

Commit

Permalink
fixup! ISSUE-1042 Implement PublicAsset/get method
Browse files Browse the repository at this point in the history
  • Loading branch information
hung phan committed May 23, 2024
1 parent 0808097 commit a60390c
Showing 1 changed file with 30 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.linagora.tmail.james.common

import java.net.URI

import com.linagora.tmail.james.common.PublicAssetGetMethodContract.{CREATION_REQUEST, IDENTITY_ID}
import com.linagora.tmail.james.common.PublicAssetGetMethodContract.{CREATION_REQUEST, CREATION_REQUEST_2, IDENTITY_ID, PUBLIC_ASSET_ID, PUBLIC_ASSET_ID_2}
import com.linagora.tmail.james.common.probe.PublicAssetProbe
import com.linagora.tmail.james.jmap.publicAsset.ImageContentType.ImageContentType
import com.linagora.tmail.james.jmap.publicAsset.{ImageContentType, PublicAsset, PublicAssetId, PublicAssetIdFactory, PublicURI}
Expand All @@ -14,8 +14,8 @@ import io.restassured.http.ContentType.JSON
import net.javacrumbs.jsonunit.JsonMatchers.jsonEquals
import org.apache.http.HttpStatus.SC_OK
import org.apache.james.GuiceJamesServer
import org.apache.james.jmap.api.model.{IdentityId, Size}
import org.apache.james.jmap.api.model.Size.Size
import org.apache.james.jmap.api.model.{IdentityId, Size}
import org.apache.james.jmap.core.AccountId
import org.apache.james.jmap.core.ResponseObject.SESSION_STATE
import org.apache.james.jmap.http.UserCredential
Expand All @@ -28,6 +28,7 @@ import org.junit.jupiter.api.{BeforeEach, Test}

object PublicAssetGetMethodContract {
val PUBLIC_ASSET_ID: PublicAssetId = PublicAssetIdFactory.generate()
val PUBLIC_ASSET_ID_2: PublicAssetId = PublicAssetIdFactory.generate()
val CONTENT_TYPE: ContentType = ContentType.of("image/png")
val IMAGE_CONTENT_TYPE: ImageContentType = ImageContentType.from(CONTENT_TYPE).toOption.get
val ASSET_CONTENT: Array[Byte] = Array[Byte](1, 2, 3)
Expand All @@ -40,6 +41,12 @@ object PublicAssetGetMethodContract {
contentType = IMAGE_CONTENT_TYPE,
blobId = BlobId("blob1"),
identityIds = IDENTITY_IDS)
val CREATION_REQUEST_2: PublicAsset = PublicAsset(id = PUBLIC_ASSET_ID_2,
publicURI = PublicURI.from(PUBLIC_ASSET_ID_2, AccountId.from(BOB).toOption.get, new URI("http://localhost:8080/")),
size = SIZE,
contentType = IMAGE_CONTENT_TYPE,
blobId = BlobId("blob2"),
identityIds = IDENTITY_IDS)
}

trait PublicAssetGetMethodContract {
Expand All @@ -66,6 +73,7 @@ trait PublicAssetGetMethodContract {
.statusCode(SC_OK)
.contentType(JSON)
.body("capabilities", hasKey("com:linagora:params:jmap:public:assets"))
.body("capabilities.'com:linagora:params:jmap:public:assets'", hasKey("publicAssetTotalSize"))

@Test
def missingPublicAssetCapabilityShouldFail(): Unit =
Expand Down Expand Up @@ -141,7 +149,8 @@ trait PublicAssetGetMethodContract {

@Test
def fetchNullIdsShouldReturnAllAssets(server: GuiceJamesServer): Unit = {
val publicAsset = server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST)
server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST)
server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST_2)

`given`
.body(
Expand Down Expand Up @@ -171,12 +180,20 @@ trait PublicAssetGetMethodContract {
| "state": "${JmapSettingsStateFactory.INITIAL.serialize}",
| "list": [
| {
| "id": "${publicAsset.id.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${publicAsset.id.value}",
| "id": "${PUBLIC_ASSET_ID.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${PUBLIC_ASSET_ID.value}",
| "size": 3,
| "contentType": "image/png",
| "blobId": "blob1",
| "identityIds": [ "${IDENTITY_ID.id}" ]
| },
| {
| "id": "${PUBLIC_ASSET_ID_2.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${PUBLIC_ASSET_ID_2.value}",
| "size": 3,
| "contentType": "image/png",
| "blobId": "blob2",
| "identityIds": [ "${IDENTITY_ID.id}" ]
| }
| ],
| "notFound": []
Expand All @@ -187,7 +204,7 @@ trait PublicAssetGetMethodContract {

@Test
def fetchIdsShouldReturnSpecificAssets(server: GuiceJamesServer): Unit = {
val publicAsset = server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST)
server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST)

`given`
.body(
Expand All @@ -199,7 +216,7 @@ trait PublicAssetGetMethodContract {
| {
| "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
| "ids": [
| "${publicAsset.id.value}"
| "${PUBLIC_ASSET_ID.value}"
| ]
| },
| "c1"
Expand All @@ -219,8 +236,8 @@ trait PublicAssetGetMethodContract {
| "state": "${JmapSettingsStateFactory.INITIAL.serialize}",
| "list": [
| {
| "id": "${publicAsset.id.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${publicAsset.id.value}",
| "id": "${PUBLIC_ASSET_ID.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${PUBLIC_ASSET_ID.value}",
| "size": 3,
| "contentType": "image/png",
| "blobId": "blob1",
Expand All @@ -235,7 +252,7 @@ trait PublicAssetGetMethodContract {

@Test
def mixedFoundAndNotFoundCase(server: GuiceJamesServer): Unit = {
val publicAsset = server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST)
server.getProbe(classOf[PublicAssetProbe]).create(BOB, CREATION_REQUEST)
val nonExistedAssetId = PublicAssetIdFactory.generate()

`given`
Expand All @@ -248,7 +265,7 @@ trait PublicAssetGetMethodContract {
| {
| "accountId": "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
| "ids": [
| "${publicAsset.id.value}",
| "${PUBLIC_ASSET_ID.value}",
| "${nonExistedAssetId.value}",
| "notFound"
| ]
Expand All @@ -270,8 +287,8 @@ trait PublicAssetGetMethodContract {
| "state": "${JmapSettingsStateFactory.INITIAL.serialize}",
| "list": [
| {
| "id": "${publicAsset.id.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${publicAsset.id.value}",
| "id": "${PUBLIC_ASSET_ID.value}",
| "publicURI": "http://localhost:8080/publicAsset/29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6/${PUBLIC_ASSET_ID.value}",
| "size": 3,
| "contentType": "image/png",
| "blobId": "blob1",
Expand Down

0 comments on commit a60390c

Please sign in to comment.