Skip to content

Commit 1be007b

Browse files
committed
tests: Add sanity tests for ChannelOpens
1 parent e65e03f commit 1be007b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

src/ln/functional_tests.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,45 @@ use rand::{thread_rng, Rng};
4747

4848
use ln::functional_test_utils::*;
4949

50+
#[test]
51+
fn test_insane_channel_opens() {
52+
let nodes = create_network(2, &[None, None]);
53+
54+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 100000000, 42).unwrap();
55+
56+
let open_channel_message = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
57+
58+
let insane_open_helper = |expected_error_str, message_mutator: fn(msgs::OpenChannel) -> msgs::OpenChannel| {
59+
match &nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), LocalFeatures::new(), &message_mutator(open_channel_message.clone())) {
60+
Err(msgs::HandleError{ err: expected_error_str, action: Some(msgs::ErrorAction::SendErrorMessage {..})}) => {},
61+
Err(msgs::HandleError{ err: _, action: Some(msgs::ErrorAction::SendErrorMessage {..})}) => {panic!("unexpected HandleError string")},
62+
Err(_) => { panic!("unexpected Err")}
63+
_ => panic!("insane OpenChannel message was somehow Ok"),
64+
}
65+
};
66+
67+
use ln::channel::MAX_FUNDING_SATOSHIS;
68+
use ln::channelmanager::MAX_LOCAL_BREAKDOWN_TIMEOUT;
69+
70+
insane_open_helper("funding value > 2^24", |mut msg| { msg.funding_satoshis = MAX_FUNDING_SATOSHIS; msg });
71+
72+
insane_open_helper("Bogus channel_reserve_satoshis", |mut msg| { msg.channel_reserve_satoshis = msg.funding_satoshis + 1; msg });
73+
74+
insane_open_helper("push_msat larger than funding value", |mut msg| { msg.push_msat = (msg.funding_satoshis - msg.channel_reserve_satoshis) * 1000 + 1; msg });
75+
76+
insane_open_helper("Peer never wants payout outputs?", |mut msg| { msg.dust_limit_satoshis = msg.funding_satoshis + 1 ; msg });
77+
78+
insane_open_helper("Bogus; channel reserve is less than dust limit", |mut msg| { msg.dust_limit_satoshis = msg.channel_reserve_satoshis + 1; msg });
79+
80+
insane_open_helper("Minimum htlc value is full channel value", |mut msg| { msg.htlc_minimum_msat = (msg.funding_satoshis - msg.channel_reserve_satoshis) * 1000; msg });
81+
82+
insane_open_helper("They wanted our payments to be delayed by a needlessly long period", |mut msg| { msg.to_self_delay = MAX_LOCAL_BREAKDOWN_TIMEOUT + 1; msg });
83+
84+
insane_open_helper("0 max_accpted_htlcs makes for a useless channel", |mut msg| { msg.max_accepted_htlcs = 0; msg });
85+
86+
insane_open_helper("max_accpted_htlcs > 483", |mut msg| { msg.max_accepted_htlcs = 484; msg });
87+
}
88+
5089
#[test]
5190
fn test_async_inbound_update_fee() {
5291
let mut nodes = create_network(2, &[None, None]);

0 commit comments

Comments
 (0)