Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import kotlin.test.assertFails

class CreatingWalletsTest {
class CreatingWalletTest {
private val conn: Persister = Persister.newInMemory()

@Nested
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package org.bitcoindevkit
import kotlin.test.Test
import kotlin.test.assertEquals

class OfflineDescriptorTest {
class MnemonicTest {
@Test
fun testDescriptorBip86() {
fun `Mnemonics create valid descriptors`() {
val mnemonic: Mnemonic = Mnemonic.fromString("space echo position wrist orient erupt relief museum myself grain wisdom tumble")
val descriptorSecretKey: DescriptorSecretKey = DescriptorSecretKey(Network.TESTNET, mnemonic, null)
val descriptor: Descriptor = Descriptor.newBip86(descriptorSecretKey, KeychainKind.EXTERNAL, Network.TESTNET)
Expand Down
66 changes: 0 additions & 66 deletions lib/src/test/kotlin/org/bitcoindevkit/OfflineWalletTest.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.bitcoindevkit
import kotlin.test.Test
import kotlin.test.assertEquals

class OfflinePersistenceTest {
class PersistenceTest {
private val persistenceFilePath = run {
val currentDirectory = System.getProperty("user.dir")
val dbFileName = "pre_existing_wallet_persistence_test.sqlite"
Expand All @@ -19,7 +19,7 @@ class OfflinePersistenceTest {
)

@Test
fun testPersistence() {
fun `Correctly load wallet from sqlite persistence`() {
val connection = Persister.newSqlite(persistenceFilePath)

val wallet: Wallet = Wallet.load(
Expand All @@ -28,38 +28,6 @@ class OfflinePersistenceTest {
connection
)
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
println("Address: $addressInfo")

assertEquals(
expected = 7u,
actual = addressInfo.index,
)
assertEquals(
expected = "tb1qan3lldunh37ma6c0afeywgjyjgnyc8uz975zl2",
actual = addressInfo.address.toString(),
)
}

@Test
fun testPersistenceWithDescriptor() {
val connection = Persister.newSqlite(persistenceFilePath)

val descriptorPub = Descriptor(
"wpkh([9122d9e0/84'/1'/0']tpubDCYVtmaSaDzTxcgvoP5AHZNbZKZzrvoNH9KARep88vESc6MxRqAp4LmePc2eeGX6XUxBcdhAmkthWTDqygPz2wLAyHWisD299Lkdrj5egY6/0/*)#zpaanzgu",
Network.SIGNET
)
val changeDescriptorPub = Descriptor(
"wpkh([9122d9e0/84'/1'/0']tpubDCYVtmaSaDzTxcgvoP5AHZNbZKZzrvoNH9KARep88vESc6MxRqAp4LmePc2eeGX6XUxBcdhAmkthWTDqygPz2wLAyHWisD299Lkdrj5egY6/1/*)#n4cuwhcy",
Network.SIGNET
)

val wallet: Wallet = Wallet.load(
descriptorPub,
changeDescriptorPub,
connection
)
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)
println("Address: $addressInfo")

assertEquals(
expected = 7u,
Expand Down
43 changes: 43 additions & 0 deletions lib/src/test/kotlin/org/bitcoindevkit/WalletTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package org.bitcoindevkit

import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
import kotlin.test.assertFalse

class WalletTest {
val conn: Persister = Persister.newInMemory()

@Test
fun `Wallet produces valid addresses for its network`() {
val wallet: Wallet = Wallet(
descriptor = BIP84_DESCRIPTOR,
changeDescriptor = BIP84_CHANGE_DESCRIPTOR,
network = Network.TESTNET,
persister = conn
)
val addressInfo: AddressInfo = wallet.revealNextAddress(KeychainKind.EXTERNAL)

assertTrue(addressInfo.address.isValidForNetwork(Network.TESTNET), "Address is not valid for Testnet 3 network but it should be")
assertTrue(addressInfo.address.isValidForNetwork(Network.TESTNET4), "Address is not valid for Testnet 4 network but it should be")
assertTrue(addressInfo.address.isValidForNetwork(Network.SIGNET), "Address is not valid for Signet network but it should be")

assertFalse(addressInfo.address.isValidForNetwork(Network.REGTEST), "Address is valid for Regtest network, but it should not be")
assertFalse(addressInfo.address.isValidForNetwork(Network.BITCOIN), "Address is valid for Mainnet network, but it should not be")
}

@Test
fun `Wallet has 0 balance prior to sync`() {
val wallet: Wallet = Wallet(
descriptor = BIP84_DESCRIPTOR,
changeDescriptor = BIP84_CHANGE_DESCRIPTOR,
network = Network.TESTNET,
persister = conn
)

assertEquals(
expected = 0uL,
actual = wallet.balance().total.toSat()
)
}
}