summaryrefslogtreecommitdiff
path: root/src/commonTest/kotlin/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/commonTest/kotlin/net')
-rw-r--r--src/commonTest/kotlin/net/taler/wallet/kotlin/WalletApiTest.kt59
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)
}
}