Skip to content

Commit

Permalink
test: rpc: add no address case for getdescriptoractivity
Browse files Browse the repository at this point in the history
Co-authored-by: Greg Sanders <[email protected]>
  • Loading branch information
jamesob and instagibbs committed Nov 22, 2024
1 parent 7822a42 commit 2d60eed
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 additions & 1 deletion test/functional/rpc_getdescriptoractivity.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, assert_raises_rpc_error, assert_is_hex_string
from test_framework.messages import COIN
from test_framework.wallet import MiniWallet, getnewdestination
from test_framework.wallet import MiniWallet, MiniWalletMode, getnewdestination


class GetBlocksActivityTest(BitcoinTestFramework):
Expand All @@ -30,6 +30,7 @@ def run_test(self):
self.test_invalid_descriptor(node, wallet)
self.test_confirmed_and_unconfirmed(node, wallet)
self.test_receive_then_spend(node, wallet)
self.test_no_address(node, wallet)

def test_no_activity(self, node):
_, _, addr_1 = getnewdestination()
Expand Down Expand Up @@ -192,6 +193,34 @@ def test_receive_then_spend(self, node, wallet):
assert_equal(result, node.getdescriptoractivity(
[blockhash_1, blockhash_2, blockhash_2], [wallet.get_descriptor()], True))

def test_no_address(self, node, wallet):
raw_wallet = MiniWallet(self.nodes[0], mode=MiniWalletMode.RAW_P2PK)
raw_wallet.generate(100, invalid_call=False)

no_addr_tx = raw_wallet.send_self_transfer(from_node=node)
raw_desc = raw_wallet.get_descriptor()

blockhash = self.generate(node, 1)[0]

result = node.getdescriptoractivity([blockhash], [raw_desc], False)

assert_equal(len(result['activity']), 2)

a1 = result['activity'][0]
a2 = result['activity'][1]

assert a1['type'] == "spend"
assert a1['blockhash'] == blockhash
# sPK lacks address.
assert_equal(list(a1['prevout_spk'].keys()), ['asm', 'desc', 'hex', 'type'])
assert a1['amount'] == no_addr_tx["fee"] + Decimal(no_addr_tx["tx"].vout[0].nValue) / COIN

assert a2['type'] == "receive"
assert a2['blockhash'] == blockhash
# sPK lacks address.
assert_equal(list(a2['output_spk'].keys()), ['asm', 'desc', 'hex', 'type'])
assert a2['amount'] == Decimal(no_addr_tx["tx"].vout[0].nValue) / COIN


if __name__ == '__main__':
GetBlocksActivityTest(__file__).main()

0 comments on commit 2d60eed

Please sign in to comment.