Skip to content

Commit 8c30b59

Browse files
committed
Add tests for responding to inbound channel reqs
Add functional tests for the cases where the manually_accept_inbound_channels config flag is set to true, and the node operator either accepts or rejects inbound channel requests.
1 parent 366593e commit 8c30b59

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

lightning/src/ln/functional_tests.rs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8174,6 +8174,79 @@ fn test_override_0msat_htlc_minimum() {
81748174
assert_eq!(res.htlc_minimum_msat, 1);
81758175
}
81768176

8177+
#[test]
8178+
fn test_manually_accept_inbound_channel_request() {
8179+
let mut manually_accept_conf = UserConfig::default();
8180+
manually_accept_conf.manually_accept_inbound_channels = true;
8181+
let chanmon_cfgs = create_chanmon_cfgs(2);
8182+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
8183+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(manually_accept_conf.clone())]);
8184+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
8185+
8186+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, Some(manually_accept_conf)).unwrap();
8187+
let mut res = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
8188+
8189+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &res);
8190+
8191+
// Assert that node[1] has no MessageSendEvent::SendAcceptChannel in the msg_events before accepting the inbound request
8192+
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
8193+
8194+
let events = nodes[1].node.get_and_clear_pending_events();
8195+
match events[0] {
8196+
Event::OpenChannelRequest { temporary_channel_id, .. } => {
8197+
nodes[1].node.accept_inbound_channel(&temporary_channel_id).unwrap();
8198+
}
8199+
_ => panic!("Unexpected event"),
8200+
}
8201+
8202+
let accept_msg_ev = nodes[1].node.get_and_clear_pending_msg_events();
8203+
assert_eq!(accept_msg_ev.len(), 1);
8204+
8205+
match accept_msg_ev[0] {
8206+
MessageSendEvent::SendAcceptChannel { ref node_id, .. } => {
8207+
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
8208+
}
8209+
_ => panic!("Unexpected event"),
8210+
}
8211+
}
8212+
8213+
#[test]
8214+
fn test_manually_reject_inbound_channel_request() {
8215+
let mut manually_accept_conf = UserConfig::default();
8216+
manually_accept_conf.manually_accept_inbound_channels = true;
8217+
let chanmon_cfgs = create_chanmon_cfgs(2);
8218+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
8219+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(manually_accept_conf.clone())]);
8220+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
8221+
8222+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, Some(manually_accept_conf)).unwrap();
8223+
let mut res = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
8224+
8225+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &res);
8226+
8227+
// Assert that node[1] has no MessageSendEvent::SendAcceptChannel in the msg_events before rejecting the inbound request
8228+
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
8229+
8230+
let events = nodes[1].node.get_and_clear_pending_events();
8231+
match events[0] {
8232+
Event::OpenChannelRequest { temporary_channel_id, .. } => {
8233+
nodes[1].node.force_close_channel(&temporary_channel_id).unwrap();
8234+
}
8235+
_ => panic!("Unexpected event"),
8236+
}
8237+
8238+
let close_msg_ev = nodes[1].node.get_and_clear_pending_msg_events();
8239+
assert_eq!(close_msg_ev.len(), 1);
8240+
8241+
match close_msg_ev[0] {
8242+
MessageSendEvent::HandleError { ref node_id, .. } => {
8243+
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
8244+
}
8245+
_ => panic!("Unexpected event"),
8246+
}
8247+
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed);
8248+
}
8249+
81778250
#[test]
81788251
fn test_simple_mpp() {
81798252
// Simple test of sending a multi-path payment.

0 commit comments

Comments
 (0)