From b8a99b6324aa7c0df899db7078308a56a0fea7d5 Mon Sep 17 00:00:00 2001 From: Shook Date: Fri, 14 Jun 2024 15:47:32 +0800 Subject: [PATCH] test: add test case where changeIndex == 0 and outputs.length > 0 --- packages/btc/tests/Transaction.test.ts | 48 +++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/btc/tests/Transaction.test.ts b/packages/btc/tests/Transaction.test.ts index 422e20cd..7c7f8e18 100644 --- a/packages/btc/tests/Transaction.test.ts +++ b/packages/btc/tests/Transaction.test.ts @@ -885,7 +885,7 @@ describe('Transaction', () => { }); }); - describe('sendRbf()', () => { + describe.skip('sendRbf()', () => { it('Full RBF', async () => { /** * TX_1, feeRate=minimumFee/2 @@ -1029,6 +1029,52 @@ describe('Transaction', () => { feeRate: expectFeeRate2, }); }, 0); + it('Full RBF with changeIndex, outputs.length != changeIndex + 1', async () => { + /** + * TX_1, feeRate=1 + */ + const feeRates = await service.getBtcRecommendedFeeRates(); + const expectFeeRate = Math.max(Math.round(feeRates.minimumFee / 2), 1); + const psbt = await sendBtc({ + from: accounts.charlie.p2wpkh.address, + tos: [ + { + address: accounts.charlie.p2wpkh.address, + value: 3000, + }, + ], + feeRate: expectFeeRate, + source, + }); + const { txHex } = await signAndBroadcastPsbt({ + psbt, + account: accounts.charlie, + feeRate: expectFeeRate, + }); + + /** + * Wait for 2 seconds + */ + await waitFor(2000); + console.log('---'); + + /** + * TX_2, feeRate=fastestFee + */ + const expectFeeRate2 = Math.max(feeRates.fastestFee, expectFeeRate + 1); + const psbt2 = await sendRbf({ + txHex: txHex, + from: accounts.charlie.p2wpkh.address, + feeRate: expectFeeRate2, + changeIndex: 0, + source, + }); + await signAndBroadcastPsbt({ + psbt: psbt2, + account: accounts.charlie, + feeRate: expectFeeRate2, + }); + }, 0); it('Try Full RBF with invalid change', async () => { /** * TX_1, feeRate=1