mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-11 04:12:36 -03:00
Add test to check spendable and unspendable UTXO on RPC listunspent
This commit is contained in:
parent
fa942c755a
commit
5d217decc1
1 changed files with 37 additions and 0 deletions
|
@ -32,6 +32,12 @@ class WalletTest (BitcoinTestFramework):
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
||||||
def run_test (self):
|
def run_test (self):
|
||||||
|
|
||||||
|
# Check that there's no UTXO on none of the nodes
|
||||||
|
assert_equal(len(self.nodes[0].listunspent()), 0)
|
||||||
|
assert_equal(len(self.nodes[1].listunspent()), 0)
|
||||||
|
assert_equal(len(self.nodes[2].listunspent()), 0)
|
||||||
|
|
||||||
print "Mining blocks..."
|
print "Mining blocks..."
|
||||||
|
|
||||||
self.nodes[0].generate(1)
|
self.nodes[0].generate(1)
|
||||||
|
@ -48,6 +54,11 @@ class WalletTest (BitcoinTestFramework):
|
||||||
assert_equal(self.nodes[1].getbalance(), 50)
|
assert_equal(self.nodes[1].getbalance(), 50)
|
||||||
assert_equal(self.nodes[2].getbalance(), 0)
|
assert_equal(self.nodes[2].getbalance(), 0)
|
||||||
|
|
||||||
|
# Check that only first and second nodes have UTXOs
|
||||||
|
assert_equal(len(self.nodes[0].listunspent()), 1)
|
||||||
|
assert_equal(len(self.nodes[1].listunspent()), 1)
|
||||||
|
assert_equal(len(self.nodes[2].listunspent()), 0)
|
||||||
|
|
||||||
# Send 21 BTC from 0 to 2 using sendtoaddress call.
|
# Send 21 BTC from 0 to 2 using sendtoaddress call.
|
||||||
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
|
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
|
||||||
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
|
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
|
||||||
|
@ -259,6 +270,32 @@ class WalletTest (BitcoinTestFramework):
|
||||||
except JSONRPCException as e:
|
except JSONRPCException as e:
|
||||||
assert("not an integer" in e.error['message'])
|
assert("not an integer" in e.error['message'])
|
||||||
|
|
||||||
|
# Import address and private key to check correct behavior of spendable unspents
|
||||||
|
# 1. Send some coins to generate new UTXO
|
||||||
|
address_to_import = self.nodes[2].getnewaddress()
|
||||||
|
txid = self.nodes[0].sendtoaddress(address_to_import, 1)
|
||||||
|
self.nodes[0].generate(1)
|
||||||
|
self.sync_all()
|
||||||
|
|
||||||
|
# 2. Import address from node2 to node1
|
||||||
|
self.nodes[1].importaddress(address_to_import)
|
||||||
|
|
||||||
|
# 3. Validate that the imported address is watch-only on node1
|
||||||
|
assert(self.nodes[1].validateaddress(address_to_import)["iswatchonly"])
|
||||||
|
|
||||||
|
# 4. Check that the unspents after import are not spendable
|
||||||
|
assert_array_result(self.nodes[1].listunspent(),
|
||||||
|
{"address": address_to_import},
|
||||||
|
{"spendable": False})
|
||||||
|
|
||||||
|
# 5. Import private key of the previously imported address on node1
|
||||||
|
priv_key = self.nodes[2].dumpprivkey(address_to_import)
|
||||||
|
self.nodes[1].importprivkey(priv_key)
|
||||||
|
|
||||||
|
# 6. Check that the unspents are now spendable on node1
|
||||||
|
assert_array_result(self.nodes[1].listunspent(),
|
||||||
|
{"address": address_to_import},
|
||||||
|
{"spendable": True})
|
||||||
|
|
||||||
# Mine a block from node0 to an address from node1
|
# Mine a block from node0 to an address from node1
|
||||||
cbAddr = self.nodes[1].getnewaddress()
|
cbAddr = self.nodes[1].getnewaddress()
|
||||||
|
|
Loading…
Reference in a new issue