diff --git a/test/functional/rpc_createmultisig.py b/test/functional/rpc_createmultisig.py --- a/test/functional/rpc_createmultisig.py +++ b/test/functional/rpc_createmultisig.py @@ -1,10 +1,13 @@ #!/usr/bin/env python3 -# Copyright (c) 2015-2017 The Bitcoin Core developers +# Copyright (c) 2015-2019 The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -"""Test transaction signing using the signrawtransaction* RPCs.""" +"""Test multisig RPCs""" from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import ( + assert_raises_rpc_error, +) import decimal @@ -18,15 +21,17 @@ def get_keys(self): node0, node1, node2 = self.nodes - self.add = [node1.getnewaddress() for _ in range(self.nkeys)] - self.pub = [node1.getaddressinfo(a)["pubkey"] for a in self.add] - self.priv = [node1.dumpprivkey(a) for a in self.add] + add = [node1.getnewaddress() for _ in range(self.nkeys)] + self.pub = [node1.getaddressinfo(a)["pubkey"] for a in add] + self.priv = [node1.dumpprivkey(a) for a in add] self.final = node2.getnewaddress() def run_test(self): node0, node1, node2 = self.nodes - # 50 BCH each, rest will be 25 BCH each + self.check_addmultisigaddress_errors() + + self.log.info('Generating blocks ...') node0.generate(149) self.sync_all() @@ -38,6 +43,23 @@ self.checkbalances() + def check_addmultisigaddress_errors(self): + self.log.info( + 'Check that addmultisigaddress fails when the private keys are missing') + addresses = [self.nodes[1].getnewaddress( + address_type='legacy') for _ in range(2)] + assert_raises_rpc_error(-5, + 'no full public key for address', + lambda: self.nodes[0].addmultisigaddress(nrequired=1, + keys=addresses)) + for a in addresses: + # Importing all addresses should not change the result + self.nodes[0].importaddress(a) + assert_raises_rpc_error(-5, + 'no full public key for address', + lambda: self.nodes[0].addmultisigaddress(nrequired=1, + keys=addresses)) + def checkbalances(self): node0, node1, node2 = self.nodes node0.generate(100)