(self, peer_node, rbf_node, dest_address)
| 386 | |
| 387 | |
| 388 | def test_watchonly_psbt(self, peer_node, rbf_node, dest_address): |
| 389 | self.log.info('Test that PSBT is returned for bumpfee in watchonly wallets') |
| 390 | priv_rec_desc = "wpkh([00000001/84'/1'/0']tprv8ZgxMBicQKsPd7Uf69XL1XwhmjHopUGep8GuEiJDZmbQz6o58LninorQAfcKZWARbtRtfnLcJ5MQ2AtHcQJCCRUcMRvmDUjyEmNUWwx8UbK/0/*)#rweraev0" |
| 391 | pub_rec_desc = rbf_node.getdescriptorinfo(priv_rec_desc)["descriptor"] |
| 392 | priv_change_desc = "wpkh([00000001/84'/1'/0']tprv8ZgxMBicQKsPd7Uf69XL1XwhmjHopUGep8GuEiJDZmbQz6o58LninorQAfcKZWARbtRtfnLcJ5MQ2AtHcQJCCRUcMRvmDUjyEmNUWwx8UbK/1/*)#j6uzqvuh" |
| 393 | pub_change_desc = rbf_node.getdescriptorinfo(priv_change_desc)["descriptor"] |
| 394 | # Create a wallet with private keys that can sign PSBTs |
| 395 | rbf_node.createwallet(wallet_name="signer", disable_private_keys=False, blank=True) |
| 396 | signer = rbf_node.get_wallet_rpc("signer") |
| 397 | assert signer.getwalletinfo()['private_keys_enabled'] |
| 398 | reqs = [{ |
| 399 | "desc": priv_rec_desc, |
| 400 | "timestamp": 0, |
| 401 | "range": [0,1], |
| 402 | "internal": False, |
| 403 | "keypool": False # Keys can only be imported to the keypool when private keys are disabled |
| 404 | }, |
| 405 | { |
| 406 | "desc": priv_change_desc, |
| 407 | "timestamp": 0, |
| 408 | "range": [0, 0], |
| 409 | "internal": True, |
| 410 | "keypool": False |
| 411 | }] |
| 412 | if self.options.descriptors: |
| 413 | result = signer.importdescriptors(reqs) |
| 414 | else: |
| 415 | result = signer.importmulti(reqs) |
| 416 | assert_equal(result, [{'success': True}, {'success': True}]) |
| 417 | |
| 418 | # Create another wallet with just the public keys, which creates PSBTs |
| 419 | rbf_node.createwallet(wallet_name="watcher", disable_private_keys=True, blank=True) |
| 420 | watcher = rbf_node.get_wallet_rpc("watcher") |
| 421 | assert not watcher.getwalletinfo()['private_keys_enabled'] |
| 422 | |
| 423 | reqs = [{ |
| 424 | "desc": pub_rec_desc, |
| 425 | "timestamp": 0, |
| 426 | "range": [0, 10], |
| 427 | "internal": False, |
| 428 | "keypool": True, |
| 429 | "watchonly": True, |
| 430 | "active": True, |
| 431 | }, { |
| 432 | "desc": pub_change_desc, |
| 433 | "timestamp": 0, |
| 434 | "range": [0, 10], |
| 435 | "internal": True, |
| 436 | "keypool": True, |
| 437 | "watchonly": True, |
| 438 | "active": True, |
| 439 | }] |
| 440 | if self.options.descriptors: |
| 441 | result = watcher.importdescriptors(reqs) |
| 442 | else: |
| 443 | result = watcher.importmulti(reqs) |
| 444 | assert_equal(result, [{'success': True}, {'success': True}]) |
| 445 |
no test coverage detected