diff options
Diffstat (limited to 'merchant-lib/src/test/java/net/taler')
-rw-r--r-- | merchant-lib/src/test/java/net/taler/merchantlib/MerchantApiTest.kt | 32 | ||||
-rw-r--r-- | merchant-lib/src/test/java/net/taler/merchantlib/MockHttpClient.kt | 24 |
2 files changed, 27 insertions, 29 deletions
diff --git a/merchant-lib/src/test/java/net/taler/merchantlib/MerchantApiTest.kt b/merchant-lib/src/test/java/net/taler/merchantlib/MerchantApiTest.kt index 63188f9..cf627c6 100644 --- a/merchant-lib/src/test/java/net/taler/merchantlib/MerchantApiTest.kt +++ b/merchant-lib/src/test/java/net/taler/merchantlib/MerchantApiTest.kt @@ -18,12 +18,12 @@ package net.taler.merchantlib import io.ktor.http.HttpStatusCode.Companion.NotFound import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestCoroutineDispatcher -import kotlinx.coroutines.test.runBlockingTest +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import net.taler.common.Amount import net.taler.common.ContractProduct import net.taler.common.ContractTerms -import net.taler.lib.common.Amount -import net.taler.lib.common.Timestamp +import net.taler.common.Timestamp import net.taler.merchantlib.MockHttpClient.giveJsonResponse import net.taler.merchantlib.MockHttpClient.httpClient import org.junit.Assert.assertEquals @@ -33,7 +33,7 @@ import org.junit.Test @ExperimentalCoroutinesApi class MerchantApiTest { - private val api = MerchantApi(httpClient, TestCoroutineDispatcher()) + private val api = MerchantApi(httpClient, UnconfinedTestDispatcher()) private val merchantConfig = MerchantConfig( baseUrl = "http://example.net/instances/testInstance", apiKey = "apiKeyFooBar" @@ -41,7 +41,7 @@ class MerchantApiTest { private val orderId = "orderIdFoo" @Test - fun testGetConfig() = runBlockingTest { + fun testGetConfig() = runBlocking { httpClient.giveJsonResponse("https://backend.int.taler.net/config") { """ { @@ -56,7 +56,7 @@ class MerchantApiTest { } @Test - fun testPostOrder() = runBlockingTest { + fun testPostOrder() = runBlocking { val product = ContractProduct( productId = "foo", description = "bar", @@ -80,7 +80,7 @@ class MerchantApiTest { { "product_id": "${product.productId}", "description": "${product.description}", - "price": "${product.price.toJSONString()}", + "price": "${product.price!!.toJSONString()}", "quantity": ${product.quantity} } ] @@ -113,7 +113,7 @@ class MerchantApiTest { } @Test - fun testCheckOrder() = runBlockingTest { + fun testCheckOrder() = runBlocking { val unpaidResponse = CheckPaymentResponse.Unpaid(false, "http://taler.net/foo") httpClient.giveJsonResponse("http://example.net/instances/testInstance/private/orders/$orderId") { """{ @@ -142,7 +142,7 @@ class MerchantApiTest { } @Test - fun testDeleteOrder() = runBlockingTest { + fun testDeleteOrder() = runBlocking { httpClient.giveJsonResponse("http://example.net/instances/testInstance/private/orders/$orderId") { "{}" } @@ -165,14 +165,14 @@ class MerchantApiTest { } @Test - fun testGetOrderHistory() = runBlockingTest { + fun testGetOrderHistory() = runBlocking { httpClient.giveJsonResponse("http://example.net/instances/testInstance/private/orders") { """{ "orders": [ { "order_id": "2020.217-0281FGXCS25P2", "row_id": 183, "timestamp": { - "t_ms": 1596542338000 + "t_s": 1596542338 }, "amount": "TESTKUDOS:1", "summary": "Chips", @@ -183,7 +183,7 @@ class MerchantApiTest { "order_id": "2020.216-01G2ZPXSP6BYT", "row_id": 154, "timestamp": { - "t_ms": 1596468174000 + "t_s": 1596468174 }, "amount": "TESTKUDOS:0.8", "summary": "Peanuts", @@ -202,7 +202,7 @@ class MerchantApiTest { assertEquals(true, order1.paid) assertEquals(true, order1.refundable) assertEquals("Chips", order1.summary) - assertEquals(Timestamp(1596542338000), order1.timestamp) + assertEquals(Timestamp.fromMillis(1596542338000), order1.timestamp) val order2 = it.orders[1] assertEquals(Amount("TESTKUDOS", 0, 80000000), order2.amount) @@ -210,12 +210,12 @@ class MerchantApiTest { assertEquals(false, order2.paid) assertEquals(false, order2.refundable) assertEquals("Peanuts", order2.summary) - assertEquals(Timestamp(1596468174000), order2.timestamp) + assertEquals(Timestamp.fromMillis(1596468174000), order2.timestamp) } } @Test - fun testGiveRefund() = runBlockingTest { + fun testGiveRefund() = runBlocking { httpClient.giveJsonResponse("http://example.net/instances/testInstance/private/orders/$orderId/refund") { """{ "taler_refund_uri": "taler://refund/foo/bar" diff --git a/merchant-lib/src/test/java/net/taler/merchantlib/MockHttpClient.kt b/merchant-lib/src/test/java/net/taler/merchantlib/MockHttpClient.kt index c8e6f22..32c7ee1 100644 --- a/merchant-lib/src/test/java/net/taler/merchantlib/MockHttpClient.kt +++ b/merchant-lib/src/test/java/net/taler/merchantlib/MockHttpClient.kt @@ -20,11 +20,7 @@ import io.ktor.client.HttpClient import io.ktor.client.engine.mock.MockEngine import io.ktor.client.engine.mock.MockEngineConfig import io.ktor.client.engine.mock.respond -import io.ktor.client.features.json.JsonFeature -import io.ktor.client.features.logging.LogLevel -import io.ktor.client.features.logging.Logger -import io.ktor.client.features.logging.Logging -import io.ktor.client.features.logging.SIMPLE +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.http.ContentType.Application.Json import io.ktor.http.HttpStatusCode import io.ktor.http.Url @@ -32,29 +28,31 @@ import io.ktor.http.content.TextContent import io.ktor.http.fullPath import io.ktor.http.headersOf import io.ktor.http.hostWithPort +import io.ktor.serialization.kotlinx.json.json +import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json.Default.parseToJsonElement import org.junit.Assert.assertEquals object MockHttpClient { val httpClient = HttpClient(MockEngine) { - install(JsonFeature) { - serializer = getSerializer() - } - install(Logging) { - logger = Logger.SIMPLE - level = LogLevel.ALL - } engine { addHandler { error("No response handler set") } } + expectSuccess = true + install(ContentNegotiation) { + json(Json { + encodeDefaults = false + ignoreUnknownKeys = true + }) + } } fun HttpClient.giveJsonResponse( url: String, expectedBody: String? = null, statusCode: HttpStatusCode = HttpStatusCode.OK, - jsonProducer: () -> String + jsonProducer: () -> String, ) { val httpConfig = engineConfig as MockEngineConfig httpConfig.requestHandlers.removeAt(0) |