Changeset View
Changeset View
Standalone View
Standalone View
test/functional/wallet_importmulti.py
Show All 39 Lines | def run_test(self): | ||||
# Address Test - before import | # Address Test - before import | ||||
address_info = self.nodes[1].getaddressinfo(node0_address1['address']) | address_info = self.nodes[1].getaddressinfo(node0_address1['address']) | ||||
assert_equal(address_info['iswatchonly'], False) | assert_equal(address_info['iswatchonly'], False) | ||||
assert_equal(address_info['ismine'], False) | assert_equal(address_info['ismine'], False) | ||||
# RPC importmulti ----------------------------------------------- | # RPC importmulti ----------------------------------------------- | ||||
# Bitcoin Address | # Bitcoin Address (implicit non-internal) | ||||
self.log.info("Should import an address") | self.log.info("Should import an address") | ||||
address = self.nodes[0].getaddressinfo(self.nodes[0].getnewaddress()) | address = self.nodes[0].getaddressinfo(self.nodes[0].getnewaddress()) | ||||
result = self.nodes[1].importmulti([{ | result = self.nodes[1].importmulti([{ | ||||
"scriptPubKey": { | "scriptPubKey": { | ||||
"address": address['address'] | "address": address['address'] | ||||
}, | }, | ||||
"timestamp": "now", | "timestamp": "now", | ||||
}]) | }]) | ||||
assert_equal(result[0]['success'], True) | assert_equal(result[0]['success'], True) | ||||
address_assert = self.nodes[1].getaddressinfo(address['address']) | address_assert = self.nodes[1].getaddressinfo(address['address']) | ||||
assert_equal(address_assert['iswatchonly'], True) | assert_equal(address_assert['iswatchonly'], True) | ||||
assert_equal(address_assert['ismine'], False) | assert_equal(address_assert['ismine'], False) | ||||
assert_equal(address_assert['timestamp'], timestamp) | assert_equal(address_assert['timestamp'], timestamp) | ||||
assert_equal(address_assert['ischange'], False) | |||||
watchonly_address = address['address'] | watchonly_address = address['address'] | ||||
watchonly_timestamp = timestamp | watchonly_timestamp = timestamp | ||||
self.log.info("Should not import an invalid address") | self.log.info("Should not import an invalid address") | ||||
result = self.nodes[1].importmulti([{ | result = self.nodes[1].importmulti([{ | ||||
"scriptPubKey": { | "scriptPubKey": { | ||||
"address": "not valid address", | "address": "not valid address", | ||||
}, | }, | ||||
Show All 11 Lines | def run_test(self): | ||||
"timestamp": "now", | "timestamp": "now", | ||||
"internal": True | "internal": True | ||||
}]) | }]) | ||||
assert_equal(result[0]['success'], True) | assert_equal(result[0]['success'], True) | ||||
address_assert = self.nodes[1].getaddressinfo(address['address']) | address_assert = self.nodes[1].getaddressinfo(address['address']) | ||||
assert_equal(address_assert['iswatchonly'], True) | assert_equal(address_assert['iswatchonly'], True) | ||||
assert_equal(address_assert['ismine'], False) | assert_equal(address_assert['ismine'], False) | ||||
assert_equal(address_assert['timestamp'], timestamp) | assert_equal(address_assert['timestamp'], timestamp) | ||||
assert_equal(address_assert['ischange'], True) | |||||
# ScriptPubKey + !internal | # ScriptPubKey + !internal | ||||
self.log.info("Should not import a scriptPubKey without internal flag") | self.log.info("Should not import a scriptPubKey without internal flag") | ||||
address = self.nodes[0].getaddressinfo(self.nodes[0].getnewaddress()) | address = self.nodes[0].getaddressinfo(self.nodes[0].getnewaddress()) | ||||
result = self.nodes[1].importmulti([{ | result = self.nodes[1].importmulti([{ | ||||
"scriptPubKey": address['scriptPubKey'], | "scriptPubKey": address['scriptPubKey'], | ||||
"timestamp": "now", | "timestamp": "now", | ||||
}]) | }]) | ||||
assert_equal(result[0]['success'], False) | assert_equal(result[0]['success'], False) | ||||
assert_equal(result[0]['error']['code'], -8) | assert_equal(result[0]['error']['code'], -8) | ||||
assert_equal(result[0]['error']['message'], | assert_equal(result[0]['error']['message'], | ||||
'Internal must be set for hex scriptPubKey') | 'Internal must be set for hex scriptPubKey') | ||||
address_assert = self.nodes[1].getaddressinfo(address['address']) | address_assert = self.nodes[1].getaddressinfo(address['address']) | ||||
assert_equal(address_assert['iswatchonly'], False) | assert_equal(address_assert['iswatchonly'], False) | ||||
assert_equal(address_assert['ismine'], False) | assert_equal(address_assert['ismine'], False) | ||||
assert_equal('timestamp' in address_assert, False) | assert_equal('timestamp' in address_assert, False) | ||||
# Address + Public key + !Internal | # Address + Public key + !Internal(explicit) | ||||
self.log.info("Should import an address with public key") | self.log.info("Should import an address with public key") | ||||
address = self.nodes[0].getaddressinfo(self.nodes[0].getnewaddress()) | address = self.nodes[0].getaddressinfo(self.nodes[0].getnewaddress()) | ||||
result = self.nodes[1].importmulti([{ | result = self.nodes[1].importmulti([{ | ||||
"scriptPubKey": { | "scriptPubKey": { | ||||
"address": address['address'] | "address": address['address'] | ||||
}, | }, | ||||
"timestamp": "now", | "timestamp": "now", | ||||
"pubkeys": [address['pubkey']] | "pubkeys": [address['pubkey']], | ||||
"internal": False | |||||
}]) | }]) | ||||
assert_equal(result[0]['success'], True) | assert_equal(result[0]['success'], True) | ||||
address_assert = self.nodes[1].getaddressinfo(address['address']) | address_assert = self.nodes[1].getaddressinfo(address['address']) | ||||
assert_equal(address_assert['iswatchonly'], True) | assert_equal(address_assert['iswatchonly'], True) | ||||
assert_equal(address_assert['ismine'], False) | assert_equal(address_assert['ismine'], False) | ||||
assert_equal(address_assert['timestamp'], timestamp) | assert_equal(address_assert['timestamp'], timestamp) | ||||
# ScriptPubKey + Public key + internal | # ScriptPubKey + Public key + internal | ||||
▲ Show 20 Lines • Show All 370 Lines • Show Last 20 Lines |