diff options
Diffstat (limited to 'src/commonTest/kotlin/net')
-rw-r--r-- | src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt | 59 |
1 files changed, 53 insertions, 6 deletions
diff --git a/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt b/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt index 9498792..7971be5 100644 --- a/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt +++ b/src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt @@ -19,12 +19,19 @@ package net.taler.wallet.kotlin import kotlin.test.Ignore import kotlin.test.Test import kotlin.test.assertEquals +import kotlin.test.assertTrue -@Ignore // Live-Test +@Ignore // Live-Test which fails when test environment changes or is not available class WalletApiTest { private val api = WalletApi() + private val exchangeBaseUrl = "https://exchange.test.taler.net/" + private val withdrawUri = + "taler://withdraw/bank.test.taler.net/8adabbf8-fe61-4d31-a2d1-89350b5be8fa" + private val paytoUris = listOf("payto://x-taler-bank/bank.test.taler.net/Exchange") + private val tosEtag = "0" + @Test fun testGetVersions() { api.getVersions() @@ -32,15 +39,55 @@ class WalletApiTest { @Test fun testGetWithdrawalDetails() = runCoroutine { - val detailsForUri = - api.getWithdrawalDetailsForUri("taler://withdraw/bank.test.taler.net/8adabbf8-fe61-4d31-a2d1-89350b5be8fa") + val detailsForUri = api.getWithdrawalDetailsForUri(withdrawUri) assertEquals(Amount("TESTKUDOS", 5, 0), detailsForUri.amount) - assertEquals("https://exchange.test.taler.net/", detailsForUri.defaultExchangeBaseUrl) + assertEquals(exchangeBaseUrl, detailsForUri.defaultExchangeBaseUrl) - val detailsForAmount = - api.getWithdrawalDetailsForAmount(detailsForUri.defaultExchangeBaseUrl!!, detailsForUri.amount) + val detailsForAmount = api.getWithdrawalDetailsForAmount( + detailsForUri.defaultExchangeBaseUrl!!, + detailsForUri.amount + ) assertEquals(Amount("TESTKUDOS", 5, 0), detailsForAmount.amountRaw) assertEquals(Amount("TESTKUDOS", 4, 80000000), detailsForAmount.amountEffective) + assertEquals(false, detailsForAmount.tosAccepted) + } + + @Test + fun testExchangeManagement() = runCoroutine { + // initially we have no exchanges + assertTrue(api.listExchanges().isEmpty()) + + // test exchange gets added correctly + val exchange = api.addExchange(exchangeBaseUrl) + assertEquals(exchangeBaseUrl, exchange.exchangeBaseUrl) + assertEquals("TESTKUDOS", exchange.currency) + assertEquals(paytoUris, exchange.paytoUris) + + // added exchange got added to list + val exchanges = api.listExchanges() + assertEquals(1, exchanges.size) + assertEquals(exchange, exchanges[0]) + + // ToS are not accepted + val tosResult = api.getExchangeTos(exchangeBaseUrl) + assertEquals(null, tosResult.acceptedEtag) + assertEquals(tosEtag, tosResult.currentEtag) + assertTrue(tosResult.tos.length > 100) + + // withdrawal details also show ToS as not accepted + val withdrawalDetails = + api.getWithdrawalDetailsForAmount(exchangeBaseUrl, Amount.zero("TESTKUDOS")) + assertEquals(false, withdrawalDetails.tosAccepted) + + // accept ToS + api.setExchangeTosAccepted(exchangeBaseUrl, tosResult.currentEtag) + val newTosResult = api.getExchangeTos(exchangeBaseUrl) + assertEquals(newTosResult.currentEtag, newTosResult.acceptedEtag) + + // withdrawal details now show ToS as accepted as well + val newWithdrawalDetails = + api.getWithdrawalDetailsForAmount(exchangeBaseUrl, Amount.zero("TESTKUDOS")) + assertEquals(true, newWithdrawalDetails.tosAccepted) } } |