@@ -538,3 +538,87 @@ where
538
538
. collect :: < Vec < _ > > ( )
539
539
}
540
540
}
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