@@ -4325,3 +4325,84 @@ def test_badparam_discretion(node_factory):
43254325 l1 .rpc .check ('checkrune' , rune = 'THIS IS NOT ACTUALLY A RUNE' )
43264326
43274327 assert err .value .error ['message' ] == "rune: should be base64 string: invalid token '\" THIS IS NOT ACTUALLY A RUNE\" '"
4328+
4329+
4330+ @unittest .skipIf (TEST_NETWORK == 'liquid-regtest' , "P2TR not yet supported on Elements" )
4331+ def test_listaddresses (node_factory ):
4332+ """Test listaddresses command."""
4333+ l1 = node_factory .get_node ()
4334+ addr = []
4335+ for i in range (10 ):
4336+ if i % 3 == 0 :
4337+ addr .append (l1 .rpc .newaddr ('all' )['p2tr' ])
4338+ elif i % 3 == 1 :
4339+ addr .append (l1 .rpc .newaddr ('p2tr' )['p2tr' ])
4340+ else :
4341+ addr .append (l1 .rpc .newaddr ('bech32' )['bech32' ])
4342+
4343+ # Default start and limit (all)
4344+ addresses = l1 .rpc .listaddresses ()["addresses" ]
4345+ assert len (addresses ) == 10
4346+ assert addresses [0 ]['keyidx' ] == 1
4347+ assert addresses [- 1 ]['keyidx' ] == 10
4348+
4349+ # Default limit (till end)
4350+ addresses = l1 .rpc .listaddresses (start = 5 )["addresses" ]
4351+ assert len (addresses ) == 6
4352+ assert addresses [0 ]['keyidx' ] == 5
4353+ assert addresses [- 1 ]['keyidx' ] == 10
4354+
4355+ # Default start
4356+ addresses = l1 .rpc .listaddresses (limit = 5 )["addresses" ]
4357+ assert len (addresses ) == 5
4358+ assert addresses [0 ]['keyidx' ] == 1
4359+ assert addresses [- 1 ]['keyidx' ] == 5
4360+
4361+ # Start and limit
4362+ addresses = l1 .rpc .listaddresses (start = 5 , limit = 2 )["addresses" ]
4363+ assert len (addresses ) == 2
4364+ assert addresses [0 ]['keyidx' ] == 5
4365+ assert addresses [- 1 ]['keyidx' ] == 6
4366+
4367+ # Invalid Address
4368+ with pytest .raises (RpcError , match = 'Could not parse destination address, address should be a valid address' ) as err :
4369+ l1 .rpc .listaddresses (address = "bcrt1q3p9jh7x0907wc0" )
4370+
4371+ assert err .value .error ['code' ] == - 1
4372+ assert err .value .error ['message' ] == "Could not parse destination address, address should be a valid address"
4373+
4374+ # Address search, default start=0, default limit is length of the list
4375+ addresses = l1 .rpc .listaddresses (address = addr [7 ])["addresses" ]
4376+ assert len (addresses ) == 1
4377+ assert addresses [0 ]['keyidx' ] == 8
4378+
4379+ # Address is between start and limit indices
4380+ addresses = l1 .rpc .listaddresses (address = addr [4 ], start = 2 , limit = 4 )["addresses" ]
4381+ assert len (addresses ) == 1
4382+ assert addresses [0 ]['keyidx' ] == 5
4383+
4384+ # Address is not between start and limit indices
4385+ addresses = l1 .rpc .listaddresses (address = addr [9 ], start = 5 , limit = 4 )["addresses" ]
4386+ assert len (addresses ) == 0
4387+
4388+ # Not our Address
4389+ addresses = l1 .rpc .listaddresses (address = "bcrt1q3p9jh7x0mnx8tmx5meapksvcxytlxgwz907wc0" )["addresses" ]
4390+ assert len (addresses ) == 0
4391+
4392+ # Check all fields are present in the response
4393+ addresses = l1 .rpc .listaddresses (address = addr [0 ])["addresses" ]
4394+ assert addresses [0 ]['keyidx' ] == 1
4395+ assert addresses [0 ]['bech32' ] == 'bcrt1qq8adjz4u6enf0cjey9j8yt0y490tact93fzgsf'
4396+ assert addresses [0 ]['p2tr' ] == 'bcrt1pjaazqg6qgqpv2wxgdpg8hyj49wehrfgajqe2tyuzhcp7p50hachq7tkdxf'
4397+
4398+ # start > 10 (issued addresses till now)
4399+ addresses = l1 .rpc .listaddresses (start = 11 , limit = 2 )["addresses" ]
4400+ assert len (addresses ) == 0
4401+
4402+ # limit > bip32_max_index (10)
4403+ addresses = l1 .rpc .listaddresses (start = 8 , limit = 15 )["addresses" ]
4404+ assert len (addresses ) == 3
4405+
4406+ # start and limit from future
4407+ addresses = l1 .rpc .listaddresses (start = 21 , limit = 5 )["addresses" ]
4408+ assert len (addresses ) == 0
0 commit comments