Skip to content

Commit 41ec78a

Browse files
committed
Move and fix test.
1 parent 6ec1d0a commit 41ec78a

File tree

2 files changed

+102
-99
lines changed

2 files changed

+102
-99
lines changed

lightning/src/ln/functional_tests.rs

Lines changed: 1 addition & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use ln::channel::{Channel, ChannelError};
2424
use ln::{chan_utils, onion_utils};
2525
use ln::chan_utils::{htlc_success_tx_weight, htlc_timeout_tx_weight, HTLCOutputInCommitment};
2626
use routing::router::{PaymentParameters, Route, RouteHop, RouteParameters, find_route, get_route};
27-
use ln::features::{ChannelFeatures, ChannelTypeFeatures, InitFeatures, InvoiceFeatures, NodeFeatures};
27+
use ln::features::{ChannelFeatures, InitFeatures, InvoiceFeatures, NodeFeatures};
2828
use ln::msgs;
2929
use ln::msgs::{ChannelMessageHandler, RoutingMessageHandler, OptionalField, ErrorAction};
3030
use util::enforcing_trait_impls::EnforcingSigner;
@@ -10057,99 +10057,3 @@ fn test_max_dust_htlc_exposure() {
1005710057
do_test_max_dust_htlc_exposure(false, ExposureEvent::AtUpdateFeeOutbound, false);
1005810058
do_test_max_dust_htlc_exposure(false, ExposureEvent::AtUpdateFeeOutbound, true);
1005910059
}
10060-
10061-
#[test]
10062-
fn test_zero_conf_accept_reject() {
10063-
let mut channel_type_features = ChannelTypeFeatures::only_static_remote_key();
10064-
channel_type_features.set_zero_conf_required();
10065-
10066-
// 1. Check we reject zero conf channels by default
10067-
let chanmon_cfgs = create_chanmon_cfgs(2);
10068-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
10069-
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
10070-
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
10071-
10072-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
10073-
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
10074-
10075-
open_channel_msg.channel_type = Some(channel_type_features.clone());
10076-
10077-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &open_channel_msg);
10078-
10079-
let msg_events = nodes[1].node.get_and_clear_pending_msg_events();
10080-
match msg_events[0] {
10081-
MessageSendEvent::HandleError { action: ErrorAction::SendErrorMessage { ref msg, .. }, .. } => {
10082-
assert_eq!(msg.data, "No zero confirmation channels accepted".to_owned());
10083-
},
10084-
_ => panic!(),
10085-
}
10086-
10087-
// 2. Check we can manually accept zero conf channels via the right method
10088-
let mut manually_accept_conf = UserConfig::default();
10089-
manually_accept_conf.manually_accept_inbound_channels = true;
10090-
10091-
let chanmon_cfgs = create_chanmon_cfgs(2);
10092-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
10093-
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs,
10094-
&[None, Some(manually_accept_conf.clone())]);
10095-
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
10096-
10097-
// 2.1 First try the non-0conf method to manually accept
10098-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42,
10099-
Some(manually_accept_conf)).unwrap();
10100-
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel,
10101-
nodes[1].node.get_our_node_id());
10102-
10103-
open_channel_msg.channel_type = Some(channel_type_features.clone());
10104-
10105-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(),
10106-
&open_channel_msg);
10107-
10108-
// Assert that `nodes[1]` has no `MessageSendEvent::SendAcceptChannel` in the `msg_events`.
10109-
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
10110-
10111-
let events = nodes[1].node.get_and_clear_pending_events();
10112-
10113-
match events[0] {
10114-
Event::OpenChannelRequest { temporary_channel_id, .. } => {
10115-
// Assert we fail to accept via the non-0conf method
10116-
assert!(nodes[1].node.accept_inbound_channel(&temporary_channel_id,
10117-
&nodes[0].node.get_our_node_id(), 0).is_err());
10118-
},
10119-
_ => panic!(),
10120-
}
10121-
10122-
let msg_events = nodes[1].node.get_and_clear_pending_msg_events();
10123-
match msg_events[0] {
10124-
MessageSendEvent::HandleError { action: ErrorAction::SendErrorMessage { ref msg, .. }, .. } => {
10125-
assert_eq!(msg.data, "No zero confirmation channels accepted".to_owned());
10126-
},
10127-
_ => panic!(),
10128-
}
10129-
10130-
// 2.2 Try again with the 0conf method to manually accept
10131-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42,
10132-
Some(manually_accept_conf)).unwrap();
10133-
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel,
10134-
nodes[1].node.get_our_node_id());
10135-
10136-
open_channel_msg.channel_type = Some(channel_type_features);
10137-
10138-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(),
10139-
&open_channel_msg);
10140-
10141-
let events = nodes[1].node.get_and_clear_pending_events();
10142-
10143-
match events[0] {
10144-
Event::OpenChannelRequest { temporary_channel_id, .. } => {
10145-
// Assert we can accept via the 0conf method
10146-
assert!(nodes[1].node.accept_inbound_channel_from_trusted_peer_0conf(
10147-
&temporary_channel_id, &nodes[0].node.get_our_node_id(), 0).is_ok());
10148-
},
10149-
_ => panic!(),
10150-
}
10151-
10152-
// Don't handle remaining events
10153-
nodes[1].node.get_and_clear_pending_msg_events();
10154-
nodes[1].node.get_and_clear_pending_events();
10155-
}

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 101 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ use chain::keysinterface::{Recipient, KeysInterface};
1717
use ln::channelmanager::{ChannelManager, ChannelManagerReadArgs, MIN_CLTV_EXPIRY_DELTA};
1818
use routing::network_graph::RoutingFees;
1919
use routing::router::{PaymentParameters, RouteHint, RouteHintHop};
20-
use ln::features::{InitFeatures, InvoiceFeatures};
20+
use ln::features::{InitFeatures, InvoiceFeatures, ChannelTypeFeatures};
2121
use ln::msgs;
22-
use ln::msgs::{ChannelMessageHandler, RoutingMessageHandler, OptionalField, ChannelUpdate};
22+
use ln::msgs::{ChannelMessageHandler, RoutingMessageHandler, OptionalField, ChannelUpdate, ErrorAction};
2323
use ln::wire::Encode;
2424
use util::enforcing_trait_impls::EnforcingSigner;
2525
use util::events::{ClosureReason, Event, MessageSendEvent, MessageSendEventsProvider};
@@ -922,3 +922,102 @@ fn test_0conf_channel_reorg() {
922922
});
923923
check_closed_broadcast!(nodes[1], true);
924924
}
925+
926+
#[test]
927+
fn test_zero_conf_accept_reject() {
928+
let mut channel_type_features = ChannelTypeFeatures::only_static_remote_key();
929+
channel_type_features.set_zero_conf_required();
930+
931+
// 1. Check we reject zero conf channels by default
932+
let chanmon_cfgs = create_chanmon_cfgs(2);
933+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
934+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
935+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
936+
937+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
938+
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
939+
940+
open_channel_msg.channel_type = Some(channel_type_features.clone());
941+
942+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &open_channel_msg);
943+
944+
let msg_events = nodes[1].node.get_and_clear_pending_msg_events();
945+
match msg_events[0] {
946+
MessageSendEvent::HandleError { action: ErrorAction::SendErrorMessage { ref msg, .. }, .. } => {
947+
assert_eq!(msg.data, "No zero confirmation channels accepted".to_owned());
948+
},
949+
_ => panic!(),
950+
}
951+
952+
// 2. Check we can manually accept zero conf channels via the right method
953+
let mut manually_accept_conf = UserConfig::default();
954+
manually_accept_conf.manually_accept_inbound_channels = true;
955+
956+
let chanmon_cfgs = create_chanmon_cfgs(2);
957+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
958+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs,
959+
&[None, Some(manually_accept_conf.clone())]);
960+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
961+
962+
// 2.1 First try the non-0conf method to manually accept
963+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42,
964+
Some(manually_accept_conf)).unwrap();
965+
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel,
966+
nodes[1].node.get_our_node_id());
967+
968+
open_channel_msg.channel_type = Some(channel_type_features.clone());
969+
970+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(),
971+
&open_channel_msg);
972+
973+
// Assert that `nodes[1]` has no `MessageSendEvent::SendAcceptChannel` in the `msg_events`.
974+
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
975+
976+
let events = nodes[1].node.get_and_clear_pending_events();
977+
978+
match events[0] {
979+
Event::OpenChannelRequest { temporary_channel_id, .. } => {
980+
// Assert we fail to accept via the non-0conf method
981+
assert!(nodes[1].node.accept_inbound_channel(&temporary_channel_id,
982+
&nodes[0].node.get_our_node_id(), 0).is_err());
983+
},
984+
_ => panic!(),
985+
}
986+
987+
let msg_events = nodes[1].node.get_and_clear_pending_msg_events();
988+
match msg_events[0] {
989+
MessageSendEvent::HandleError { action: ErrorAction::SendErrorMessage { ref msg, .. }, .. } => {
990+
assert_eq!(msg.data, "No zero confirmation channels accepted".to_owned());
991+
},
992+
_ => panic!(),
993+
}
994+
995+
// 2.2 Try again with the 0conf method to manually accept
996+
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42,
997+
Some(manually_accept_conf)).unwrap();
998+
let mut open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel,
999+
nodes[1].node.get_our_node_id());
1000+
1001+
open_channel_msg.channel_type = Some(channel_type_features);
1002+
1003+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(),
1004+
&open_channel_msg);
1005+
1006+
let events = nodes[1].node.get_and_clear_pending_events();
1007+
1008+
match events[0] {
1009+
Event::OpenChannelRequest { temporary_channel_id, .. } => {
1010+
// Assert we can accept via the 0conf method
1011+
assert!(nodes[1].node.accept_inbound_channel_from_trusted_peer_0conf(
1012+
&temporary_channel_id, &nodes[0].node.get_our_node_id(), 0).is_ok());
1013+
},
1014+
_ => panic!(),
1015+
}
1016+
1017+
// Check we would send accept
1018+
let msg_events = nodes[1].node.get_and_clear_pending_msg_events();
1019+
match msg_events[0] {
1020+
MessageSendEvent::SendAcceptChannel { .. } => {},
1021+
_ => panic!(),
1022+
}
1023+
}

0 commit comments

Comments
 (0)