Skip to content

Commit b24ae6d

Browse files
committed
test(electrum): test sync with incorrect network
1 parent 0fdbe9d commit b24ae6d

File tree

1 file changed

+35
-3
lines changed

1 file changed

+35
-3
lines changed

crates/electrum/src/bdk_electrum_client.rs

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -690,9 +690,11 @@ fn chain_update(
690690
#[cfg(test)]
691691
mod test {
692692
use crate::{bdk_electrum_client::TxUpdate, BdkElectrumClient};
693-
use bdk_chain::bitcoin::{OutPoint, Transaction, TxIn};
694-
use bdk_core::collections::BTreeMap;
695-
use bdk_testenv::{utils::new_tx, TestEnv};
693+
use bdk_chain::bitcoin::{constants, Network, OutPoint, ScriptBuf, Transaction, TxIn};
694+
use bdk_chain::{BlockId, CheckPoint};
695+
use bdk_core::{collections::BTreeMap, spk_client::SyncRequest};
696+
use bdk_testenv::{anyhow, utils::new_tx, TestEnv};
697+
use electrum_client::Error as ElectrumError;
696698
use std::sync::Arc;
697699

698700
#[cfg(feature = "default")]
@@ -725,4 +727,34 @@ mod test {
725727
// Ensure that the txouts are empty.
726728
assert_eq!(tx_update.txouts, BTreeMap::default());
727729
}
730+
731+
#[cfg(feature = "default")]
732+
#[test]
733+
fn test_sync_wrong_network_error() -> anyhow::Result<()> {
734+
let env = TestEnv::new()?;
735+
let client = electrum_client::Client::new(env.electrsd.electrum_url.as_str()).unwrap();
736+
let electrum_client = BdkElectrumClient::new(client);
737+
738+
let _ = env.mine_blocks(1, None).unwrap();
739+
740+
let bogus_spks: Vec<ScriptBuf> = Vec::new();
741+
let bogus_genesis = constants::genesis_block(Network::Testnet).block_hash();
742+
let bogus_cp = CheckPoint::new(BlockId {
743+
height: 0,
744+
hash: bogus_genesis,
745+
});
746+
747+
let req = SyncRequest::builder()
748+
.chain_tip(bogus_cp)
749+
.spks(bogus_spks)
750+
.build();
751+
let err = electrum_client.sync(req, 1, false).unwrap_err();
752+
753+
assert!(
754+
matches!(err, ElectrumError::Message(m) if m.contains("cannot find agreement block with server")),
755+
"expected missing agreement block error"
756+
);
757+
758+
Ok(())
759+
}
728760
}

0 commit comments

Comments
 (0)