def test_WalletManager(bitcoin_regtest, devices_filled_data_folder, device_manager): wm = WalletManager(devices_filled_data_folder, bitcoin_regtest.get_rpc(), "regtest", device_manager) # A wallet-creation needs a device device = device_manager.get_by_alias("trezor") assert device != None # Lets's create a wallet with the WalletManager wm.create_wallet("a_test_wallet", 1, "wpkh", [device.keys[5]], [device]) # The wallet-name gets its filename and therefore its alias wallet = wm.wallets["a_test_wallet"] assert wallet != None assert wallet.balance["trusted"] == 0 assert wallet.balance["untrusted_pending"] == 0 # this is a sum of both assert wallet.fullbalance == 0 address = wallet.getnewaddress() # newly minted coins need 100 blocks to get spendable wallet.rpc.generatetoaddress(1, address) # let's mine another 100 blocks to get these coins spendable random_address = "mruae2834buqxk77oaVpephnA5ZAxNNJ1r" wallet.rpc.generatetoaddress(100, random_address) # update the balance wallet.get_balance() assert wallet.fullbalance >= 25 # You can create a multisig wallet with the wallet manager like this second_device = device_manager.get_by_alias("specter") multisig_wallet = wm.create_wallet( "a_multisig_test_wallet", 1, "wsh", [device.keys[7], second_device.keys[0]], [device, second_device], ) assert len(wm.wallets) == 2 assert multisig_wallet != None assert multisig_wallet.fullbalance == 0 multisig_address = multisig_wallet.getnewaddress() multisig_wallet.rpc.generatetoaddress(1, multisig_address) multisig_wallet.rpc.generatetoaddress(100, random_address) # update balance multisig_wallet.get_balance() assert multisig_wallet.fullbalance >= 12.5 # The WalletManager also has a `wallets_names` property, returning a sorted list of the names of all wallets assert wm.wallets_names == ["a_multisig_test_wallet", "a_test_wallet"] # You can rename a wallet using the wallet manager using `rename_wallet`, passing the wallet object and the new name to assign to it wm.rename_wallet(multisig_wallet, "new_name_test_wallet") assert multisig_wallet.name == "new_name_test_wallet" assert wm.wallets_names == ["a_test_wallet", "new_name_test_wallet"] # you can also delete a wallet by passing it to the wallet manager's `delete_wallet` method # it will delete the json and attempt to remove it from Bitcoin Core wallet_fullpath = multisig_wallet.fullpath assert os.path.exists(wallet_fullpath) wm.delete_wallet(multisig_wallet) assert not os.path.exists(wallet_fullpath) assert len(wm.wallets) == 1
def test_WalletManager(bitcoin_regtest, devices_filled_data_folder, device_manager): wm = WalletManager(devices_filled_data_folder, bitcoin_regtest.get_cli(), "regtest", device_manager) # A wallet-creation needs a device device = device_manager.get_by_alias('trezor') assert device != None # Lets's create a wallet with the WalletManager wm.create_wallet('a_test_wallet', 1, 'wpkh', [device.keys[5]], [device]) # The wallet-name gets its filename and therefore its alias wallet = wm.wallets['a_test_wallet'] assert wallet != None assert wallet.balance['trusted'] == 0 assert wallet.balance['untrusted_pending'] == 0 # this is a sum of both assert wallet.fullbalance == 0 address = wallet.getnewaddress() # newly minted coins need 100 blocks to get spendable wallet.cli.generatetoaddress(1, address) # let's mine another 100 blocks to get these coins spendable random_address = "mruae2834buqxk77oaVpephnA5ZAxNNJ1r" wallet.cli.generatetoaddress(100, random_address) # a balance has properties which are caching the result from last call assert wallet.fullbalance == 50 # You can create a multisig wallet with the wallet manager like this second_device = device_manager.get_by_alias('specter') multisig_wallet = wm.create_wallet('a_multisig_test_wallet', 1, 'wsh', [device.keys[7], second_device.keys[0]], [device, second_device]) assert len(wm.wallets) == 2 assert multisig_wallet != None assert multisig_wallet.fullbalance == 0 multisig_address = multisig_wallet.getnewaddress() multisig_wallet.cli.generatetoaddress(1, multisig_address) multisig_wallet.cli.generatetoaddress(100, random_address) # a balance has properties which are caching the result from last call assert multisig_wallet.fullbalance == 25 # The WalletManager also has a `wallets_names` property, returning a sorted list of the names of all wallets assert wm.wallets_names == ['a_multisig_test_wallet', 'a_test_wallet'] # You can rename a wallet using the wallet manager using `rename_wallet`, passing the wallet object and the new name to assign to it wm.rename_wallet(multisig_wallet, 'new_name_test_wallet') assert multisig_wallet.name == 'new_name_test_wallet' assert wm.wallets_names == ['a_test_wallet', 'new_name_test_wallet'] # you can also delete a wallet by passing it to the wallet manager's `delete_wallet` method # it will delete the json and attempt to remove it from Bitcoin Core wallet_fullpath = multisig_wallet.fullpath assert os.path.exists(wallet_fullpath) wm.delete_wallet(multisig_wallet) assert not os.path.exists(wallet_fullpath) assert len(wm.wallets) == 1