Skip to content

Commit 67dfb0b

Browse files
committed
test(bitcoind_rpc): Detect new mempool txs
1 parent d9c2b95 commit 67dfb0b

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)?);
@@ -867,3 +867,37 @@ fn test_expect_tx_evicted() -> anyhow::Result<()> {
867867

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

0 commit comments

Comments
 (0)