message: Test importing descriptors with key origin information
diff: @@ -626,5 +626,70 @@ class ImportMultiTest(BitcoinTestFramework):
  iswatchonly=False)
  + # Import pubkeys with key origin info
  + self.log.info("Addresses should have hd keypath and master key id after import with key origin")
  + pub_addr = self.nodes[1].getnewaddress()
  + pub_addr = self.nodes[1].getnewaddress()
  + info = self.nodes[1].getaddressinfo(pub_addr)
  + pub = info['pubkey']
  + pub_keypath = info['hdkeypath']
  + pub_fpr = info['hdmasterfingerprint']
  + result = self.nodes[0].importmulti(
  + [{
  + 'desc' : "wpkh([" + pub_fpr + pub_keypath[1:] +"]" + pub + ")",
  + "timestamp": "now",
  + }]
  + )
  + assert result[0]['success']
  + pub_import_info = self.nodes[0].getaddressinfo(pub_addr)
  + assert_equal(pub_import_info['hdmasterfingerprint'], pub_fpr)
  + assert_equal(pub_import_info['pubkey'], pub)
  + assert_equal(pub_import_info['hdkeypath'], pub_keypath)
  +
  + # Import privkeys with key origin info
  + priv_addr = self.nodes[1].getnewaddress()
  + info = self.nodes[1].getaddressinfo(priv_addr)
  + priv = self.nodes[1].dumpprivkey(priv_addr)
  + priv_keypath = info['hdkeypath']
  + priv_fpr = info['hdmasterfingerprint']
  + result = self.nodes[0].importmulti(
  + [{
  + 'desc' : "wpkh([" + priv_fpr + priv_keypath[1:] + "]" + priv + ")",
  + "timestamp": "now",
  + }]
  + )
  + assert result[0]['success']
  + priv_import_info = self.nodes[0].getaddressinfo(priv_addr)
  + assert_equal(priv_import_info['hdmasterfingerprint'], priv_fpr)
  + assert_equal(priv_import_info['hdkeypath'], priv_keypath)
  +
  + # Make sure the key origin info are still there after a restart
  + self.stop_nodes()
  + self.start_nodes()
  + import_info = self.nodes[0].getaddressinfo(pub_addr)
  + assert_equal(import_info['hdmasterfingerprint'], pub_fpr)
  + assert_equal(import_info['hdkeypath'], pub_keypath)
  + import_info = self.nodes[0].getaddressinfo(priv_addr)
  + assert_equal(import_info['hdmasterfingerprint'], priv_fpr)
  + assert_equal(import_info['hdkeypath'], priv_keypath)
  +
  + # Check legacy import does not import key origin info
  + self.log.info("Legacy imports don't have key origin info")
  + pub_addr = self.nodes[1].getnewaddress()
  + info = self.nodes[1].getaddressinfo(pub_addr)
  + pub = info['pubkey']
  + result = self.nodes[0].importmulti(
  + [{
  + 'scriptPubKey': {'address': pub_addr},
  + 'pubkeys': [pub],
  + "timestamp": "now",
  + }]
  + )
  + assert result[0]['success']
  + pub_import_info = self.nodes[0].getaddressinfo(pub_addr)
  + assert_equal(pub_import_info['pubkey'], pub)
  + assert 'hdmasterfingerprint' not in pub_import_info
  + assert 'hdkeypath' not in pub_import_info
  +
  if __name__ == '__main__':
  ImportMultiTest().main()
  