Skip to content

Commit c22c68f

Browse files
committed
test(bitcoind_rpc): Detect new mempool txs
1 parent 1039d3c commit c22c68f

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

crates/bitcoind_rpc/tests/test_emitter.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use bdk_chain::{
1111
Balance, BlockId, CanonicalizationParams, IndexedTxGraph, Merge,
1212
};
1313
use bdk_testenv::{anyhow, TestEnv};
14-
use bitcoin::{hashes::Hash, Block, OutPoint, ScriptBuf, WScriptHash};
14+
use bitcoin::{hashes::Hash, Block, Network, OutPoint, ScriptBuf, WScriptHash};
1515
use bitcoincore_rpc::RpcApi;
1616

1717
/// Ensure that blocks are emitted in order even after reorg.
@@ -351,7 +351,7 @@ fn tx_can_become_unconfirmed_after_reorg() -> anyhow::Result<()> {
351351
.get_new_address(None, None)?
352352
.assume_checked();
353353
let spk_to_track = ScriptBuf::new_p2wsh(&WScriptHash::all_zeros());
354-
let addr_to_track = Address::from_script(&spk_to_track, bitcoin::Network::Regtest)?;
354+
let addr_to_track = Address::from_script(&spk_to_track, Network::Regtest)?;
355355

356356
// setup receiver
357357
let (mut recv_chain, _) = LocalChain::from_genesis_hash(env.rpc_client().get_block_hash(0)?);
@@ -868,3 +868,37 @@ fn test_expect_tx_evicted() -> anyhow::Result<()> {
868868

869869
Ok(())
870870
}
871+
872+
#[test]
873+
fn detect_new_mempool_txs() -> anyhow::Result<()> {
874+
let env = TestEnv::new()?;
875+
env.mine_blocks(101, None)?;
876+
877+
let addr = env
878+
.rpc_client()
879+
.get_new_address(None, None)?
880+
.require_network(Network::Regtest)?;
881+
882+
let mut emitter = Emitter::new(
883+
env.rpc_client(),
884+
CheckPoint::new(BlockId {
885+
height: 0,
886+
hash: env.rpc_client().get_block_hash(0)?,
887+
}),
888+
0,
889+
NO_EXPECTED_MEMPOOL_TXIDS,
890+
);
891+
892+
while let Some(_) = emitter.next_block()? {}
893+
894+
for n in 0..5 {
895+
let txid = env.send(&addr, Amount::ONE_BTC)?;
896+
let new_txs = emitter.mempool()?.new_txs;
897+
assert!(
898+
new_txs.iter().any(|(tx, _)| tx.compute_txid() == txid),
899+
"must detect new tx {n}"
900+
);
901+
}
902+
903+
Ok(())
904+
}

0 commit comments

Comments
 (0)