From: Wei Chen Date: Sun, 13 Jul 2025 18:42:42 +0000 (+0000) Subject: test(electrum): test sync with incorrect network X-Git-Tag: bitcoind_rpc-0.21.0~9^2 X-Git-Url: http://internal-gitweb-vhost/?a=commitdiff_plain;h=b24ae6d71815e268417034fda44f2d57325f6166;p=bdk test(electrum): test sync with incorrect network --- diff --git a/crates/electrum/src/bdk_electrum_client.rs b/crates/electrum/src/bdk_electrum_client.rs index 672cf93b..d277c6f7 100644 --- a/crates/electrum/src/bdk_electrum_client.rs +++ b/crates/electrum/src/bdk_electrum_client.rs @@ -690,9 +690,11 @@ fn chain_update( #[cfg(test)] mod test { use crate::{bdk_electrum_client::TxUpdate, BdkElectrumClient}; - use bdk_chain::bitcoin::{OutPoint, Transaction, TxIn}; - use bdk_core::collections::BTreeMap; - use bdk_testenv::{utils::new_tx, TestEnv}; + use bdk_chain::bitcoin::{constants, Network, OutPoint, ScriptBuf, Transaction, TxIn}; + use bdk_chain::{BlockId, CheckPoint}; + use bdk_core::{collections::BTreeMap, spk_client::SyncRequest}; + use bdk_testenv::{anyhow, utils::new_tx, TestEnv}; + use electrum_client::Error as ElectrumError; use std::sync::Arc; #[cfg(feature = "default")] @@ -725,4 +727,34 @@ mod test { // Ensure that the txouts are empty. assert_eq!(tx_update.txouts, BTreeMap::default()); } + + #[cfg(feature = "default")] + #[test] + fn test_sync_wrong_network_error() -> anyhow::Result<()> { + let env = TestEnv::new()?; + let client = electrum_client::Client::new(env.electrsd.electrum_url.as_str()).unwrap(); + let electrum_client = BdkElectrumClient::new(client); + + let _ = env.mine_blocks(1, None).unwrap(); + + let bogus_spks: Vec = Vec::new(); + let bogus_genesis = constants::genesis_block(Network::Testnet).block_hash(); + let bogus_cp = CheckPoint::new(BlockId { + height: 0, + hash: bogus_genesis, + }); + + let req = SyncRequest::builder() + .chain_tip(bogus_cp) + .spks(bogus_spks) + .build(); + let err = electrum_client.sync(req, 1, false).unwrap_err(); + + assert!( + matches!(err, ElectrumError::Message(m) if m.contains("cannot find agreement block with server")), + "expected missing agreement block error" + ); + + Ok(()) + } }