60 lines
2.2 KiB
Python
Executable File
60 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# Copyright (c) 2022 The Zcash developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or https://www.opensource.org/licenses/mit-license.php .
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
from test_framework.util import start_nodes, connect_nodes_bi
|
|
|
|
class ThreeOfThreeRestoreTest(BitcoinTestFramework):
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.cache_behavior = 'clean'
|
|
self.num_nodes = 4
|
|
|
|
def setup_network(self, split=False):
|
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
extra_args=[['-experimentalfeatures', '-developerencryptwallet']] * 4)
|
|
|
|
connect_nodes_bi(self.nodes,0,1)
|
|
connect_nodes_bi(self.nodes,1,2)
|
|
connect_nodes_bi(self.nodes,0,2)
|
|
connect_nodes_bi(self.nodes,0,3)
|
|
|
|
self.is_network_split=False
|
|
self.sync_all()
|
|
|
|
def run_test(self):
|
|
addr1 = self.nodes[2].getnewaddress()
|
|
addr2 = self.nodes[2].getnewaddress()
|
|
addr3 = self.nodes[2].getnewaddress()
|
|
|
|
addr1Obj = self.nodes[2].validateaddress(addr1)
|
|
addr2Obj = self.nodes[2].validateaddress(addr2)
|
|
addr3Obj = self.nodes[2].validateaddress(addr3)
|
|
|
|
key1 = self.nodes[2].dumpprivkey(addr1)
|
|
key2 = self.nodes[2].dumpprivkey(addr2)
|
|
key3 = self.nodes[2].dumpprivkey(addr3)
|
|
|
|
self.nodes[3].importprivkey(key1, "", True)
|
|
self.nodes[3].importprivkey(key2, "", True)
|
|
self.nodes[3].importprivkey(key3, "", True)
|
|
|
|
mSigObj = self.nodes[3].addmultisigaddress(3, [addr1Obj['pubkey'], addr2Obj['pubkey'], addr3Obj['pubkey']])
|
|
validateObj = self.nodes[3].validateaddress(mSigObj)
|
|
assert(validateObj["isvalid"])
|
|
assert(validateObj["ismine"])
|
|
|
|
# Ensure that the multisig address is returned
|
|
list_result = self.nodes[3].listaddresses()
|
|
|
|
assert('imported' in obj['source'] for obj in list_result)
|
|
for obj in list_result:
|
|
if obj['source'] == 'imported':
|
|
assert(validateObj['address'] in obj['transparent']['addresses'])
|
|
|
|
if __name__ == '__main__':
|
|
ThreeOfThreeRestoreTest().main()
|