MCPcopy Create free account
hub / github.com/ElementsProject/elements / run_test

Method run_test

test/functional/wallet_createwallet.py:25–165  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

23 self.skip_if_no_wallet()
24
25 def run_test(self):
26 node = self.nodes[0]
27 self.generate(node, 1) # Leave IBD for sethdseed
28
29 self.nodes[0].createwallet(wallet_name='w0')
30 w0 = node.get_wallet_rpc('w0')
31 address1 = w0.getnewaddress()
32
33 self.log.info("Test disableprivatekeys creation.")
34 self.nodes[0].createwallet(wallet_name='w1', disable_private_keys=True)
35 w1 = node.get_wallet_rpc('w1')
36 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w1.getnewaddress)
37 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w1.getrawchangeaddress)
38 w1.importpubkey(w0.getaddressinfo(address1)['pubkey'])
39
40 self.log.info('Test that private keys cannot be imported')
41 eckey = ECKey()
42 eckey.generate()
43 privkey = bytes_to_wif(eckey.get_bytes())
44 assert_raises_rpc_error(-4, 'Cannot import private keys to a wallet with private keys disabled', w1.importprivkey, privkey)
45 if self.options.descriptors:
46 result = w1.importdescriptors([{'desc': descsum_create('wpkh(' + privkey + ')'), 'timestamp': 'now'}])
47 else:
48 result = w1.importmulti([{'scriptPubKey': {'address': key_to_p2wpkh(eckey.get_pubkey().get_bytes())}, 'timestamp': 'now', 'keys': [privkey]}])
49 assert not result[0]['success']
50 assert 'warning' not in result[0]
51 assert_equal(result[0]['error']['code'], -4)
52 assert_equal(result[0]['error']['message'], 'Cannot import private keys to a wallet with private keys disabled')
53
54 self.log.info("Test blank creation with private keys disabled.")
55 self.nodes[0].createwallet(wallet_name='w2', disable_private_keys=True, blank=True)
56 w2 = node.get_wallet_rpc('w2')
57 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w2.getnewaddress)
58 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w2.getrawchangeaddress)
59 w2.importpubkey(w0.getaddressinfo(address1)['pubkey'])
60
61 self.log.info("Test blank creation with private keys enabled.")
62 self.nodes[0].createwallet(wallet_name='w3', disable_private_keys=False, blank=True)
63 w3 = node.get_wallet_rpc('w3')
64 assert_equal(w3.getwalletinfo()['keypoolsize'], 0)
65 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w3.getnewaddress)
66 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w3.getrawchangeaddress)
67 # Import private key
68 w3.importprivkey(generate_wif_key())
69 # Imported private keys are currently ignored by the keypool
70 assert_equal(w3.getwalletinfo()['keypoolsize'], 0)
71 assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w3.getnewaddress)
72 # Set the seed
73 if self.options.descriptors:
74 w3.importdescriptors([{
75 'desc': descsum_create('wpkh(tprv8ZgxMBicQKsPcwuZGKp8TeWppSuLMiLe2d9PupB14QpPeQsqoj3LneJLhGHH13xESfvASyd4EFLJvLrG8b7DrLxEuV7hpF9uUc6XruKA1Wq/0h/*)'),
76 'timestamp': 'now',
77 'active': True
78 },
79 {
80 'desc': descsum_create('wpkh(tprv8ZgxMBicQKsPcwuZGKp8TeWppSuLMiLe2d9PupB14QpPeQsqoj3LneJLhGHH13xESfvASyd4EFLJvLrG8b7DrLxEuV7hpF9uUc6XruKA1Wq/1h/*)'),
81 'timestamp': 'now',
82 'active': True,

Callers

nothing calls this directly

Calls 15

generateMethod · 0.95
get_bytesMethod · 0.95
get_pubkeyMethod · 0.95
assert_raises_rpc_errorFunction · 0.90
ECKeyClass · 0.90
bytes_to_wifFunction · 0.90
descsum_createFunction · 0.90
key_to_p2wpkhFunction · 0.90
assert_equalFunction · 0.90
generate_wif_keyFunction · 0.90
createwalletMethod · 0.80
infoMethod · 0.80

Tested by

no test coverage detected