@@ -9,6 +9,7 @@ use lightning::sign::EntropySource;
99
1010use bitcoin:: blockdata:: constants:: { genesis_block, ChainHash } ;
1111use bitcoin:: blockdata:: transaction:: Transaction ;
12+ use bitcoin:: secp256k1:: SecretKey ;
1213use bitcoin:: Network ;
1314use lightning:: chain:: channelmonitor:: ANTI_REORG_DELAY ;
1415use lightning:: chain:: { chainmonitor, BestBlock , Confirm } ;
@@ -34,6 +35,8 @@ use lightning::util::persist::{
3435 SCORER_PERSISTENCE_SECONDARY_NAMESPACE ,
3536} ;
3637use lightning:: util:: test_utils;
38+ use lightning_liquidity:: lsps2:: client:: { LSPS2ClientConfig , LSPS2ClientHandler } ;
39+ use lightning_liquidity:: lsps2:: service:: { LSPS2ServiceConfig , LSPS2ServiceHandler } ;
3740use lightning_liquidity:: { LiquidityClientConfig , LiquidityManager , LiquidityServiceConfig } ;
3841use lightning_persister:: fs_store:: FilesystemStore ;
3942
@@ -487,7 +490,7 @@ pub(crate) fn create_liquidity_node(
487490 }
488491}
489492
490- pub ( crate ) fn create_service_and_client_nodes (
493+ fn create_service_and_client_nodes (
491494 persist_dir : & str , service_config : LiquidityServiceConfig , client_config : LiquidityClientConfig ,
492495) -> ( Node , Node ) {
493496 let persist_temp_path = env:: temp_dir ( ) . join ( persist_dir) ;
@@ -671,3 +674,53 @@ fn advance_chain(node: &mut Node, num_blocks: u32) {
671674 }
672675 }
673676}
677+
678+ pub ( crate ) fn setup_test_lsps2 ( ) -> (
679+ & ' static LSPS2ClientHandler < Arc < KeysManager > > ,
680+ & ' static LSPS2ServiceHandler < Arc < ChannelManager > > ,
681+ bitcoin:: secp256k1:: PublicKey ,
682+ bitcoin:: secp256k1:: PublicKey ,
683+ & ' static Node ,
684+ & ' static Node ,
685+ [ u8 ; 32 ] ,
686+ ) {
687+ let promise_secret = [ 42 ; 32 ] ;
688+ let signing_key = SecretKey :: from_slice ( & promise_secret) . unwrap ( ) ;
689+ let lsps2_service_config = LSPS2ServiceConfig { promise_secret } ;
690+ let service_config = LiquidityServiceConfig {
691+ #[ cfg( lsps1_service) ]
692+ lsps1_service_config : None ,
693+ lsps2_service_config : Some ( lsps2_service_config) ,
694+ advertise_service : true ,
695+ } ;
696+
697+ let lsps2_client_config = LSPS2ClientConfig :: default ( ) ;
698+ let client_config = LiquidityClientConfig {
699+ lsps1_client_config : None ,
700+ lsps2_client_config : Some ( lsps2_client_config) ,
701+ } ;
702+
703+ let ( service_node, client_node) =
704+ create_service_and_client_nodes ( "webhook_registration_flow" , service_config, client_config) ;
705+
706+ // Leak the nodes to extend their lifetime to 'static since this is test code
707+ let service_node = Box :: leak ( Box :: new ( service_node) ) ;
708+ let client_node = Box :: leak ( Box :: new ( client_node) ) ;
709+
710+ let client_handler = client_node. liquidity_manager . lsps2_client_handler ( ) . unwrap ( ) ;
711+ let service_handler = service_node. liquidity_manager . lsps2_service_handler ( ) . unwrap ( ) ;
712+
713+ let secp = bitcoin:: secp256k1:: Secp256k1 :: new ( ) ;
714+ let service_node_id = bitcoin:: secp256k1:: PublicKey :: from_secret_key ( & secp, & signing_key) ;
715+ let client_node_id = client_node. channel_manager . get_our_node_id ( ) ;
716+
717+ (
718+ client_handler,
719+ service_handler,
720+ service_node_id,
721+ client_node_id,
722+ service_node,
723+ client_node,
724+ promise_secret,
725+ )
726+ }
0 commit comments