test: fix tests to account for persistence
This commit is contained in:
@@ -1,37 +1,42 @@
|
||||
import bdkpython as bdk
|
||||
import unittest
|
||||
import os
|
||||
|
||||
class TestLiveTxBuilder(unittest.TestCase):
|
||||
class LiveTxBuilderTest(unittest.TestCase):
|
||||
|
||||
def tearDown(self) -> None:
|
||||
if os.path.exists("./bdk_persistence.db"):
|
||||
os.remove("./bdk_persistence.db")
|
||||
|
||||
def test_tx_builder(self):
|
||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
# wallet: bdk.Wallet = bdk.Wallet.new_no_persist(
|
||||
# descriptor,
|
||||
# None,
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
# esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://mempool.space/testnet/api")
|
||||
# update = esploraClient.full_scan(
|
||||
# wallet = wallet,
|
||||
# stop_gap = 10,
|
||||
# parallel_requests = 1
|
||||
# )
|
||||
# wallet.apply_update(update)
|
||||
#
|
||||
# self.assertGreater(wallet.get_balance().total, 0)
|
||||
#
|
||||
# recipient = bdk.Address(
|
||||
# address = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||
# network = bdk.Network.TESTNET
|
||||
# )
|
||||
#
|
||||
# psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
# # print(psbt.serialize())
|
||||
#
|
||||
# self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
wallet: bdk.Wallet = bdk.Wallet(
|
||||
descriptor,
|
||||
None,
|
||||
"./bdk_persistence.db",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://esplora.testnet.kuutamo.cloud/")
|
||||
update = esploraClient.full_scan(
|
||||
wallet = wallet,
|
||||
stop_gap = 10,
|
||||
parallel_requests = 1
|
||||
)
|
||||
wallet.apply_update(update)
|
||||
|
||||
self.assertGreater(wallet.get_balance().total, 0)
|
||||
|
||||
recipient = bdk.Address(
|
||||
address = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||
network = bdk.Network.TESTNET
|
||||
)
|
||||
|
||||
psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
|
||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
|
||||
def complex_tx_builder(self):
|
||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||
@@ -42,38 +47,39 @@ class TestLiveTxBuilder(unittest.TestCase):
|
||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
# wallet: bdk.Wallet = bdk.Wallet.new_no_persist(
|
||||
# descriptor,
|
||||
# change_descriptor,
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
# esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://mempool.space/testnet/api")
|
||||
# update = esploraClient.full_scan(
|
||||
# wallet = wallet,
|
||||
# stop_gap = 10,
|
||||
# parallel_requests = 1
|
||||
# )
|
||||
# wallet.apply_update(update)
|
||||
#
|
||||
# self.assertGreater(wallet.get_balance().total, 0)
|
||||
#
|
||||
# recipient1 = bdk.Address(
|
||||
# address = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||
# network = bdk.Network.TESTNET
|
||||
# )
|
||||
# recipient2 = bdk.Address(
|
||||
# address = "tb1qw2c3lxufxqe2x9s4rdzh65tpf4d7fssjgh8nv6",
|
||||
# network = bdk.Network.TESTNET
|
||||
# )
|
||||
# all_recipients = list(
|
||||
# bdk.ScriptAmount(recipient1.script_pubkey, 4200),
|
||||
# bdk.ScriptAmount(recipient2.script_pubkey, 4200)
|
||||
# )
|
||||
#
|
||||
# psbt: bdk.PartiallySignedTransaction = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
# wallet.sign(psbt)
|
||||
#
|
||||
# self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
wallet: bdk.Wallet = bdk.Wallet(
|
||||
descriptor,
|
||||
change_descriptor,
|
||||
"./bdk_persistence.db",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://esplora.testnet.kuutamo.cloud/")
|
||||
update = esploraClient.full_scan(
|
||||
wallet = wallet,
|
||||
stop_gap = 10,
|
||||
parallel_requests = 1
|
||||
)
|
||||
wallet.apply_update(update)
|
||||
|
||||
self.assertGreater(wallet.get_balance().total, 0)
|
||||
|
||||
recipient1 = bdk.Address(
|
||||
address = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||
network = bdk.Network.TESTNET
|
||||
)
|
||||
recipient2 = bdk.Address(
|
||||
address = "tb1qw2c3lxufxqe2x9s4rdzh65tpf4d7fssjgh8nv6",
|
||||
network = bdk.Network.TESTNET
|
||||
)
|
||||
all_recipients = list(
|
||||
bdk.ScriptAmount(recipient1.script_pubkey, 4200),
|
||||
bdk.ScriptAmount(recipient2.script_pubkey, 4200)
|
||||
)
|
||||
|
||||
psbt: bdk.PartiallySignedTransaction = bdk.TxBuilder().set_recipients(all_recipients).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).enable_rbf().finish(wallet)
|
||||
wallet.sign(psbt)
|
||||
|
||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,35 +1,41 @@
|
||||
import bdkpython as bdk
|
||||
import unittest
|
||||
import os
|
||||
|
||||
class TestLiveWallet(unittest.TestCase):
|
||||
class LiveWalletTest(unittest.TestCase):
|
||||
|
||||
def tearDown(self) -> None:
|
||||
if os.path.exists("./bdk_persistence.db"):
|
||||
os.remove("./bdk_persistence.db")
|
||||
|
||||
def test_synced_balance(self):
|
||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
# wallet: bdk.Wallet = bdk.Wallet.new_no_persist(
|
||||
# descriptor,
|
||||
# None,
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
# esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://mempool.space/testnet/api")
|
||||
# update = esploraClient.full_scan(
|
||||
# wallet = wallet,
|
||||
# stop_gap = 10,
|
||||
# parallel_requests = 1
|
||||
# )
|
||||
# wallet.apply_update(update)
|
||||
#
|
||||
# self.assertGreater(wallet.get_balance().total, 0)
|
||||
#
|
||||
# print(f"Transactions count: {len(wallet.transactions())}")
|
||||
# transactions = wallet.transactions()[:3]
|
||||
# for tx in transactions:
|
||||
# sent_and_received = wallet.sent_and_received(tx)
|
||||
# print(f"Transaction: {tx.txid()}")
|
||||
# print(f"Sent {sent_and_received.sent}")
|
||||
# print(f"Received {sent_and_received.received}")
|
||||
wallet: bdk.Wallet = bdk.Wallet(
|
||||
descriptor,
|
||||
None,
|
||||
"./bdk_persistence.db",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://esplora.testnet.kuutamo.cloud/")
|
||||
update = esploraClient.full_scan(
|
||||
wallet = wallet,
|
||||
stop_gap = 10,
|
||||
parallel_requests = 1
|
||||
)
|
||||
wallet.apply_update(update)
|
||||
|
||||
self.assertGreater(wallet.get_balance().total, 0)
|
||||
|
||||
print(f"Transactions count: {len(wallet.transactions())}")
|
||||
transactions = wallet.transactions()[:3]
|
||||
for tx in transactions:
|
||||
sent_and_received = wallet.sent_and_received(tx)
|
||||
print(f"Transaction: {tx.txid()}")
|
||||
print(f"Sent {sent_and_received.sent}")
|
||||
print(f"Received {sent_and_received.received}")
|
||||
|
||||
|
||||
def test_broadcast_transaction(self):
|
||||
@@ -37,40 +43,41 @@ class TestLiveWallet(unittest.TestCase):
|
||||
"wpkh(tprv8ZgxMBicQKsPf2qfrEygW6fdYseJDDrVnDv26PH5BHdvSuG6ecCbHqLVof9yZcMoM31z9ur3tTYbSnr1WBqbGX97CbXcmp5H6qeMpyvx35B/84h/1h/0h/0/*)",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
# wallet: bdk.Wallet = bdk.Wallet.new_no_persist(
|
||||
# descriptor,
|
||||
# None,
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
# esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://mempool.space/testnet/api")
|
||||
# update = esploraClient.full_scan(
|
||||
# wallet = wallet,
|
||||
# stop_gap = 10,
|
||||
# parallel_requests = 1
|
||||
# )
|
||||
# wallet.apply_update(update)
|
||||
#
|
||||
# self.assertGreater(wallet.get_balance().total, 0)
|
||||
#
|
||||
# recipient = bdk.Address(
|
||||
# address = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||
# network = bdk.Network.TESTNET
|
||||
# )
|
||||
#
|
||||
# psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
# # print(psbt.serialize())
|
||||
# self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
#
|
||||
# walletDidSign = wallet.sign(psbt)
|
||||
# self.assertTrue(walletDidSign)
|
||||
# tx = psbt.extract_tx()
|
||||
# print(f"Transaction Id: {tx.txid}")
|
||||
# fee = wallet.calculate_fee(tx)
|
||||
# print(f"Transaction Fee: {fee}")
|
||||
# fee_rate = wallet.calculate_fee_rate(tx)
|
||||
# print(f"Transaction Fee Rate: {fee_rate.as_sat_per_vb()} sat/vB")
|
||||
#
|
||||
# esploraClient.broadcast(tx)
|
||||
wallet: bdk.Wallet = bdk.Wallet(
|
||||
descriptor,
|
||||
None,
|
||||
"./bdk_persistence.db",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
esploraClient: bdk.EsploraClient = bdk.EsploraClient(url = "https://esplora.testnet.kuutamo.cloud/")
|
||||
update = esploraClient.full_scan(
|
||||
wallet = wallet,
|
||||
stop_gap = 10,
|
||||
parallel_requests = 1
|
||||
)
|
||||
wallet.apply_update(update)
|
||||
|
||||
self.assertGreater(wallet.get_balance().total, 0)
|
||||
|
||||
recipient = bdk.Address(
|
||||
address = "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989",
|
||||
network = bdk.Network.TESTNET
|
||||
)
|
||||
|
||||
psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
# print(psbt.serialize())
|
||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
|
||||
walletDidSign = wallet.sign(psbt)
|
||||
self.assertTrue(walletDidSign)
|
||||
tx = psbt.extract_tx()
|
||||
print(f"Transaction Id: {tx.txid()}")
|
||||
fee = wallet.calculate_fee(tx)
|
||||
print(f"Transaction Fee: {fee}")
|
||||
fee_rate = wallet.calculate_fee_rate(tx)
|
||||
print(f"Transaction Fee Rate: {fee_rate.as_sat_per_vb()} sat/vB")
|
||||
|
||||
esploraClient.broadcast(tx)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import bdkpython as bdk
|
||||
import unittest
|
||||
|
||||
class TestSimpleWallet(unittest.TestCase):
|
||||
class OfflineDescriptorTest(unittest.TestCase):
|
||||
|
||||
def test_descriptor_bip86(self):
|
||||
mnemonic: bdk.Mnemonic = bdk.Mnemonic.from_string("space echo position wrist orient erupt relief museum myself grain wisdom tumble")
|
||||
|
||||
@@ -1,39 +1,46 @@
|
||||
import bdkpython as bdk
|
||||
import unittest
|
||||
import os
|
||||
|
||||
class TestSimpleWallet(unittest.TestCase):
|
||||
class OfflineWalletTest(unittest.TestCase):
|
||||
|
||||
def tearDown(self) -> None:
|
||||
if os.path.exists("./bdk_persistence.db"):
|
||||
os.remove("./bdk_persistence.db")
|
||||
|
||||
def test_new_address(self):
|
||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
# wallet: Wallet = bdk.Wallet.new_no_persist(
|
||||
# descriptor,
|
||||
# None,
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
# address_info: bdk.AddressInfo = wallet.get_address(bdk.AddressIndex.NEW())
|
||||
#
|
||||
# self.assertTrue(address_info.address.is_valid_for_network(bdk.Network.TESTNET), "Address is not valid for testnet network")
|
||||
# self.assertTrue(address_info.address.is_valid_for_network(bdk.Network.SIGNET), "Address is not valid for signet network")
|
||||
# self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.REGTEST), "Address is valid for regtest network, but it shouldn't be")
|
||||
# self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
||||
#
|
||||
# self.assertEqual("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address_info.address.as_string())
|
||||
#
|
||||
# def test_balance(self):
|
||||
# descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||
# "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
# wallet: bdk.Wallet = bdk.Wallet.new_no_persist(
|
||||
# descriptor,
|
||||
# None,
|
||||
# bdk.Network.TESTNET
|
||||
# )
|
||||
#
|
||||
# self.assertEqual(wallet.get_balance().total, 0)
|
||||
wallet: Wallet = bdk.Wallet(
|
||||
descriptor,
|
||||
None,
|
||||
"./bdk_persistence.db",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
address_info: bdk.AddressInfo = wallet.get_address(bdk.AddressIndex.NEW())
|
||||
|
||||
self.assertTrue(address_info.address.is_valid_for_network(bdk.Network.TESTNET), "Address is not valid for testnet network")
|
||||
self.assertTrue(address_info.address.is_valid_for_network(bdk.Network.SIGNET), "Address is not valid for signet network")
|
||||
self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.REGTEST), "Address is valid for regtest network, but it shouldn't be")
|
||||
self.assertFalse(address_info.address.is_valid_for_network(bdk.Network.BITCOIN), "Address is valid for bitcoin network, but it shouldn't be")
|
||||
|
||||
self.assertEqual("tb1qzg4mckdh50nwdm9hkzq06528rsu73hjxxzem3e", address_info.address.as_string())
|
||||
|
||||
def test_balance(self):
|
||||
descriptor: bdk.Descriptor = bdk.Descriptor(
|
||||
"wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
wallet: bdk.Wallet = bdk.Wallet(
|
||||
descriptor,
|
||||
None,
|
||||
"./bdk_persistence.db",
|
||||
bdk.Network.TESTNET
|
||||
)
|
||||
|
||||
self.assertEqual(wallet.get_balance().total, 0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user