From b8f9d199a82fd43cb3406dba56d2ce4f3ed9bcbc Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 8 Sep 2022 18:21:04 -0400 Subject: [PATCH] Simplify tests --- .../org/bitcoindevkit/AndroidLibTest.kt | 86 +++------- .../kotlin/org/bitcoindevkit/JvmLibTest.kt | 149 +++--------------- 2 files changed, 42 insertions(+), 193 deletions(-) diff --git a/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt b/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt index ced2f5e..1fb2132 100644 --- a/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt +++ b/android/src/androidTest/kotlin/org/bitcoindevkit/AndroidLibTest.kt @@ -19,22 +19,29 @@ import java.io.File @RunWith(AndroidJUnit4::class) class AndroidLibTest { - fun getTestDataDir(): String { + private fun getTestDataDir(): String { val context = ApplicationProvider.getApplicationContext() return context.getDir("bdk-test", MODE_PRIVATE).toString() } - fun cleanupTestDataDir(testDataDir: String) { + private fun cleanupTestDataDir(testDataDir: String) { File(testDataDir).deleteRecursively() } - val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java) + class LogProgress : Progress { + private val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java) - val descriptor = + override fun update(progress: Float, message: String?) { + log.debug("Syncing...") + } + } + + private val descriptor = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)" - val databaseConfig = DatabaseConfig.Memory - val blockchainConfig = BlockchainConfig.Electrum( + private val databaseConfig = DatabaseConfig.Memory + + private val blockchainConfig = BlockchainConfig.Electrum( ElectrumConfig( "ssl://electrum.blockstream.info:60002", null, @@ -48,78 +55,27 @@ class AndroidLibTest { fun memoryWalletNewAddress() { val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) val address = wallet.getAddress(AddressIndex.NEW).address - assertNotNull(address) assertEquals("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address) } - @Test(expected = BdkException.Descriptor::class) - fun invalidDescriptorExceptionIsThrown() { - Wallet("invalid-descriptor", null, Network.TESTNET, databaseConfig) - } - @Test - fun sledWalletNewAddress() { - val testDataDir = getTestDataDir() - val databaseConfig = DatabaseConfig.Sled(SledDbConfiguration(testDataDir, "testdb")) + fun memoryWalletSyncGetBalance() { val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - val address = wallet.getAddress(AddressIndex.NEW).address - assertNotNull(address) - assertEquals("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address) - cleanupTestDataDir(testDataDir) + val blockchain = Blockchain(blockchainConfig) + wallet.sync(blockchain, LogProgress()) + val balance: Balance = wallet.getBalance() + assertTrue(balance.total > 0u) } @Test fun sqliteWalletSyncGetBalance() { - val testDataDir = getTestDataDir()+"/bdk-wallet.sqlite" + val testDataDir = getTestDataDir() + "/bdk-wallet.sqlite" val databaseConfig = DatabaseConfig.Sqlite(SqliteDbConfiguration(testDataDir)) val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) val blockchain = Blockchain(blockchainConfig) wallet.sync(blockchain, LogProgress()) - val balance = wallet.getBalance() - assertTrue(balance > 0u) + val balance: Balance = wallet.getBalance() + assertTrue(balance.total > 0u) cleanupTestDataDir(testDataDir) } - - @Test - fun onlineWalletInMemory() { - val blockchain = BlockchainConfig.Electrum( - ElectrumConfig( - "ssl://electrum.blockstream.info:60002", - null, - 5u, - null, - 100u - ) - ) - val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - assertNotNull(wallet) - val network = wallet.getNetwork() - assertEquals(network, Network.TESTNET) - } - - class LogProgress : Progress { - val log: Logger = LoggerFactory.getLogger(AndroidLibTest::class.java) - - override fun update(progress: Float, message: String?) { - log.debug("Syncing...") - } - } - - @Test - fun onlineWalletSyncGetBalance() { - val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - val blockchain = Blockchain(blockchainConfig) - wallet.sync(blockchain, LogProgress()) - val balance = wallet.getBalance() - assertTrue(balance > 0u) - } - - @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" - val psbt = PartiallySignedBitcoinTransaction(validSerializedPsbt) - val psbtSerialized = psbt.serialize() - assertEquals(psbtSerialized, validSerializedPsbt) - } - } diff --git a/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt b/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt index 6a02dec..a66f8cd 100644 --- a/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt +++ b/jvm/src/test/kotlin/org/bitcoindevkit/JvmLibTest.kt @@ -9,26 +9,31 @@ import java.nio.file.Files /** * Library test, which will execute on linux host. - * */ class JvmLibTest { - fun getTestDataDir(): String { + private fun getTestDataDir(): String { return Files.createTempDirectory("bdk-test").toString() - //return Paths.get(System.getProperty("java.io.tmpdir"), "bdk-test").toString() } - fun cleanupTestDataDir(testDataDir: String) { + private fun cleanupTestDataDir(testDataDir: String) { File(testDataDir).deleteRecursively() } - val log: Logger = LoggerFactory.getLogger(JvmLibTest::class.java) + class LogProgress : Progress { + private val log: Logger = LoggerFactory.getLogger(JvmLibTest::class.java) - val descriptor = + override fun update(progress: Float, message: String?) { + log.debug("Syncing...") + } + } + + private val descriptor = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)" - val databaseConfig = DatabaseConfig.Memory - val blockchainConfig = BlockchainConfig.Electrum( + private val databaseConfig = DatabaseConfig.Memory + + private val blockchainConfig = BlockchainConfig.Electrum( ElectrumConfig( "ssl://electrum.blockstream.info:60002", null, @@ -42,139 +47,27 @@ class JvmLibTest { fun memoryWalletNewAddress() { val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) val address = wallet.getAddress(AddressIndex.NEW).address - assertNotNull(address) assertEquals("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address) } - @Test(expected = BdkException.Descriptor::class) - fun invalidDescriptorExceptionIsThrown() { - Wallet("invalid-descriptor", null, Network.TESTNET, databaseConfig) - } - @Test - fun sledWalletNewAddress() { - val testDataDir = getTestDataDir() - val databaseConfig = DatabaseConfig.Sled(SledDbConfiguration(testDataDir, "testdb")) + fun memoryWalletSyncGetBalance() { val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - val address = wallet.getAddress(AddressIndex.NEW).address - assertNotNull(address) - assertEquals("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address) - cleanupTestDataDir(testDataDir) + val blockchain = Blockchain(blockchainConfig) + wallet.sync(blockchain, LogProgress()) + val balance: Balance = wallet.getBalance() + assertTrue(balance.total > 0u) } @Test fun sqliteWalletSyncGetBalance() { val testDataDir = getTestDataDir() + "/bdk-wallet.sqlite" val databaseConfig = DatabaseConfig.Sqlite(SqliteDbConfiguration(testDataDir)) - val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - val blockchain = Blockchain(blockchainConfig); - wallet.sync(blockchain, LogProgress()) - val balance = wallet.getBalance() - assertTrue(balance > 0u) - cleanupTestDataDir(testDataDir) - } - - @Test - fun onlineWalletInMemory() { - val database = DatabaseConfig.Memory - val blockchain = BlockchainConfig.Electrum( - ElectrumConfig( - "ssl://electrum.blockstream.info:60002", - null, - 5u, - null, - 100u - ) - ) - val wallet = Wallet(descriptor, null, Network.TESTNET, database) - assertNotNull(wallet) - val network = wallet.getNetwork() - assertEquals(network, Network.TESTNET) - } - - class LogProgress : Progress { - val log: Logger = LoggerFactory.getLogger(JvmLibTest::class.java) - - override fun update(progress: Float, message: String?) { - log.debug("Syncing...") - } - } - - @Test - fun onlineWalletSyncGetBalance() { val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) val blockchain = Blockchain(blockchainConfig) wallet.sync(blockchain, LogProgress()) - val balance = wallet.getBalance() - assertTrue(balance > 0u) + val balance: Balance = wallet.getBalance() + assertTrue(balance.total > 0u) + cleanupTestDataDir(testDataDir) } - - @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" - val psbt = PartiallySignedBitcoinTransaction(validSerializedPsbt) - val psbtSerialized = psbt.serialize() - assertEquals(psbtSerialized, validSerializedPsbt) - } - - // TODO move tx_builder tests to bdk-ffi, especially this one -// @Test -// fun walletTxBuilderBroadcast() { -// val descriptor = -// "wpkh([c1ed86ca/84'/1'/0'/0]tprv8hTkxK6QT7fCQx1wbuHuwbNh4STr2Ruz8RwEX7ymk6qnpixtbRG4T99mHxJwKTHPuKQ61heWrrpxZ8jpHj4sbisrQhDxnyx3HoQEZebtraN/*)" -// val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) -// val blockchain = Blockchain(blockchainConfig); -// wallet.sync(blockchain, LogProgress()) -// val balance = wallet.getBalance() -// if (balance > 2000u) { -// println("balance $balance") -// // send coins back to https://bitcoinfaucet.uo1.net -// val faucetAddress = "tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt" -// val txBuilder = TxBuilder().addRecipient(faucetAddress, 1000u).feeRate(1.2f) -// val psbt = txBuilder.finish(wallet) -// wallet.sign(psbt) -// blockchain.broadcast(psbt) -// val txid = psbt.txid() -// println("https://mempool.space/testnet/tx/$txid") -// assertNotNull(txid) -// } else { -// val depositAddress = wallet.getLastUnusedAddress() -// fail("Send more testnet coins to: $depositAddress") -// } -// } - - @Test(expected = BdkException.Generic::class) - fun walletTxBuilderInvalidAddress() { - val descriptor = - "wpkh([c1ed86ca/84'/1'/0'/0]tprv8hTkxK6QT7fCQx1wbuHuwbNh4STr2Ruz8RwEX7ymk6qnpixtbRG4T99mHxJwKTHPuKQ61heWrrpxZ8jpHj4sbisrQhDxnyx3HoQEZebtraN/*)" - val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - val txBuilder = TxBuilder().addRecipient("INVALID_ADDRESS", 1000u).feeRate(1.2f) - txBuilder.finish(wallet) - } - - // Comment this test in for local testing, you will need let it fail ones to get an address - // to pre-fund the test wallet before the test will pass. - // @Test - // fun walletTxBuilderDrainWallet() { - // val descriptor = "wpkh([8da6afbe/84'/1'/0'/0]tprv8hY7jbMbe17EH1cLw2feTyNDYvjcFYauLmbneBqVnDERBrV51LrxWjCYRZwWS5keYn3ijb7iHJuEzXQk7EzgPeKRBVNBgC4oFPDxGND5S3V/*)" - // val wallet = Wallet(descriptor, null, Network.TESTNET, databaseConfig) - // val blockchain = Blockchain(blockchainConfig) - // wallet.sync(blockchain, LogProgress()) - // val balance = wallet.getBalance() - // if (balance > 2000u) { - // println("balance $balance") - // // send all coins back to https://bitcoinfaucet.uo1.net - // val faucetAddress = "tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt" - // val txBuilder = TxBuilder().drainWallet().drainTo(faucetAddress).feeRate(1.1f) - // val psbt = txBuilder.finish(wallet) - // wallet.sign(psbt) - // val txid = blockchain.broadcast(psbt) - // println("https://mempool.space/testnet/tx/$txid") - // assertNotNull(txid) - // } else { - // val depositAddress = wallet.getAddress(AddressIndex.LAST_UNUSED).address - // fail("Send more testnet coins to: $depositAddress") - // } - // } }