@@ -690,9 +690,11 @@ fn chain_update(
690
690
#[ cfg( test) ]
691
691
mod test {
692
692
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 ;
696
698
use std:: sync:: Arc ;
697
699
698
700
#[ cfg( feature = "default" ) ]
@@ -725,4 +727,34 @@ mod test {
725
727
// Ensure that the txouts are empty.
726
728
assert_eq ! ( tx_update. txouts, BTreeMap :: default ( ) ) ;
727
729
}
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
+ }
728
760
}
0 commit comments