1
1
//! Various unit tests covering acceptance of incoming channels and negotiation of channel types.
2
2
3
- use lightning_types:: features:: ChannelTypeFeatures ;
4
3
use crate :: events:: Event ;
5
4
use 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
+ } ;
7
8
use crate :: prelude:: * ;
8
- use crate :: util:: config:: { ChannelHandshakeConfigUpdate , UserConfig , ChannelConfigOverrides } ;
9
+ use crate :: util:: config:: { ChannelConfigOverrides , ChannelHandshakeConfigUpdate , UserConfig } ;
10
+ use lightning_types:: features:: ChannelTypeFeatures ;
9
11
10
12
#[ test]
11
13
fn test_inbound_anchors_manual_acceptance ( ) {
@@ -47,20 +49,30 @@ fn test_inbound_zero_fee_commitments_acceptance() {
47
49
do_test_manual_inbound_accept_with_override ( zero_fee_cfg, None ) ;
48
50
}
49
51
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 {
53
55
let mut mannual_accept_cfg = start_cfg. clone ( ) ;
54
56
mannual_accept_cfg. manually_accept_inbound_channels = true ;
55
57
56
58
let chanmon_cfgs = create_chanmon_cfgs ( 3 ) ;
57
59
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
+ ) ;
60
65
let nodes = create_network ( 3 , & node_cfgs, & node_chanmgrs) ;
61
66
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
+ ) ;
64
76
65
77
nodes[ 1 ] . node . handle_open_channel ( nodes[ 0 ] . node . get_our_node_id ( ) , & open_channel_msg) ;
66
78
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,
69
81
MessageSendEvent :: HandleError { node_id, action } => {
70
82
assert_eq ! ( * node_id, nodes[ 0 ] . node. get_our_node_id( ) ) ;
71
83
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
+ } ,
74
87
_ => panic ! ( "Unexpected error action" ) ,
75
88
}
76
- }
89
+ } ,
77
90
_ => panic ! ( "Unexpected event" ) ,
78
91
}
79
92
80
93
nodes[ 2 ] . node . handle_open_channel ( nodes[ 0 ] . node . get_our_node_id ( ) , & open_channel_msg) ;
81
94
let events = nodes[ 2 ] . node . get_and_clear_pending_events ( ) ;
82
95
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 ( ) ,
85
105
_ => panic ! ( "Unexpected event" ) ,
86
106
}
87
107
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() {
96
116
anchors_config. channel_handshake_config . negotiate_anchors_zero_fee_htlc_tx = true ;
97
117
anchors_config. manually_accept_inbound_channels = true ;
98
118
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
+ } )
100
122
}
101
123
102
124
#[ test]
@@ -108,34 +130,57 @@ fn test_zero_fee_commitments_downgrade() {
108
130
zero_fee_config. channel_handshake_config . negotiate_anchors_zero_fee_htlc_tx = true ;
109
131
zero_fee_config. manually_accept_inbound_channels = true ;
110
132
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
+ } )
112
136
}
113
137
114
138
fn 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
+ {
116
142
let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
117
143
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 ( ) ) ] ) ;
119
146
let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
120
147
let error_message = "Channel force-closed" ;
121
148
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
+ ) ;
124
158
assert ! ( start_type_set( open_channel_msg. common_fields. channel_type. as_ref( ) . unwrap( ) ) ) ;
125
159
126
160
nodes[ 1 ] . node . handle_open_channel ( nodes[ 0 ] . node . get_our_node_id ( ) , & open_channel_msg) ;
127
161
let events = nodes[ 1 ] . node . get_and_clear_pending_events ( ) ;
128
162
match events[ 0 ] {
129
163
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
+ } ,
132
173
_ => panic ! ( "Unexpected event" ) ,
133
174
}
134
175
135
176
let error_msg = get_err_msg ( & nodes[ 1 ] , & nodes[ 0 ] . node . get_our_node_id ( ) ) ;
136
177
nodes[ 0 ] . node . handle_error ( nodes[ 1 ] . node . get_our_node_id ( ) , & error_msg) ;
137
178
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
+ ) ;
139
184
assert ! ( !start_type_set( open_channel_msg. common_fields. channel_type. as_ref( ) . unwrap( ) ) ) ;
140
185
141
186
// Since nodes[1] should not have accepted the channel, it should
0 commit comments