11//! Various unit tests covering acceptance of incoming channels and negotiation of channel types.
22
3- use lightning_types:: features:: ChannelTypeFeatures ;
43use crate :: events:: Event ;
54use crate :: ln:: functional_test_utils:: * ;
6- use crate :: ln:: msgs:: { BaseMessageHandler , ChannelMessageHandler , AcceptChannel , ErrorAction , MessageSendEvent } ;
5+ use crate :: ln:: msgs:: {
6+ AcceptChannel , BaseMessageHandler , ChannelMessageHandler , ErrorAction , MessageSendEvent ,
7+ } ;
78use crate :: prelude:: * ;
8- use crate :: util:: config:: { ChannelHandshakeConfigUpdate , UserConfig , ChannelConfigOverrides } ;
9+ use crate :: util:: config:: { ChannelConfigOverrides , ChannelHandshakeConfigUpdate , UserConfig } ;
10+ use lightning_types:: features:: ChannelTypeFeatures ;
911
1012#[ test]
1113fn test_inbound_anchors_manual_acceptance ( ) {
@@ -47,20 +49,30 @@ fn test_inbound_zero_fee_commitments_acceptance() {
4749 do_test_manual_inbound_accept_with_override ( zero_fee_cfg, None ) ;
4850}
4951
50- fn do_test_manual_inbound_accept_with_override ( start_cfg : UserConfig ,
51- config_overrides : Option < ChannelConfigOverrides > ) -> AcceptChannel {
52-
52+ fn do_test_manual_inbound_accept_with_override (
53+ start_cfg : UserConfig , config_overrides : Option < ChannelConfigOverrides > ,
54+ ) -> AcceptChannel {
5355 let mut mannual_accept_cfg = start_cfg. clone ( ) ;
5456 mannual_accept_cfg. manually_accept_inbound_channels = true ;
5557
5658 let chanmon_cfgs = create_chanmon_cfgs ( 3 ) ;
5759 let node_cfgs = create_node_cfgs ( 3 , & chanmon_cfgs) ;
58- let node_chanmgrs = create_node_chanmgrs ( 3 , & node_cfgs,
59- & [ Some ( start_cfg. clone ( ) ) , Some ( start_cfg. clone ( ) ) , Some ( mannual_accept_cfg. clone ( ) ) ] ) ;
60+ let node_chanmgrs = create_node_chanmgrs (
61+ 3 ,
62+ & node_cfgs,
63+ & [ Some ( start_cfg. clone ( ) ) , Some ( start_cfg. clone ( ) ) , Some ( mannual_accept_cfg. clone ( ) ) ] ,
64+ ) ;
6065 let nodes = create_network ( 3 , & node_cfgs, & node_chanmgrs) ;
6166
62- nodes[ 0 ] . node . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , 100_000 , 0 , 42 , None , None ) . unwrap ( ) ;
63- let open_channel_msg = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
67+ nodes[ 0 ]
68+ . node
69+ . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , 100_000 , 0 , 42 , None , None )
70+ . unwrap ( ) ;
71+ let open_channel_msg = get_event_msg ! (
72+ nodes[ 0 ] ,
73+ MessageSendEvent :: SendOpenChannel ,
74+ nodes[ 1 ] . node. get_our_node_id( )
75+ ) ;
6476
6577 nodes[ 1 ] . node . handle_open_channel ( nodes[ 0 ] . node . get_our_node_id ( ) , & open_channel_msg) ;
6678 assert ! ( nodes[ 1 ] . node. get_and_clear_pending_events( ) . is_empty( ) ) ;
@@ -69,19 +81,27 @@ fn do_test_manual_inbound_accept_with_override(start_cfg: UserConfig,
6981 MessageSendEvent :: HandleError { node_id, action } => {
7082 assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
7183 match action {
72- ErrorAction :: SendErrorMessage { msg } =>
73- assert_eq ! ( msg. data, "No channels with anchor outputs accepted" . to_owned( ) ) ,
84+ ErrorAction :: SendErrorMessage { msg } => {
85+ assert_eq ! ( msg. data, "No channels with anchor outputs accepted" . to_owned( ) )
86+ } ,
7487 _ => panic ! ( "Unexpected error action" ) ,
7588 }
76- }
89+ } ,
7790 _ => panic ! ( "Unexpected event" ) ,
7891 }
7992
8093 nodes[ 2 ] . node . handle_open_channel ( nodes[ 0 ] . node . get_our_node_id ( ) , & open_channel_msg) ;
8194 let events = nodes[ 2 ] . node . get_and_clear_pending_events ( ) ;
8295 match events[ 0 ] {
83- Event :: OpenChannelRequest { temporary_channel_id, .. } =>
84- nodes[ 2 ] . node . accept_inbound_channel ( & temporary_channel_id, & nodes[ 0 ] . node . get_our_node_id ( ) , 23 , config_overrides) . unwrap ( ) ,
96+ Event :: OpenChannelRequest { temporary_channel_id, .. } => nodes[ 2 ]
97+ . node
98+ . accept_inbound_channel (
99+ & temporary_channel_id,
100+ & nodes[ 0 ] . node . get_our_node_id ( ) ,
101+ 23 ,
102+ config_overrides,
103+ )
104+ . unwrap ( ) ,
85105 _ => panic ! ( "Unexpected event" ) ,
86106 }
87107 get_event_msg ! ( nodes[ 2 ] , MessageSendEvent :: SendAcceptChannel , nodes[ 0 ] . node. get_our_node_id( ) )
@@ -96,7 +116,9 @@ fn test_anchors_zero_fee_htlc_tx_downgrade() {
96116 anchors_config. channel_handshake_config . negotiate_anchors_zero_fee_htlc_tx = true ;
97117 anchors_config. manually_accept_inbound_channels = true ;
98118
99- do_test_channel_type_downgrade ( anchors_config, |features| features. supports_anchors_zero_fee_htlc_tx ( ) )
119+ do_test_channel_type_downgrade ( anchors_config, |features| {
120+ features. supports_anchors_zero_fee_htlc_tx ( )
121+ } )
100122}
101123
102124#[ test]
@@ -108,34 +130,57 @@ fn test_zero_fee_commitments_downgrade() {
108130 zero_fee_config. channel_handshake_config . negotiate_anchors_zero_fee_htlc_tx = true ;
109131 zero_fee_config. manually_accept_inbound_channels = true ;
110132
111- do_test_channel_type_downgrade ( zero_fee_config, |features| features. supports_anchor_zero_fee_commitments ( ) )
133+ do_test_channel_type_downgrade ( zero_fee_config, |features| {
134+ features. supports_anchor_zero_fee_commitments ( )
135+ } )
112136}
113137
114138fn do_test_channel_type_downgrade < F > ( user_cfg : UserConfig , start_type_set : F )
115- where F : Fn ( & ChannelTypeFeatures ) -> bool {
139+ where
140+ F : Fn ( & ChannelTypeFeatures ) -> bool ,
141+ {
116142 let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
117143 let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
118- let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ Some ( user_cfg. clone ( ) ) , Some ( user_cfg. clone ( ) ) ] ) ;
144+ let node_chanmgrs =
145+ create_node_chanmgrs ( 2 , & node_cfgs, & [ Some ( user_cfg. clone ( ) ) , Some ( user_cfg. clone ( ) ) ] ) ;
119146 let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
120147 let error_message = "Channel force-closed" ;
121148
122- nodes[ 0 ] . node . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , 100_000 , 0 , 0 , None , None ) . unwrap ( ) ;
123- let open_channel_msg = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
149+ nodes[ 0 ]
150+ . node
151+ . create_channel ( nodes[ 1 ] . node . get_our_node_id ( ) , 100_000 , 0 , 0 , None , None )
152+ . unwrap ( ) ;
153+ let open_channel_msg = get_event_msg ! (
154+ nodes[ 0 ] ,
155+ MessageSendEvent :: SendOpenChannel ,
156+ nodes[ 1 ] . node. get_our_node_id( )
157+ ) ;
124158 assert ! ( start_type_set( open_channel_msg. common_fields. channel_type. as_ref( ) . unwrap( ) ) ) ;
125159
126160 nodes[ 1 ] . node . handle_open_channel ( nodes[ 0 ] . node . get_our_node_id ( ) , & open_channel_msg) ;
127161 let events = nodes[ 1 ] . node . get_and_clear_pending_events ( ) ;
128162 match events[ 0 ] {
129163 Event :: OpenChannelRequest { temporary_channel_id, .. } => {
130- nodes[ 1 ] . node . force_close_broadcasting_latest_txn ( & temporary_channel_id, & nodes[ 0 ] . node . get_our_node_id ( ) , error_message. to_string ( ) ) . unwrap ( ) ;
131- }
164+ nodes[ 1 ]
165+ . node
166+ . force_close_broadcasting_latest_txn (
167+ & temporary_channel_id,
168+ & nodes[ 0 ] . node . get_our_node_id ( ) ,
169+ error_message. to_string ( ) ,
170+ )
171+ . unwrap ( ) ;
172+ } ,
132173 _ => panic ! ( "Unexpected event" ) ,
133174 }
134175
135176 let error_msg = get_err_msg ( & nodes[ 1 ] , & nodes[ 0 ] . node . get_our_node_id ( ) ) ;
136177 nodes[ 0 ] . node . handle_error ( nodes[ 1 ] . node . get_our_node_id ( ) , & error_msg) ;
137178
138- let open_channel_msg = get_event_msg ! ( nodes[ 0 ] , MessageSendEvent :: SendOpenChannel , nodes[ 1 ] . node. get_our_node_id( ) ) ;
179+ let open_channel_msg = get_event_msg ! (
180+ nodes[ 0 ] ,
181+ MessageSendEvent :: SendOpenChannel ,
182+ nodes[ 1 ] . node. get_our_node_id( )
183+ ) ;
139184 assert ! ( !start_type_set( open_channel_msg. common_fields. channel_type. as_ref( ) . unwrap( ) ) ) ;
140185
141186 // Since nodes[1] should not have accepted the channel, it should
0 commit comments