diff options
Diffstat (limited to 'wallet/src/commonTest')
6 files changed, 19 insertions, 15 deletions
diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/TestUtils.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/TestUtils.kt index 14c3076..2b306d8 100644 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/TestUtils.kt +++ b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/TestUtils.kt @@ -18,7 +18,7 @@ package net.taler.lib.wallet 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.MockRequestHandler import io.ktor.client.engine.mock.respond import io.ktor.client.features.json.JsonFeature import io.ktor.client.features.json.serializer.KotlinxSerializer @@ -28,7 +28,7 @@ import io.ktor.http.fullPath import io.ktor.http.headersOf import io.ktor.http.hostWithPort import kotlinx.coroutines.CoroutineScope -import kotlinx.serialization.json.Json +import kotlin.native.concurrent.ThreadLocal enum class PlatformTarget { ANDROID, @@ -43,19 +43,24 @@ expect fun runCoroutine(block: suspend (scope: CoroutineScope) -> Unit) expect fun getPlatformTarget(): PlatformTarget +@ThreadLocal +object ChangeableRequestHandler { + var myHandler: MockRequestHandler = { _ -> + error("No HttpClient request handler added. Use e.g. giveJsonResponse()") + } +} + fun getMockHttpClient(): HttpClient = HttpClient(MockEngine) { install(JsonFeature) { - serializer = KotlinxSerializer(Json(getJsonConfiguration())) + serializer = KotlinxSerializer(getJson()) } engine { - addHandler { error("No test handler added") } + addHandler { ChangeableRequestHandler.myHandler(this, it) } } } -fun HttpClient.giveJsonResponse(url: String, jsonProducer: () -> String) { - val httpConfig = engineConfig as MockEngineConfig - httpConfig.requestHandlers.removeAt(0) - httpConfig.requestHandlers.add { request -> +fun giveJsonResponse(url: String, jsonProducer: () -> String) { + ChangeableRequestHandler.myHandler = { request -> if (request.url.fullUrl == url) { val headers = headersOf("Content-Type" to listOf(Application.Json.toString())) respond(jsonProducer(), headers = headers) diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/DenominationTest.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/DenominationTest.kt index c52638b..c9e4b22 100644 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/DenominationTest.kt +++ b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/DenominationTest.kt @@ -18,7 +18,6 @@ package net.taler.lib.wallet.exchange import net.taler.lib.common.Amount import net.taler.lib.common.Timestamp -import net.taler.lib.common.Timestamp.Companion.NEVER import net.taler.lib.wallet.exchange.DenominationStatus.VerifiedBad import net.taler.lib.wallet.exchange.DenominationStatus.VerifiedGood import net.taler.lib.wallet.exchange.Denominations.denomination1 @@ -40,7 +39,7 @@ class DenominationTest { totalWithdrawCost = Amount.zero("TESTKUDOS"), selectedDenominations = emptyList() ) - assertEquals(Timestamp(NEVER), infoEmpty.getEarliestDepositExpiry()) + assertEquals(Timestamp.never(), infoEmpty.getEarliestDepositExpiry()) // earliest expiry of single denomination is that of the denomination val info1 = infoEmpty.copy( @@ -61,7 +60,7 @@ class DenominationTest { // denomination that expires at all is earlier than the one that never expires val info3 = infoEmpty.copy( selectedDenominations = listOf( - SelectedDenomination(2, denomination2.copy(stampExpireDeposit = Timestamp(NEVER))), + SelectedDenomination(2, denomination2.copy(stampExpireDeposit = Timestamp.never())), SelectedDenomination(1, denomination1.copy(stampExpireDeposit = Timestamp(1))) ) ) diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/Denominations.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/Denominations.kt index 10a2772..90b9f6a 100644 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/Denominations.kt +++ b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/Denominations.kt @@ -21,7 +21,7 @@ import net.taler.lib.common.Timestamp import net.taler.lib.wallet.exchange.DenominationStatus.Unverified import net.taler.lib.wallet.exchange.DenominationStatus.VerifiedGood -object Denominations { +internal object Denominations { private val validStart = Timestamp.now() private val validExpireWithdraw = diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/KeysTest.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/KeysTest.kt index a40c7cd..a0657b4 100644 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/KeysTest.kt +++ b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/KeysTest.kt @@ -134,7 +134,7 @@ class KeysTest { version = "7:0:0" ) - httpClient.giveJsonResponse("https://exchange.test.taler.net/keys") { + giveJsonResponse("https://exchange.test.taler.net/keys") { """{ "version": "7:0:0", "master_public_key": "DY95EXAHQ2BKM2WK9YHZHYG1R7PPMMJPY14FNGP662DAKE35AKQG", diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/WireTest.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/WireTest.kt index 16671a9..aa9e906 100644 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/WireTest.kt +++ b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/exchange/WireTest.kt @@ -84,7 +84,7 @@ class WireTest { ) ) ) - httpClient.giveJsonResponse("https://exchange.test.taler.net/wire") { + giveJsonResponse("https://exchange.test.taler.net/wire") { """{ "accounts": [ { diff --git a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/operations/WithdrawTest.kt b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/operations/WithdrawTest.kt index 634a9dd..e03681e 100644 --- a/wallet/src/commonTest/kotlin/net/taler/lib/wallet/operations/WithdrawTest.kt +++ b/wallet/src/commonTest/kotlin/net/taler/lib/wallet/operations/WithdrawTest.kt @@ -64,7 +64,7 @@ internal class WithdrawTest { transferDone = false, wireTypes = listOf("x-taler-bank") ) - httpClient.giveJsonResponse(bankDetails.extractedStatusUrl) { + giveJsonResponse(bankDetails.extractedStatusUrl) { """{ "selection_done": ${bankDetails.selectionDone}, "transfer_done": ${bankDetails.transferDone}, |