Skip to content

Commit 694006d

Browse files
test: add int tests for failed & abandoned open
Add integration tests to verify channel open reset and pruning handlers. Tests cover: - channel_open_failed resetting state to allow retry. - channel_open_failed error on invalid state. - channel_open_abandoned pruning all open state. - error handling for nonexistent channels.
1 parent 000c0a3 commit 694006d

File tree

2 files changed

+392
-30
lines changed

2 files changed

+392
-30
lines changed

lightning-liquidity/tests/common/mod.rs

+55-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use lightning::sign::EntropySource;
99

1010
use bitcoin::blockdata::constants::{genesis_block, ChainHash};
1111
use bitcoin::blockdata::transaction::Transaction;
12+
use bitcoin::secp256k1::SecretKey;
1213
use bitcoin::Network;
1314
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
1415
use lightning::chain::{chainmonitor, BestBlock, Confirm};
@@ -34,6 +35,8 @@ use lightning::util::persist::{
3435
SCORER_PERSISTENCE_SECONDARY_NAMESPACE,
3536
};
3637
use lightning::util::test_utils;
38+
use lightning_liquidity::lsps2::client::{LSPS2ClientConfig, LSPS2ClientHandler};
39+
use lightning_liquidity::lsps2::service::{LSPS2ServiceConfig, LSPS2ServiceHandler};
3740
use lightning_liquidity::{LiquidityClientConfig, LiquidityManager, LiquidityServiceConfig};
3841
use lightning_persister::fs_store::FilesystemStore;
3942

@@ -67,7 +70,7 @@ type LockingWrapper<T> = lightning::routing::scoring::MultiThreadedLockableScore
6770
#[cfg(not(c_bindings))]
6871
type LockingWrapper<T> = std::sync::Mutex<T>;
6972

70-
type ChannelManager = channelmanager::ChannelManager<
73+
pub type ChannelManager = channelmanager::ChannelManager<
7174
Arc<ChainMonitor>,
7275
Arc<test_utils::TestBroadcaster>,
7376
Arc<KeysManager>,
@@ -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 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

Comments
 (0)