From a9224b063df7cddb1826879963cafc2f129f37af Mon Sep 17 00:00:00 2001 From: Diane Huxley Date: Wed, 21 Feb 2024 10:36:48 -0800 Subject: [PATCH] Fix and test that rfq is wrapped in object in CreateExchange endpoint (#177) * Fix and test that rfq is wrapped in object in CreateExchange endpoint * Compare parsed JSON --- .../tbdex/sdk/httpclient/TbdexHttpClient.kt | 13 +++++++----- .../sdk/httpclient/TbdexHttpClientTest.kt | 21 ++++++++++++++++++- tbdex | 2 +- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/httpclient/src/main/kotlin/tbdex/sdk/httpclient/TbdexHttpClient.kt b/httpclient/src/main/kotlin/tbdex/sdk/httpclient/TbdexHttpClient.kt index d9e9c011..3ad0e92b 100644 --- a/httpclient/src/main/kotlin/tbdex/sdk/httpclient/TbdexHttpClient.kt +++ b/httpclient/src/main/kotlin/tbdex/sdk/httpclient/TbdexHttpClient.kt @@ -87,14 +87,17 @@ object TbdexHttpClient { val kind = message.metadata.kind val pfiServiceEndpoint = getPfiServiceEndpoint(pfiDid) - val url: String = if (kind == MessageKind.rfq) { - "$pfiServiceEndpoint/exchanges/$exchangeId" + + val body: RequestBody + val url: String + if (kind == MessageKind.rfq) { + body = Json.stringify(CreateExchangeRequest(message as Rfq)).toRequestBody(jsonMediaType) + url = "$pfiServiceEndpoint/exchanges/$exchangeId" } else { - "$pfiServiceEndpoint/exchanges/$exchangeId/$kind" + body = Json.stringify(message).toRequestBody(jsonMediaType) + url = "$pfiServiceEndpoint/exchanges/$exchangeId/$kind" } - val body: RequestBody = Json.stringify(message).toRequestBody(jsonMediaType) - val request = buildRequest(url, body) println("Attempting to send $kind message to: ${request.url}") diff --git a/httpclient/src/test/kotlin/tbdex/sdk/httpclient/TbdexHttpClientTest.kt b/httpclient/src/test/kotlin/tbdex/sdk/httpclient/TbdexHttpClientTest.kt index c2081007..b08350a2 100644 --- a/httpclient/src/test/kotlin/tbdex/sdk/httpclient/TbdexHttpClientTest.kt +++ b/httpclient/src/test/kotlin/tbdex/sdk/httpclient/TbdexHttpClientTest.kt @@ -2,12 +2,15 @@ package tbdex.sdk.httpclient import de.fxlae.typeid.TypeId import junit.framework.TestCase.assertEquals +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockWebServer import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.assertDoesNotThrow import org.junit.jupiter.api.assertThrows +import tbdex.sdk.httpclient.models.CreateExchangeRequest import tbdex.sdk.httpclient.models.ErrorDetail import tbdex.sdk.httpclient.models.TbdexResponseException import tbdex.sdk.protocol.models.Quote @@ -84,7 +87,23 @@ class TbdexHttpClientTest { } @Test - fun `send RFQ success via mockwebserver`() { + fun `send RFQ without replyTo success via mockwebserver`() { + + server.enqueue(MockResponse().setResponseCode(HttpURLConnection.HTTP_ACCEPTED)) + + val rfq = TestData.getRfq(pfiDid.uri, TypeId.generate("offering")) + assertDoesNotThrow { TbdexHttpClient.sendMessage(rfq) } + + val request1 = server.takeRequest() + assertEquals(request1.path, "/exchanges/${rfq.metadata.exchangeId}") + assertEquals( + Json.jsonMapper.readTree(request1.body.readUtf8()), + Json.jsonMapper.readTree(Json.stringify(mapOf("rfq" to rfq))) + ) + } + + @Test + fun `send RFQ with replyTo success via mockwebserver`() { server.enqueue(MockResponse().setResponseCode(HttpURLConnection.HTTP_ACCEPTED)) diff --git a/tbdex b/tbdex index 3b9e7575..e3e304cc 160000 --- a/tbdex +++ b/tbdex @@ -1 +1 @@ -Subproject commit 3b9e75751ddc3c9431e418d1a8f9bdcf448fa0cd +Subproject commit e3e304ccf62e26d01e85fdbcd72200cde3b94cff