Skip to content

Commit aadff79

Browse files
committed
Clean up invoice_utils functional tests somewhat
1 parent 1883f79 commit aadff79

File tree

1 file changed

+71
-158
lines changed

1 file changed

+71
-158
lines changed

lightning/src/ln/invoice_utils.rs

Lines changed: 71 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ mod test {
630630
};
631631
use crate::ln::functional_test_utils::*;
632632
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, MessageSendEvent};
633-
use crate::routing::router::{PaymentParameters, RouteParameters, RouteParametersConfig};
633+
use crate::routing::router::{PaymentParameters, RouteParameters};
634634
use crate::sign::PhantomKeysManager;
635635
use crate::types::payment::{PaymentHash, PaymentPreimage};
636636
use crate::util::config::UserConfig;
@@ -680,6 +680,8 @@ mod test {
680680
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
681681
create_unannounced_chan_between_nodes_with_value(&nodes, 0, 1, 100000, 10001);
682682

683+
let node_a_id = nodes[0].node.get_our_node_id();
684+
683685
let description =
684686
Bolt11InvoiceDescription::Direct(Description::new("test".to_string()).unwrap());
685687
let non_default_invoice_expiry_secs = 4200;
@@ -715,30 +717,18 @@ mod test {
715717
assert_eq!(invoice.route_hints()[0].0[0].htlc_minimum_msat, chan.inbound_htlc_minimum_msat);
716718
assert_eq!(invoice.route_hints()[0].0[0].htlc_maximum_msat, chan.inbound_htlc_maximum_msat);
717719

718-
let payment_event = {
719-
nodes[0]
720-
.node
721-
.pay_for_bolt11_invoice(
722-
&invoice,
723-
PaymentId([42; 32]),
724-
None,
725-
RouteParametersConfig::default(),
726-
Retry::Attempts(0),
727-
)
728-
.unwrap();
729-
check_added_monitors(&nodes[0], 1);
730-
731-
let mut events = nodes[0].node.get_and_clear_pending_msg_events();
732-
assert_eq!(events.len(), 1);
733-
SendEvent::from_event(events.remove(0))
734-
};
735-
nodes[1]
720+
let retry = Retry::Attempts(0);
721+
nodes[0]
736722
.node
737-
.handle_update_add_htlc(nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
738-
nodes[1].node.handle_commitment_signed_batch_test(
739-
nodes[0].node.get_our_node_id(),
740-
&payment_event.commitment_msg,
741-
);
723+
.pay_for_bolt11_invoice(&invoice, PaymentId([42; 32]), None, Default::default(), retry)
724+
.unwrap();
725+
check_added_monitors(&nodes[0], 1);
726+
727+
let mut events = nodes[0].node.get_and_clear_pending_msg_events();
728+
assert_eq!(events.len(), 1);
729+
let payment_event = SendEvent::from_event(events.remove(0));
730+
nodes[1].node.handle_update_add_htlc(node_a_id, &payment_event.msgs[0]);
731+
nodes[1].node.handle_commitment_signed_batch_test(node_a_id, &payment_event.commitment_msg);
742732
check_added_monitors(&nodes[1], 1);
743733
let events = nodes[1].node.get_and_clear_pending_msg_events();
744734
assert_eq!(events.len(), 2);
@@ -892,6 +882,9 @@ mod test {
892882
create_node_chanmgrs(2, &node_cfgs, &[Some(config.clone()), Some(config)]);
893883
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
894884

885+
let node_a_id = nodes[0].node.get_our_node_id();
886+
let node_b_id = nodes[1].node.get_our_node_id();
887+
895888
// Create a private channel with lots of capacity and a lower value public channel (without
896889
// confirming the funding tx yet).
897890
let unannounced_scid =
@@ -907,40 +900,29 @@ mod test {
907900
// channel we'll immediately switch to including it as a route hint, even though it isn't
908901
// yet announced.
909902
let pub_channel_scid = mine_transaction(&nodes[0], &conf_tx);
910-
let node_a_pub_channel_ready = get_event_msg!(
911-
nodes[0],
912-
MessageSendEvent::SendChannelReady,
913-
nodes[1].node.get_our_node_id()
914-
);
915-
nodes[1]
916-
.node
917-
.handle_channel_ready(nodes[0].node.get_our_node_id(), &node_a_pub_channel_ready);
903+
let node_a_pub_channel_ready =
904+
get_event_msg!(nodes[0], MessageSendEvent::SendChannelReady, node_b_id);
905+
nodes[1].node.handle_channel_ready(node_a_id, &node_a_pub_channel_ready);
918906

919907
assert_eq!(mine_transaction(&nodes[1], &conf_tx), pub_channel_scid);
920908
let events = nodes[1].node.get_and_clear_pending_msg_events();
921909
assert_eq!(events.len(), 2);
922910
if let MessageSendEvent::SendChannelReady { msg, .. } = &events[0] {
923-
nodes[0].node.handle_channel_ready(nodes[1].node.get_our_node_id(), msg);
911+
nodes[0].node.handle_channel_ready(node_b_id, msg);
924912
} else {
925913
panic!();
926914
}
927915
if let MessageSendEvent::SendChannelUpdate { msg, .. } = &events[1] {
928-
nodes[0].node.handle_channel_update(nodes[1].node.get_our_node_id(), msg);
916+
nodes[0].node.handle_channel_update(node_b_id, msg);
929917
} else {
930918
panic!();
931919
}
932920

933-
nodes[1].node.handle_channel_update(
934-
nodes[0].node.get_our_node_id(),
935-
&get_event_msg!(
936-
nodes[0],
937-
MessageSendEvent::SendChannelUpdate,
938-
nodes[1].node.get_our_node_id()
939-
),
940-
);
921+
let as_update = get_event_msg!(nodes[0], MessageSendEvent::SendChannelUpdate, node_b_id);
922+
nodes[1].node.handle_channel_update(node_a_id, &as_update);
941923

942-
expect_channel_ready_event(&nodes[0], &nodes[1].node.get_our_node_id());
943-
expect_channel_ready_event(&nodes[1], &nodes[0].node.get_our_node_id());
924+
expect_channel_ready_event(&nodes[0], &node_b_id);
925+
expect_channel_ready_event(&nodes[1], &node_a_id);
944926

945927
scid_aliases.clear();
946928
scid_aliases.insert(node_a_pub_channel_ready.short_channel_id_alias.unwrap());
@@ -954,11 +936,7 @@ mod test {
954936
connect_blocks(&nodes[1], 5);
955937
match_invoice_routes(Some(5000), &nodes[1], scid_aliases.clone());
956938
connect_blocks(&nodes[1], 1);
957-
get_event_msg!(
958-
nodes[1],
959-
MessageSendEvent::SendAnnouncementSignatures,
960-
nodes[0].node.get_our_node_id()
961-
);
939+
get_event_msg!(nodes[1], MessageSendEvent::SendAnnouncementSignatures, node_a_id);
962940
match_invoice_routes(Some(5000), &nodes[1], HashSet::new());
963941
}
964942

@@ -1080,34 +1058,23 @@ mod test {
10801058
let chan_1_0 =
10811059
create_unannounced_chan_between_nodes_with_value(&nodes, 1, 0, 100000, 10001);
10821060

1061+
let node_a_id = nodes[0].node.get_our_node_id();
1062+
let node_c_id = nodes[2].node.get_our_node_id();
1063+
10831064
// Create an unannonced channel between `nodes[2]` and `nodes[0]`, for which the
10841065
// `msgs::ChannelUpdate` is never handled for the node(s). As the `msgs::ChannelUpdate`
10851066
// is never handled, the `channel.counterparty.forwarding_info` is never assigned.
10861067
let mut private_chan_cfg = UserConfig::default();
10871068
private_chan_cfg.channel_handshake_config.announce_for_forwarding = false;
10881069
let temporary_channel_id = nodes[2]
10891070
.node
1090-
.create_channel(
1091-
nodes[0].node.get_our_node_id(),
1092-
1_000_000,
1093-
500_000_000,
1094-
42,
1095-
None,
1096-
Some(private_chan_cfg),
1097-
)
1071+
.create_channel(node_a_id, 1_000_000, 500_000_000, 42, None, Some(private_chan_cfg))
10981072
.unwrap();
1099-
let open_channel = get_event_msg!(
1100-
nodes[2],
1101-
MessageSendEvent::SendOpenChannel,
1102-
nodes[0].node.get_our_node_id()
1103-
);
1104-
nodes[0].node.handle_open_channel(nodes[2].node.get_our_node_id(), &open_channel);
1105-
let accept_channel = get_event_msg!(
1106-
nodes[0],
1107-
MessageSendEvent::SendAcceptChannel,
1108-
nodes[2].node.get_our_node_id()
1109-
);
1110-
nodes[2].node.handle_accept_channel(nodes[0].node.get_our_node_id(), &accept_channel);
1073+
let open_channel = get_event_msg!(nodes[2], MessageSendEvent::SendOpenChannel, node_a_id);
1074+
nodes[0].node.handle_open_channel(node_c_id, &open_channel);
1075+
let accept_channel =
1076+
get_event_msg!(nodes[0], MessageSendEvent::SendAcceptChannel, node_c_id);
1077+
nodes[2].node.handle_accept_channel(node_a_id, &accept_channel);
11111078

11121079
let tx = sign_funding_transaction(&nodes[2], &nodes[0], 1_000_000, temporary_channel_id);
11131080

@@ -1117,32 +1084,16 @@ mod test {
11171084
connect_blocks(&nodes[2], CHAN_CONFIRM_DEPTH - 1);
11181085
confirm_transaction_at(&nodes[0], &tx, conf_height);
11191086
connect_blocks(&nodes[0], CHAN_CONFIRM_DEPTH - 1);
1120-
let as_channel_ready = get_event_msg!(
1121-
nodes[2],
1122-
MessageSendEvent::SendChannelReady,
1123-
nodes[0].node.get_our_node_id()
1124-
);
1125-
nodes[2].node.handle_channel_ready(
1126-
nodes[0].node.get_our_node_id(),
1127-
&get_event_msg!(
1128-
nodes[0],
1129-
MessageSendEvent::SendChannelReady,
1130-
nodes[2].node.get_our_node_id()
1131-
),
1132-
);
1133-
get_event_msg!(
1134-
nodes[2],
1135-
MessageSendEvent::SendChannelUpdate,
1136-
nodes[0].node.get_our_node_id()
1137-
);
1138-
nodes[0].node.handle_channel_ready(nodes[2].node.get_our_node_id(), &as_channel_ready);
1139-
get_event_msg!(
1140-
nodes[0],
1141-
MessageSendEvent::SendChannelUpdate,
1142-
nodes[2].node.get_our_node_id()
1143-
);
1144-
expect_channel_ready_event(&nodes[0], &nodes[2].node.get_our_node_id());
1145-
expect_channel_ready_event(&nodes[2], &nodes[0].node.get_our_node_id());
1087+
let as_channel_ready =
1088+
get_event_msg!(nodes[0], MessageSendEvent::SendChannelReady, node_c_id);
1089+
let cs_channel_ready =
1090+
get_event_msg!(nodes[2], MessageSendEvent::SendChannelReady, node_a_id);
1091+
nodes[2].node.handle_channel_ready(node_a_id, &as_channel_ready);
1092+
get_event_msg!(nodes[2], MessageSendEvent::SendChannelUpdate, node_a_id);
1093+
nodes[0].node.handle_channel_ready(node_c_id, &cs_channel_ready);
1094+
get_event_msg!(nodes[0], MessageSendEvent::SendChannelUpdate, node_c_id);
1095+
expect_channel_ready_event(&nodes[0], &node_c_id);
1096+
expect_channel_ready_event(&nodes[2], &node_a_id);
11461097

11471098
// As `msgs::ChannelUpdate` was never handled for the participating node(s) of the second
11481099
// channel, the channel will never be assigned any `counterparty.forwarding_info`.
@@ -1348,20 +1299,14 @@ mod test {
13481299
payment_params,
13491300
invoice.amount_milli_satoshis().unwrap(),
13501301
);
1351-
let (payment_event, fwd_idx) = {
1352-
let payment_hash = PaymentHash(invoice.payment_hash().to_byte_array());
1353-
nodes[0]
1354-
.node
1355-
.send_payment(
1356-
payment_hash,
1357-
RecipientOnionFields::secret_only(*invoice.payment_secret()),
1358-
PaymentId(payment_hash.0),
1359-
params,
1360-
Retry::Attempts(0),
1361-
)
1362-
.unwrap();
1363-
check_added_monitors(&nodes[0], 1);
13641302

1303+
let payment_hash = PaymentHash(invoice.payment_hash().to_byte_array());
1304+
let id = PaymentId(payment_hash.0);
1305+
let onion = RecipientOnionFields::secret_only(*invoice.payment_secret());
1306+
nodes[0].node.send_payment(payment_hash, onion, id, params, Retry::Attempts(0)).unwrap();
1307+
check_added_monitors(&nodes[0], 1);
1308+
1309+
let (send_event, fwd_idx) = {
13651310
let mut events = nodes[0].node.get_and_clear_pending_msg_events();
13661311
assert_eq!(events.len(), 1);
13671312
let fwd_idx = match events[0] {
@@ -1378,14 +1323,8 @@ mod test {
13781323
};
13791324
nodes[fwd_idx]
13801325
.node
1381-
.handle_update_add_htlc(nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
1382-
commitment_signed_dance!(
1383-
nodes[fwd_idx],
1384-
nodes[0],
1385-
&payment_event.commitment_msg,
1386-
false,
1387-
true
1388-
);
1326+
.handle_update_add_htlc(nodes[0].node.get_our_node_id(), &send_event.msgs[0]);
1327+
commitment_signed_dance!(nodes[fwd_idx], nodes[0], &send_event.commitment_msg, false, true);
13891328

13901329
// Note that we have to "forward pending HTLCs" twice before we see the PaymentClaimable as
13911330
// this "emulates" the payment taking two hops, providing some privacy to make phantom node
@@ -1644,6 +1583,9 @@ mod test {
16441583
let node_chanmgrs = create_node_chanmgrs(4, &node_cfgs, &[None, None, None, None]);
16451584
let nodes = create_network(4, &node_cfgs, &node_chanmgrs);
16461585

1586+
let node_b_id = nodes[1].node.get_our_node_id();
1587+
let node_d_id = nodes[3].node.get_our_node_id();
1588+
16471589
let chan_0_2 =
16481590
create_unannounced_chan_between_nodes_with_value(&nodes, 0, 2, 100000, 10001);
16491591
let chan_0_3 =
@@ -1656,26 +1598,12 @@ mod test {
16561598
private_chan_cfg.channel_handshake_config.announce_for_forwarding = false;
16571599
let temporary_channel_id = nodes[1]
16581600
.node
1659-
.create_channel(
1660-
nodes[3].node.get_our_node_id(),
1661-
1_000_000,
1662-
500_000_000,
1663-
42,
1664-
None,
1665-
Some(private_chan_cfg),
1666-
)
1601+
.create_channel(node_d_id, 1_000_000, 500_000_000, 42, None, Some(private_chan_cfg))
16671602
.unwrap();
1668-
let open_channel = get_event_msg!(
1669-
nodes[1],
1670-
MessageSendEvent::SendOpenChannel,
1671-
nodes[3].node.get_our_node_id()
1672-
);
1603+
let open_channel = get_event_msg!(nodes[1], MessageSendEvent::SendOpenChannel, node_d_id);
16731604
nodes[3].node.handle_open_channel(nodes[1].node.get_our_node_id(), &open_channel);
1674-
let accept_channel = get_event_msg!(
1675-
nodes[3],
1676-
MessageSendEvent::SendAcceptChannel,
1677-
nodes[1].node.get_our_node_id()
1678-
);
1605+
let accept_channel =
1606+
get_event_msg!(nodes[3], MessageSendEvent::SendAcceptChannel, node_b_id);
16791607
nodes[1].node.handle_accept_channel(nodes[3].node.get_our_node_id(), &accept_channel);
16801608

16811609
let tx = sign_funding_transaction(&nodes[1], &nodes[3], 1_000_000, temporary_channel_id);
@@ -1686,30 +1614,15 @@ mod test {
16861614
connect_blocks(&nodes[1], CHAN_CONFIRM_DEPTH - 1);
16871615
confirm_transaction_at(&nodes[3], &tx, conf_height);
16881616
connect_blocks(&nodes[3], CHAN_CONFIRM_DEPTH - 1);
1689-
let as_channel_ready = get_event_msg!(
1690-
nodes[1],
1691-
MessageSendEvent::SendChannelReady,
1692-
nodes[3].node.get_our_node_id()
1693-
);
1694-
nodes[1].node.handle_channel_ready(
1695-
nodes[3].node.get_our_node_id(),
1696-
&get_event_msg!(
1697-
nodes[3],
1698-
MessageSendEvent::SendChannelReady,
1699-
nodes[1].node.get_our_node_id()
1700-
),
1701-
);
1702-
get_event_msg!(
1703-
nodes[1],
1704-
MessageSendEvent::SendChannelUpdate,
1705-
nodes[3].node.get_our_node_id()
1706-
);
1707-
nodes[3].node.handle_channel_ready(nodes[1].node.get_our_node_id(), &as_channel_ready);
1708-
get_event_msg!(
1709-
nodes[3],
1710-
MessageSendEvent::SendChannelUpdate,
1711-
nodes[1].node.get_our_node_id()
1712-
);
1617+
1618+
let bs_channel_ready =
1619+
get_event_msg!(nodes[1], MessageSendEvent::SendChannelReady, node_d_id);
1620+
let ds_channel_ready =
1621+
get_event_msg!(nodes[3], MessageSendEvent::SendChannelReady, node_b_id);
1622+
nodes[1].node.handle_channel_ready(node_d_id, &ds_channel_ready);
1623+
get_event_msg!(nodes[1], MessageSendEvent::SendChannelUpdate, node_d_id);
1624+
nodes[3].node.handle_channel_ready(nodes[1].node.get_our_node_id(), &bs_channel_ready);
1625+
get_event_msg!(nodes[3], MessageSendEvent::SendChannelUpdate, node_b_id);
17131626
expect_channel_ready_event(&nodes[1], &nodes[3].node.get_our_node_id());
17141627
expect_channel_ready_event(&nodes[3], &nodes[1].node.get_our_node_id());
17151628

0 commit comments

Comments
 (0)