Skip to content

Commit 88c2ea0

Browse files
Pass supported_protocols to LSPS0 instead of empty vec
1 parent 18eb30b commit 88c2ea0

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

lightning-liquidity/src/manager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ where {
235235
);
236236

237237
let lsps0_service_handler = if service_config.is_some() {
238-
Some(LSPS0ServiceHandler::new(vec![], Arc::clone(&pending_messages)))
238+
Some(LSPS0ServiceHandler::new(supported_protocols, Arc::clone(&pending_messages)))
239239
} else {
240240
None
241241
};
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#![cfg(all(test, feature = "std"))]
2+
3+
mod common;
4+
5+
use common::{create_service_and_client_nodes, get_lsps_message};
6+
7+
use lightning_liquidity::events::LiquidityEvent;
8+
use lightning_liquidity::lsps0::event::LSPS0ClientEvent;
9+
#[cfg(lsps1_service)]
10+
use lightning_liquidity::lsps1::client::LSPS1ClientConfig;
11+
#[cfg(lsps1_service)]
12+
use lightning_liquidity::lsps1::service::LSPS1ServiceConfig;
13+
use lightning_liquidity::lsps2::client::LSPS2ClientConfig;
14+
use lightning_liquidity::lsps2::service::LSPS2ServiceConfig;
15+
use lightning_liquidity::{LiquidityClientConfig, LiquidityServiceConfig};
16+
17+
use lightning::ln::peer_handler::CustomMessageHandler;
18+
19+
#[test]
20+
fn list_protocols_integration_test() {
21+
let promise_secret = [42; 32];
22+
let lsps2_service_config = LSPS2ServiceConfig { promise_secret };
23+
#[cfg(lsps1_service)]
24+
let lsps1_service_config = LSPS1ServiceConfig { supported_options: None, token: None };
25+
let service_config = LiquidityServiceConfig {
26+
#[cfg(lsps1_service)]
27+
lsps1_service_config,
28+
lsps2_service_config: Some(lsps2_service_config),
29+
advertise_service: true,
30+
};
31+
32+
let lsps2_client_config = LSPS2ClientConfig::default();
33+
#[cfg(lsps1_service)]
34+
let lsps1_client_config: LSPS1ClientConfig = LSPS1ClientConfig { max_channel_fees_msat: None };
35+
let client_config = LiquidityClientConfig {
36+
#[cfg(lsps1_service)]
37+
lsps1_client_config: Some(lsps1_client_config),
38+
#[cfg(not(lsps1_service))]
39+
lsps1_client_config: None,
40+
lsps2_client_config: Some(lsps2_client_config),
41+
};
42+
43+
let (service_node, client_node) = create_service_and_client_nodes(
44+
"list_protocols_integration_test",
45+
service_config,
46+
client_config,
47+
);
48+
49+
let service_node_id = service_node.channel_manager.get_our_node_id();
50+
51+
let client_handler = client_node.liquidity_manager.lsps0_client_handler();
52+
let client_node_id = client_node.channel_manager.get_our_node_id();
53+
54+
let _ = client_handler.list_protocols(&service_node_id);
55+
let list_protocols_request = get_lsps_message!(client_node, service_node_id);
56+
57+
service_node
58+
.liquidity_manager
59+
.handle_custom_message(list_protocols_request, client_node_id)
60+
.unwrap();
61+
62+
let list_protocols_response = get_lsps_message!(service_node, client_node_id);
63+
64+
client_node
65+
.liquidity_manager
66+
.handle_custom_message(list_protocols_response, client_node_id)
67+
.unwrap();
68+
69+
let list_protocols_event = client_node.liquidity_manager.next_event().unwrap();
70+
match list_protocols_event {
71+
LiquidityEvent::LSPS0Client(LSPS0ClientEvent::ListProtocolsResponse {
72+
counterparty_node_id,
73+
protocols,
74+
}) => {
75+
assert_eq!(counterparty_node_id, client_node_id);
76+
#[cfg(lsps1_service)]
77+
{
78+
assert!(protocols.contains(&1));
79+
assert!(protocols.contains(&2));
80+
assert_eq!(protocols.len(), 2);
81+
}
82+
83+
#[cfg(not(lsps1_service))]
84+
assert_eq!(protocols, vec![2]);
85+
},
86+
_ => panic!("Unexpected event"),
87+
}
88+
}

0 commit comments

Comments
 (0)