2021-11-01 19:07:27 -07:00
|
|
|
package org.bitcoindevkit
|
2021-10-17 14:27:10 -07:00
|
|
|
|
2021-11-08 17:41:06 -08:00
|
|
|
import org.junit.Assert.*
|
|
|
|
import org.junit.Test
|
2021-10-17 14:27:10 -07:00
|
|
|
import android.app.Application
|
|
|
|
import android.content.Context.MODE_PRIVATE
|
|
|
|
import androidx.test.core.app.ApplicationProvider
|
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
|
|
import org.junit.runner.RunWith
|
2021-11-08 17:41:06 -08:00
|
|
|
import org.slf4j.Logger
|
|
|
|
import org.slf4j.LoggerFactory
|
|
|
|
import java.io.File
|
2021-10-17 14:27:10 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Instrumented test, which will execute on an Android device.
|
|
|
|
*
|
|
|
|
* See [testing documentation](http://d.android.com/tools/testing).
|
|
|
|
*/
|
2021-11-06 05:26:56 +05:30
|
|
|
@RunWith(AndroidJUnit4::class)
|
2021-11-08 17:41:06 -08:00
|
|
|
class AndroidLibTest {
|
|
|
|
|
|
|
|
fun getTestDataDir(): String {
|
|
|
|
val context = ApplicationProvider.getApplicationContext<Application>()
|
|
|
|
return context.getDir("bdk-test", MODE_PRIVATE).toString()
|
|
|
|
}
|
|
|
|
|
|
|
|
fun cleanupTestDataDir(testDataDir: String) {
|
|
|
|
File(testDataDir).deleteRecursively()
|
|
|
|
}
|
|
|
|
|
|
|
|
val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java)
|
|
|
|
|
2022-02-27 22:40:42 -08:00
|
|
|
val descriptor =
|
2021-11-08 17:41:06 -08:00
|
|
|
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
|
|
|
|
|
2022-03-17 17:19:17 -04:00
|
|
|
val databaseConfig = DatabaseConfig.Memory
|
2022-02-27 22:40:42 -08:00
|
|
|
val blockchainConfig = BlockchainConfig.Electrum(
|
|
|
|
ElectrumConfig(
|
|
|
|
"ssl://electrum.blockstream.info:60002",
|
|
|
|
null,
|
|
|
|
5u,
|
|
|
|
null,
|
|
|
|
100u
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2021-11-08 17:41:06 -08:00
|
|
|
@Test
|
|
|
|
fun memoryWalletNewAddress() {
|
2022-03-28 17:17:27 -07:00
|
|
|
val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig, blockchainConfig)
|
2021-11-08 17:41:06 -08:00
|
|
|
val address = wallet.getNewAddress()
|
|
|
|
assertNotNull(address)
|
2022-03-28 17:17:27 -07:00
|
|
|
assertEquals("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address)
|
2021-11-08 17:41:06 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test(expected = BdkException.Descriptor::class)
|
|
|
|
fun invalidDescriptorExceptionIsThrown() {
|
2022-03-28 17:17:27 -07:00
|
|
|
Wallet("invalid-descriptor", null, Network.TESTNET, databaseConfig, blockchainConfig)
|
2021-11-08 17:41:06 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun sledWalletNewAddress() {
|
|
|
|
val testDataDir = getTestDataDir()
|
2022-02-27 22:40:42 -08:00
|
|
|
val databaseConfig = DatabaseConfig.Sled(SledDbConfiguration(testDataDir, "testdb"))
|
2022-03-28 17:17:27 -07:00
|
|
|
val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig, blockchainConfig)
|
2021-11-08 17:41:06 -08:00
|
|
|
val address = wallet.getNewAddress()
|
|
|
|
assertNotNull(address)
|
2022-03-28 17:17:27 -07:00
|
|
|
assertEquals("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address)
|
2021-11-08 17:41:06 -08:00
|
|
|
cleanupTestDataDir(testDataDir)
|
|
|
|
}
|
|
|
|
|
2022-03-11 23:35:49 -06:00
|
|
|
@Test
|
|
|
|
fun sqliteWalletSyncGetBalance() {
|
|
|
|
val testDataDir = getTestDataDir()+"/bdk-wallet.sqlite"
|
|
|
|
val databaseConfig = DatabaseConfig.Sqlite(SqliteDbConfiguration(testDataDir))
|
2022-03-28 17:17:27 -07:00
|
|
|
val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig, blockchainConfig)
|
2022-03-11 23:35:49 -06:00
|
|
|
wallet.sync(LogProgress(), null)
|
|
|
|
val balance = wallet.getBalance()
|
|
|
|
assertTrue(balance > 0u)
|
|
|
|
cleanupTestDataDir(testDataDir)
|
|
|
|
}
|
|
|
|
|
2021-11-08 17:41:06 -08:00
|
|
|
@Test
|
|
|
|
fun onlineWalletInMemory() {
|
2022-02-27 22:40:42 -08:00
|
|
|
val blockchain = BlockchainConfig.Electrum(
|
2021-11-08 17:41:06 -08:00
|
|
|
ElectrumConfig(
|
|
|
|
"ssl://electrum.blockstream.info:60002",
|
|
|
|
null,
|
|
|
|
5u,
|
|
|
|
null,
|
|
|
|
100u
|
|
|
|
)
|
|
|
|
)
|
2022-03-17 17:19:17 -04:00
|
|
|
val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig, blockchain)
|
2021-11-08 17:41:06 -08:00
|
|
|
assertNotNull(wallet)
|
|
|
|
val network = wallet.getNetwork()
|
|
|
|
assertEquals(network, Network.TESTNET)
|
|
|
|
}
|
|
|
|
|
|
|
|
class LogProgress : BdkProgress {
|
|
|
|
val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java)
|
|
|
|
|
|
|
|
override fun update(progress: Float, message: String?) {
|
|
|
|
log.debug("Syncing...")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun onlineWalletSyncGetBalance() {
|
2022-03-28 17:17:27 -07:00
|
|
|
val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig, blockchainConfig)
|
2021-11-08 17:41:06 -08:00
|
|
|
wallet.sync(LogProgress(), null)
|
|
|
|
val balance = wallet.getBalance()
|
|
|
|
assertTrue(balance > 0u)
|
|
|
|
}
|
2021-11-06 05:26:56 +05:30
|
|
|
|
2022-02-27 22:40:42 -08:00
|
|
|
@Test
|
|
|
|
fun validPsbtSerde() {
|
|
|
|
val validSerializedPsbt = "cHNidP8BAHUCAAAAASaBcTce3/KF6Tet7qSze3gADAVmy7OtZGQXE8pCFxv2AAAAAAD+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQD9pQEBAAAAAAECiaPHHqtNIOA3G7ukzGmPopXJRjr6Ljl/hTPMti+VZ+UBAAAAFxYAFL4Y0VKpsBIDna89p95PUzSe7LmF/////4b4qkOnHf8USIk6UwpyN+9rRgi7st0tAXHmOuxqSJC0AQAAABcWABT+Pp7xp0XpdNkCxDVZQ6vLNL1TU/////8CAMLrCwAAAAAZdqkUhc/xCX/Z4Ai7NK9wnGIZeziXikiIrHL++E4sAAAAF6kUM5cluiHv1irHU6m80GfWx6ajnQWHAkcwRAIgJxK+IuAnDzlPVoMR3HyppolwuAJf3TskAinwf4pfOiQCIAGLONfc0xTnNMkna9b7QPZzMlvEuqFEyADS8vAtsnZcASED0uFWdJQbrUqZY3LLh+GFbTZSYG2YVi/jnF6efkE/IQUCSDBFAiEA0SuFLYXc2WHS9fSrZgZU327tzHlMDDPOXMMJ/7X85Y0CIGczio4OFyXBl/saiK9Z9R5E5CVbIBZ8hoQDHAXR8lkqASECI7cr7vCWXRC+B3jv7NYfysb3mk6haTkzgHNEZPhPKrMAAAAAAAAA"
|
2022-03-28 17:20:30 -07:00
|
|
|
val psbt = PartiallySignedBitcoinTransaction(validSerializedPsbt)
|
2022-02-27 22:40:42 -08:00
|
|
|
val psbtSerialized = psbt.serialize()
|
|
|
|
assertEquals(psbtSerialized, validSerializedPsbt)
|
|
|
|
}
|
|
|
|
|
2021-11-06 05:26:56 +05:30
|
|
|
}
|