Skip to content

Commit 9ecf265

Browse files
Eunovomacgyver13
andcommitted
tests: silent-payments wallet coin control
Co-authored-by: macgyver13 <4712150+macgyver13@users.noreply.github.com>
1 parent 9f5f762 commit 9ecf265

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

test/functional/wallet_silentpayments_receiving.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,50 @@ def test_addressinfo(addr):
325325
test_addressinfo(wallet.getnewaddress(address_type="silent-payments"))
326326
test_addressinfo(wallet.getrawchangeaddress(address_type="silent-payments"))
327327

328+
def test_coincontrol(self):
329+
self.log.info("Testing Silent Payments wallet coin control")
330+
331+
node = self.nodes[0]
332+
node.createwallet("sender", silent_payments=True)
333+
node.createwallet("receiver", silent_payments=True)
334+
335+
sender = node.get_wallet_rpc("sender")
336+
receiver = node.get_wallet_rpc("receiver")
337+
338+
# Create multiple UTXOs
339+
for _ in range(3):
340+
self.generatetoaddress(node, 50, sender.getnewaddress())
341+
342+
sp_addr = receiver.getnewaddress(address_type="silent-payments")
343+
344+
# Get specific UTXO to use
345+
unspent = sender.listunspent()
346+
347+
# select utxos to spend
348+
inputs = []
349+
TOTAL_SPEND = 10
350+
total_amount_selected = 0
351+
for utxo in unspent:
352+
if total_amount_selected > TOTAL_SPEND:
353+
break
354+
inputs.append({"txid": utxo["txid"], "vout": utxo["vout"]})
355+
total_amount_selected += utxo["amount"]
356+
357+
options = {
358+
"inputs": inputs,
359+
"add_to_wallet": True
360+
}
361+
362+
result = sender.send(outputs={sp_addr: TOTAL_SPEND}, options=options)
363+
assert result["txid"]
364+
365+
# Verify transaction used the selected input
366+
raw_tx = receiver.getrawtransaction(result["txid"], True)
367+
assert any(vin["txid"] == input["txid"] and
368+
vin["vout"] == input["vout"]
369+
for vin in raw_tx["vin"]
370+
for input in inputs)
371+
328372
def run_test(self):
329373
self.def_wallet = self.nodes[0].get_wallet_rpc(self.default_wallet_name)
330374
self.generate(self.nodes[0], 102)
@@ -339,6 +383,7 @@ def run_test(self):
339383
self.test_createwallet_descriptor()
340384
self.test_backup_and_restore()
341385
self.test_getaddressinfo()
386+
self.test_coincontrol()
342387

343388

344389

0 commit comments

Comments
 (0)