Inline z_listaccounts check in wallet_accounts.py
This commit is contained in:
parent
6af03626de
commit
dcc2a68682
|
@ -30,6 +30,11 @@ class WalletAccountsTest(BitcoinTestFramework):
|
||||||
actual = self.nodes[0].z_listunifiedreceivers(ua)
|
actual = self.nodes[0].z_listunifiedreceivers(ua)
|
||||||
assert_equal(set(expected), set(actual))
|
assert_equal(set(expected), set(actual))
|
||||||
|
|
||||||
|
def check_z_listaccounts(self, node, acct_id, addr_id, ua):
|
||||||
|
accounts = self.nodes[node].z_listaccounts()
|
||||||
|
assert_equal(accounts[acct_id]['addresses'][addr_id]['ua'], ua['address'])
|
||||||
|
assert_equal(accounts[acct_id]['addresses'][addr_id]['diversifier_index'], ua['diversifier_index'])
|
||||||
|
|
||||||
# Check we only have balances in the expected pools.
|
# Check we only have balances in the expected pools.
|
||||||
# Remember that empty pools are omitted from the output.
|
# Remember that empty pools are omitted from the output.
|
||||||
def _check_balance_for_rpc(self, rpcmethod, node, account, expected, minconf):
|
def _check_balance_for_rpc(self, rpcmethod, node, account, expected, minconf):
|
||||||
|
@ -58,16 +63,21 @@ class WalletAccountsTest(BitcoinTestFramework):
|
||||||
# Verify that just creating the account does not generate any visible addresses
|
# Verify that just creating the account does not generate any visible addresses
|
||||||
addresses = self.nodes[0].z_listaddresses()
|
addresses = self.nodes[0].z_listaddresses()
|
||||||
assert_equal([], addresses)
|
assert_equal([], addresses)
|
||||||
|
accounts = self.nodes[0].z_listaccounts()
|
||||||
|
assert_equal(accounts[0]['account'], 0)
|
||||||
|
|
||||||
# The next account will be 1.
|
# The next account will be 1.
|
||||||
account1 = self.nodes[0].z_getnewaccount()
|
account1 = self.nodes[0].z_getnewaccount()
|
||||||
assert_equal(account1['account'], 1)
|
assert_equal(account1['account'], 1)
|
||||||
|
accounts = self.nodes[0].z_listaccounts()
|
||||||
|
assert_equal(accounts[1]['account'], 1)
|
||||||
|
|
||||||
# Generate the first address for account 0.
|
# Generate the first address for account 0.
|
||||||
addr0 = self.nodes[0].z_getaddressforaccount(0)
|
addr0 = self.nodes[0].z_getaddressforaccount(0)
|
||||||
assert_equal(addr0['account'], 0)
|
assert_equal(addr0['account'], 0)
|
||||||
assert_equal(set(addr0['receiver_types']), set(['p2pkh', 'sapling', 'orchard']))
|
assert_equal(set(addr0['receiver_types']), set(['p2pkh', 'sapling', 'orchard']))
|
||||||
ua0 = addr0['address']
|
ua0 = addr0['address']
|
||||||
|
self.check_z_listaccounts(0, 0, 0, addr0)
|
||||||
|
|
||||||
# We pick mnemonic phrases to ensure that we can always generate the default
|
# We pick mnemonic phrases to ensure that we can always generate the default
|
||||||
# address in account 0; this is however not necessarily at diversifier index 0.
|
# address in account 0; this is however not necessarily at diversifier index 0.
|
||||||
|
@ -87,18 +97,21 @@ class WalletAccountsTest(BitcoinTestFramework):
|
||||||
assert_equal(set(addr0_2['receiver_types']), set(['p2pkh', 'sapling', 'orchard']))
|
assert_equal(set(addr0_2['receiver_types']), set(['p2pkh', 'sapling', 'orchard']))
|
||||||
ua0_2 = addr0_2['address']
|
ua0_2 = addr0_2['address']
|
||||||
assert(ua0 != ua0_2)
|
assert(ua0 != ua0_2)
|
||||||
|
self.check_z_listaccounts(0, 0, 1, addr0_2)
|
||||||
|
|
||||||
# We can generate a fully-shielded address.
|
# We can generate a fully-shielded address.
|
||||||
addr0_3 = self.nodes[0].z_getaddressforaccount(0, ['sapling', 'orchard'])
|
addr0_3 = self.nodes[0].z_getaddressforaccount(0, ['sapling', 'orchard'])
|
||||||
assert_equal(addr0_3['account'], 0)
|
assert_equal(addr0_3['account'], 0)
|
||||||
assert_equal(set(addr0_3['receiver_types']), set(['sapling', 'orchard']))
|
assert_equal(set(addr0_3['receiver_types']), set(['sapling', 'orchard']))
|
||||||
ua0_3 = addr0_3['address']
|
ua0_3 = addr0_3['address']
|
||||||
|
self.check_z_listaccounts(0, 0, 2, addr0_3)
|
||||||
|
|
||||||
# We can generate an address without a Sapling receiver.
|
# We can generate an address without a Sapling receiver.
|
||||||
addr0_4 = self.nodes[0].z_getaddressforaccount(0, ['p2pkh', 'orchard'])
|
addr0_4 = self.nodes[0].z_getaddressforaccount(0, ['p2pkh', 'orchard'])
|
||||||
assert_equal(addr0_4['account'], 0)
|
assert_equal(addr0_4['account'], 0)
|
||||||
assert_equal(set(addr0_4['receiver_types']), set(['p2pkh', 'orchard']))
|
assert_equal(set(addr0_4['receiver_types']), set(['p2pkh', 'orchard']))
|
||||||
ua0_4 = addr0_4['address']
|
ua0_4 = addr0_4['address']
|
||||||
|
self.check_z_listaccounts(0, 0, 3, addr0_4)
|
||||||
|
|
||||||
# The first address for account 1 is different to account 0.
|
# The first address for account 1 is different to account 0.
|
||||||
addr1 = self.nodes[0].z_getaddressforaccount(1)
|
addr1 = self.nodes[0].z_getaddressforaccount(1)
|
||||||
|
@ -106,6 +119,7 @@ class WalletAccountsTest(BitcoinTestFramework):
|
||||||
assert_equal(set(addr1['receiver_types']), set(['p2pkh', 'sapling', 'orchard']))
|
assert_equal(set(addr1['receiver_types']), set(['p2pkh', 'sapling', 'orchard']))
|
||||||
ua1 = addr1['address']
|
ua1 = addr1['address']
|
||||||
assert(ua0 != ua1)
|
assert(ua0 != ua1)
|
||||||
|
self.check_z_listaccounts(0, 1, 0, addr1)
|
||||||
|
|
||||||
# The UA contains the expected receiver kinds.
|
# The UA contains the expected receiver kinds.
|
||||||
self.check_receiver_types(ua0, ['p2pkh', 'sapling', 'orchard'])
|
self.check_receiver_types(ua0, ['p2pkh', 'sapling', 'orchard'])
|
||||||
|
@ -145,6 +159,7 @@ class WalletAccountsTest(BitcoinTestFramework):
|
||||||
# Send Sapling funds from the UA.
|
# Send Sapling funds from the UA.
|
||||||
print('Sending account funds to Sapling address')
|
print('Sending account funds to Sapling address')
|
||||||
node1sapling = self.nodes[1].z_getnewaddress('sapling')
|
node1sapling = self.nodes[1].z_getnewaddress('sapling')
|
||||||
|
|
||||||
recipients = [{'address': node1sapling, 'amount': Decimal('1')}]
|
recipients = [{'address': node1sapling, 'amount': Decimal('1')}]
|
||||||
opid = self.nodes[0].z_sendmany(ua0, recipients, 1, 0)
|
opid = self.nodes[0].z_sendmany(ua0, recipients, 1, 0)
|
||||||
txid = wait_and_assert_operationid_status(self.nodes[0], opid)
|
txid = wait_and_assert_operationid_status(self.nodes[0], opid)
|
||||||
|
@ -197,7 +212,10 @@ class WalletAccountsTest(BitcoinTestFramework):
|
||||||
# Send Orchard funds from the UA.
|
# Send Orchard funds from the UA.
|
||||||
print('Sending account funds to Orchard-only UA')
|
print('Sending account funds to Orchard-only UA')
|
||||||
node1account = self.nodes[1].z_getnewaccount()['account']
|
node1account = self.nodes[1].z_getnewaccount()['account']
|
||||||
node1orchard = self.nodes[1].z_getaddressforaccount(node1account, ['orchard'])['address']
|
node1orchard = self.nodes[1].z_getaddressforaccount(node1account, ['orchard'])
|
||||||
|
self.check_z_listaccounts(1, 0, 0, node1orchard)
|
||||||
|
node1orchard = node1orchard['address']
|
||||||
|
|
||||||
recipients = [{'address': node1orchard, 'amount': Decimal('1')}]
|
recipients = [{'address': node1orchard, 'amount': Decimal('1')}]
|
||||||
opid = self.nodes[0].z_sendmany(ua0, recipients, 1, 0)
|
opid = self.nodes[0].z_sendmany(ua0, recipients, 1, 0)
|
||||||
txid = wait_and_assert_operationid_status(self.nodes[0], opid)
|
txid = wait_and_assert_operationid_status(self.nodes[0], opid)
|
||||||
|
|
Loading…
Reference in New Issue