Skip to content

Commit 603d295

Browse files
committed
test: wallet: add coverage for -spendzeroconfchange setting
1 parent 5011203 commit 603d295

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/functional/wallet_basic.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -731,6 +731,45 @@ def run_test(self):
731731
assert_equal(coin_b["parent_descs"][0], multi_b)
732732
self.nodes[0].unloadwallet("wo")
733733

734+
self.log.info("Test -spendzeroconfchange")
735+
self.restart_node(0, ["-spendzeroconfchange=0"])
736+
737+
# create new wallet and fund it with a confirmed UTXO
738+
self.nodes[0].createwallet(wallet_name="zeroconf", load_on_startup=True)
739+
zeroconf_wallet = self.nodes[0].get_wallet_rpc("zeroconf")
740+
default_wallet = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
741+
default_wallet.sendtoaddress(zeroconf_wallet.getnewaddress(), Decimal('1.0'))
742+
self.generate(self.nodes[0], 1, sync_fun=self.no_op)
743+
utxos = zeroconf_wallet.listunspent(minconf=0)
744+
assert_equal(len(utxos), 1)
745+
assert_equal(utxos[0]['confirmations'], 1)
746+
747+
# spend confirmed UTXO to ourselves
748+
zeroconf_wallet.sendall(recipients=[zeroconf_wallet.getnewaddress()])
749+
utxos = zeroconf_wallet.listunspent(minconf=0)
750+
assert_equal(len(utxos), 1)
751+
assert_equal(utxos[0]['confirmations'], 0)
752+
# accounts for untrusted pending balance
753+
bal = zeroconf_wallet.getbalances()
754+
assert_equal(bal['mine']['trusted'], 0)
755+
assert_equal(bal['mine']['untrusted_pending'], utxos[0]['amount'])
756+
757+
# spending an unconfirmed UTXO sent to ourselves should fail
758+
assert_raises_rpc_error(-6, "Insufficient funds", zeroconf_wallet.sendtoaddress, zeroconf_wallet.getnewaddress(), Decimal('0.5'))
759+
760+
# check that it works again with -spendzeroconfchange set (=default)
761+
self.restart_node(0, ["-spendzeroconfchange=1"])
762+
zeroconf_wallet = self.nodes[0].get_wallet_rpc("zeroconf")
763+
utxos = zeroconf_wallet.listunspent(minconf=0)
764+
assert_equal(len(utxos), 1)
765+
assert_equal(utxos[0]['confirmations'], 0)
766+
# accounts for trusted balance
767+
bal = zeroconf_wallet.getbalances()
768+
assert_equal(bal['mine']['trusted'], utxos[0]['amount'])
769+
assert_equal(bal['mine']['untrusted_pending'], 0)
770+
771+
zeroconf_wallet.sendtoaddress(zeroconf_wallet.getnewaddress(), Decimal('0.5'))
772+
734773

735774
if __name__ == '__main__':
736775
WalletTest().main()

0 commit comments

Comments
 (0)