@@ -479,14 +479,30 @@ def run_test(self):
479
479
# Verify nothing new in wallet
480
480
assert_equal (total_txs , len (self .nodes [0 ].listtransactions ("*" , 99999 )))
481
481
482
- # Test getaddressinfo. Note that these addresses are taken from disablewallet.py
482
+ # Test getaddressinfo on external address . Note that these addresses are taken from disablewallet.py
483
483
assert_raises_rpc_error (- 5 , "Invalid address" , self .nodes [0 ].getaddressinfo , "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy" )
484
484
address_info = self .nodes [0 ].getaddressinfo ("mneYUmWYsuk7kySiURxCi3AGxrAqZxLgPZ" )
485
485
assert_equal (address_info ['address' ], "mneYUmWYsuk7kySiURxCi3AGxrAqZxLgPZ" )
486
486
assert_equal (address_info ["scriptPubKey" ], "76a9144e3854046c7bd1594ac904e4793b6a45b36dea0988ac" )
487
487
assert not address_info ["ismine" ]
488
488
assert not address_info ["iswatchonly" ]
489
489
assert not address_info ["isscript" ]
490
+ assert not address_info ["ischange" ]
491
+
492
+ # Test getaddressinfo 'ischange' field on change address.
493
+ self .nodes [0 ].generate (1 )
494
+ destination = self .nodes [1 ].getnewaddress ()
495
+ txid = self .nodes [0 ].sendtoaddress (destination , 0.123 )
496
+ tx = self .nodes [0 ].decoderawtransaction (self .nodes [0 ].getrawtransaction (txid ))
497
+ output_addresses = [vout ['scriptPubKey' ]['addresses' ][0 ] for vout in tx ["vout" ]]
498
+ assert len (output_addresses ) > 1
499
+ for address in output_addresses :
500
+ ischange = self .nodes [0 ].getaddressinfo (address )['ischange' ]
501
+ assert_equal (ischange , address != destination )
502
+ if ischange :
503
+ change = address
504
+ self .nodes [0 ].setlabel (change , 'foobar' )
505
+ assert_equal (self .nodes [0 ].getaddressinfo (change )['ischange' ], False )
490
506
491
507
if __name__ == '__main__' :
492
508
WalletTest ().main ()
0 commit comments