|
| 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