@@ -9,6 +9,7 @@ use lightning::sign::EntropySource;
9
9
10
10
use bitcoin::blockdata::constants::{genesis_block, ChainHash};
11
11
use bitcoin::blockdata::transaction::Transaction;
12
+ use bitcoin::secp256k1::SecretKey;
12
13
use bitcoin::Network;
13
14
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
14
15
use lightning::chain::{chainmonitor, BestBlock, Confirm};
@@ -34,6 +35,8 @@ use lightning::util::persist::{
34
35
SCORER_PERSISTENCE_SECONDARY_NAMESPACE,
35
36
};
36
37
use lightning::util::test_utils;
38
+ use lightning_liquidity::lsps2::client::{LSPS2ClientConfig, LSPS2ClientHandler};
39
+ use lightning_liquidity::lsps2::service::{LSPS2ServiceConfig, LSPS2ServiceHandler};
37
40
use lightning_liquidity::{LiquidityClientConfig, LiquidityManager, LiquidityServiceConfig};
38
41
use lightning_persister::fs_store::FilesystemStore;
39
42
@@ -67,7 +70,7 @@ type LockingWrapper<T> = lightning::routing::scoring::MultiThreadedLockableScore
67
70
#[cfg(not(c_bindings))]
68
71
type LockingWrapper<T> = std::sync::Mutex<T>;
69
72
70
- type ChannelManager = channelmanager::ChannelManager<
73
+ pub type ChannelManager = channelmanager::ChannelManager<
71
74
Arc<ChainMonitor>,
72
75
Arc<test_utils::TestBroadcaster>,
73
76
Arc<KeysManager>,
@@ -487,7 +490,7 @@ pub(crate) fn create_liquidity_node(
487
490
}
488
491
}
489
492
490
- pub(crate) fn create_service_and_client_nodes(
493
+ fn create_service_and_client_nodes(
491
494
persist_dir: &str, service_config: LiquidityServiceConfig, client_config: LiquidityClientConfig,
492
495
) -> (Node, Node) {
493
496
let persist_temp_path = env::temp_dir().join(persist_dir);
@@ -671,3 +674,53 @@ fn advance_chain(node: &mut Node, num_blocks: u32) {
671
674
}
672
675
}
673
676
}
677
+
678
+ pub 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