Changeset View
Changeset View
Standalone View
Standalone View
test/functional/interface_bitcoin_cli.py
Show First 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
network_info['networks'][0]['proxy']) | network_info['networks'][0]['proxy']) | ||||
assert_equal(cli_get_info['difficulty'], blockchain_info['difficulty']) | assert_equal(cli_get_info['difficulty'], blockchain_info['difficulty']) | ||||
assert_equal(cli_get_info['chain'], blockchain_info['chain']) | assert_equal(cli_get_info['chain'], blockchain_info['chain']) | ||||
if self.is_wallet_compiled(): | if self.is_wallet_compiled(): | ||||
self.log.info( | self.log.info( | ||||
"Test -getinfo and bitcoin-cli getwalletinfo return expected wallet info") | "Test -getinfo and bitcoin-cli getwalletinfo return expected wallet info") | ||||
assert_equal(cli_get_info['balance'], BALANCE) | assert_equal(cli_get_info['balance'], BALANCE) | ||||
assert 'balances' not in cli_get_info.keys() | |||||
wallet_info = self.nodes[0].getwalletinfo() | wallet_info = self.nodes[0].getwalletinfo() | ||||
assert_equal( | assert_equal( | ||||
cli_get_info['keypoolsize'], | cli_get_info['keypoolsize'], | ||||
wallet_info['keypoolsize']) | wallet_info['keypoolsize']) | ||||
assert_equal( | assert_equal( | ||||
cli_get_info['unlocked_until'], | cli_get_info['unlocked_until'], | ||||
wallet_info['unlocked_until']) | wallet_info['unlocked_until']) | ||||
assert_equal(cli_get_info['paytxfee'], wallet_info['paytxfee']) | assert_equal(cli_get_info['paytxfee'], wallet_info['paytxfee']) | ||||
assert_equal(cli_get_info['relayfee'], network_info['relayfee']) | assert_equal(cli_get_info['relayfee'], network_info['relayfee']) | ||||
assert_equal(self.nodes[0].cli.getwalletinfo(), wallet_info) | assert_equal(self.nodes[0].cli.getwalletinfo(), wallet_info) | ||||
# Setup to test -getinfo and -rpcwallet= with multiple wallets. | # Setup to test -getinfo and -rpcwallet= with multiple wallets. | ||||
wallets = ['', 'Encrypted', 'secret'] | wallets = ['', 'Encrypted', 'secret'] | ||||
amounts = [Decimal('59.99999550'), Decimal(9), Decimal(31)] | amounts = [ | ||||
BALANCE + Decimal('9.99999550'), | |||||
Decimal(9), | |||||
Decimal(31)] | |||||
self.nodes[0].createwallet(wallet_name=wallets[1]) | self.nodes[0].createwallet(wallet_name=wallets[1]) | ||||
self.nodes[0].createwallet(wallet_name=wallets[2]) | self.nodes[0].createwallet(wallet_name=wallets[2]) | ||||
w1 = self.nodes[0].get_wallet_rpc(wallets[0]) | w1 = self.nodes[0].get_wallet_rpc(wallets[0]) | ||||
w2 = self.nodes[0].get_wallet_rpc(wallets[1]) | w2 = self.nodes[0].get_wallet_rpc(wallets[1]) | ||||
w3 = self.nodes[0].get_wallet_rpc(wallets[2]) | w3 = self.nodes[0].get_wallet_rpc(wallets[2]) | ||||
w1.walletpassphrase(password, self.rpc_timeout) | w1.walletpassphrase(password, self.rpc_timeout) | ||||
w2.encryptwallet(password) | |||||
w1.sendtoaddress(w2.getnewaddress(), amounts[1]) | w1.sendtoaddress(w2.getnewaddress(), amounts[1]) | ||||
w1.sendtoaddress(w3.getnewaddress(), amounts[2]) | w1.sendtoaddress(w3.getnewaddress(), amounts[2]) | ||||
# Mine a block to confirm; adds a block reward (50 BTC) to the | # Mine a block to confirm; adds a block reward (50 BTC) to the | ||||
# default wallet. | # default wallet. | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.log.info( | self.log.info( | ||||
"Test -getinfo with multiple wallets loaded returns no balance") | |||||
assert_equal(set(self.nodes[0].listwallets()), set(wallets)) | |||||
assert 'balance' not in self.nodes[0].cli( | |||||
'-getinfo').send_cli().keys() | |||||
self.log.info( | |||||
"Test -getinfo with multiple wallets and -rpcwallet returns specified wallet balance") | "Test -getinfo with multiple wallets and -rpcwallet returns specified wallet balance") | ||||
for i in range(len(wallets)): | for i in range(len(wallets)): | ||||
cli_get_info = self.nodes[0].cli( | cli_get_info = self.nodes[0].cli( | ||||
'-getinfo').send_cli('-rpcwallet={}'.format(wallets[i])) | '-getinfo', '-rpcwallet={}'.format(wallets[i])).send_cli() | ||||
assert 'balances' not in cli_get_info.keys() | |||||
assert_equal(cli_get_info['balance'], amounts[i]) | assert_equal(cli_get_info['balance'], amounts[i]) | ||||
self.log.info( | self.log.info( | ||||
"Test -getinfo with multiple wallets and -rpcwallet=non-existing-wallet returns no balance") | "Test -getinfo with multiple wallets and " | ||||
assert 'balance' not in self.nodes[0].cli( | "-rpcwallet=non-existing-wallet returns no balances") | ||||
'-getinfo').send_cli('-rpcwallet=does-not-exist').keys() | cli_get_info_keys = self.nodes[0].cli( | ||||
'-getinfo', '-rpcwallet=does-not-exist').send_cli().keys() | |||||
assert 'balance' not in cli_get_info_keys | |||||
assert 'balances' not in cli_get_info_keys | |||||
self.log.info( | self.log.info( | ||||
"Test -getinfo after unloading all wallets except a non-default one returns its balance") | "Test -getinfo with multiple wallets returns all loaded " | ||||
"wallet names and balances") | |||||
assert_equal(set(self.nodes[0].listwallets()), set(wallets)) | |||||
cli_get_info = self.nodes[0].cli('-getinfo').send_cli() | |||||
assert 'balance' not in cli_get_info.keys() | |||||
assert_equal(cli_get_info['balances'], | |||||
{k: v for k, v in zip(wallets, amounts)}) | |||||
# Unload the default wallet and re-verify. | |||||
self.nodes[0].unloadwallet(wallets[0]) | self.nodes[0].unloadwallet(wallets[0]) | ||||
assert wallets[0] not in self.nodes[0].listwallets() | |||||
cli_get_info = self.nodes[0].cli('-getinfo').send_cli() | |||||
assert 'balance' not in cli_get_info.keys() | |||||
assert_equal(cli_get_info['balances'], | |||||
{k: v for k, v in zip(wallets[1:], amounts[1:])}) | |||||
self.log.info( | |||||
"Test -getinfo after unloading all wallets except a " | |||||
"non-default one returns its balance") | |||||
self.nodes[0].unloadwallet(wallets[2]) | self.nodes[0].unloadwallet(wallets[2]) | ||||
assert_equal(self.nodes[0].listwallets(), [wallets[1]]) | assert_equal(self.nodes[0].listwallets(), [wallets[1]]) | ||||
assert_equal( | |||||
self.nodes[0].cli('-getinfo').send_cli()['balance'], | cli_get_info = self.nodes[0].cli('-getinfo').send_cli() | ||||
amounts[1]) | assert 'balances' not in cli_get_info.keys() | ||||
assert_equal(cli_get_info['balance'], amounts[1]) | |||||
self.log.info( | self.log.info( | ||||
"Test -getinfo -rpcwallet=remaining-non-default-wallet returns its balance") | "Test -getinfo with -rpcwallet=remaining-non-default-wallet" | ||||
assert_equal(self.nodes[0].cli( | " returns only its balance") | ||||
'-getinfo').send_cli('-rpcwallet={}'.format(wallets[1]))['balance'], amounts[1]) | cli_get_info = self.nodes[0].cli( | ||||
'-getinfo', '-rpcwallet={}'.format(wallets[1])).send_cli() | |||||
assert 'balances' not in cli_get_info.keys() | |||||
assert_equal(cli_get_info['balance'], amounts[1]) | |||||
self.log.info( | self.log.info( | ||||
"Test -getinfo with -rpcwallet=unloaded wallet returns no balance") | "Test -getinfo with -rpcwallet=unloaded wallet returns" | ||||
assert 'balance' not in self.nodes[0].cli( | " no balances") | ||||
'-getinfo').send_cli('-rpcwallet={}'.format(wallets[2])).keys() | cli_get_info = self.nodes[0].cli( | ||||
'-getinfo', '-rpcwallet={}'.format(wallets[2])).send_cli() | |||||
assert 'balance' not in cli_get_info_keys | |||||
assert 'balances' not in cli_get_info_keys | |||||
else: | else: | ||||
self.log.info( | self.log.info( | ||||
"*** Wallet not compiled; cli getwalletinfo and -getinfo wallet tests skipped") | "*** Wallet not compiled; cli getwalletinfo and -getinfo wallet tests skipped") | ||||
# maintain block parity with the wallet_compiled conditional branch | # maintain block parity with the wallet_compiled conditional branch | ||||
self.nodes[0].generate(1) | self.nodes[0].generate(1) | ||||
self.log.info("Test -version with node stopped") | self.log.info("Test -version with node stopped") | ||||
self.stop_node(0) | self.stop_node(0) | ||||
Show All 17 Lines |