@@ -538,3 +538,87 @@ where
538538 . collect :: < Vec < _ > > ( )
539539 }
540540}
541+
542+ #[ cfg( test) ]
543+ mod tests {
544+ use super :: OutputSweeper ;
545+ use crate :: fee_estimator:: OnchainFeeEstimator ;
546+ use crate :: test:: utils:: random_storage_path;
547+ use crate :: wallet:: { Wallet , WalletKeysManager } ;
548+
549+ use lightning:: chain:: BestBlock ;
550+ use lightning:: util:: test_utils:: { TestBroadcaster , TestLogger , TestStore } ;
551+ use lightning_transaction_sync:: EsploraSyncClient ;
552+
553+ use bdk:: blockchain:: esplora:: EsploraBlockchain ;
554+ use bdk:: database:: SqliteDatabase ;
555+ use bdk:: template:: Bip84 ;
556+
557+ use bitcoin:: Network ;
558+
559+ use std:: fs;
560+ use std:: sync:: Arc ;
561+
562+ #[ test]
563+ fn test_broadcasting ( ) {
564+ let storage_path = random_storage_path ( ) ;
565+ let seed_bytes = [ 42u8 ; 64 ] ;
566+ let network = Network :: Regtest ;
567+ let logger = Arc :: new ( TestLogger :: new ( ) ) ;
568+ let kv_store = Arc :: new ( TestStore :: new ( false ) ) ;
569+
570+ let genesis_block_hash = bitcoin:: blockdata:: constants:: genesis_block ( network) . block_hash ( ) ;
571+ let best_block = BestBlock :: new ( genesis_block_hash, 0 ) ;
572+
573+ let xprv = bitcoin:: util:: bip32:: ExtendedPrivKey :: new_master ( network, & seed_bytes) . unwrap ( ) ;
574+
575+ fs:: create_dir_all ( storage_path. clone ( ) ) . unwrap ( ) ;
576+ let database_path = format ! ( "{}/bdk_test_wallet.sqlite" , storage_path. display( ) ) ;
577+ let database = SqliteDatabase :: new ( database_path) ;
578+
579+ let bdk_wallet = bdk:: Wallet :: new (
580+ Bip84 ( xprv, bdk:: KeychainKind :: External ) ,
581+ Some ( Bip84 ( xprv, bdk:: KeychainKind :: Internal ) ) ,
582+ network,
583+ database,
584+ )
585+ . unwrap ( ) ;
586+
587+ let tx_sync = Arc :: new ( EsploraSyncClient :: new ( "asdf" . to_string ( ) , Arc :: clone ( & logger) ) ) ;
588+ let esplora_client = tx_sync. client ( ) ;
589+
590+ let broadcaster = Arc :: new ( TestBroadcaster :: new ( network) ) ;
591+ let fee_estimator =
592+ Arc :: new ( OnchainFeeEstimator :: new ( esplora_client. clone ( ) , Arc :: clone ( & logger) ) ) ;
593+
594+ let blockchain = EsploraBlockchain :: from_client ( esplora_client. clone ( ) , 20 ) ;
595+ let wallet = Arc :: new ( Wallet :: new (
596+ blockchain,
597+ bdk_wallet,
598+ Arc :: clone ( & broadcaster) ,
599+ Arc :: clone ( & fee_estimator) ,
600+ Arc :: clone ( & logger) ,
601+ ) ) ;
602+
603+ let ldk_seed_bytes: [ u8 ; 32 ] = xprv. private_key . secret_bytes ( ) ;
604+ let keys_manager = Arc :: new ( WalletKeysManager :: new (
605+ & ldk_seed_bytes,
606+ 0 ,
607+ 1 ,
608+ Arc :: clone ( & wallet) ,
609+ Arc :: clone ( & logger) ,
610+ ) ) ;
611+
612+ let sweeper = OutputSweeper :: new (
613+ Vec :: new ( ) ,
614+ wallet,
615+ broadcaster,
616+ fee_estimator,
617+ keys_manager,
618+ kv_store,
619+ best_block,
620+ Some ( Arc :: clone ( & tx_sync) ) ,
621+ logger,
622+ ) ;
623+ }
624+ }
0 commit comments