@@ -22,7 +22,7 @@ use ln::channel::{COMMITMENT_TX_BASE_WEIGHT, COMMITMENT_TX_WEIGHT_PER_HTLC};
22
22
use ln::channelmanager::{ChannelManager, ChannelManagerReadArgs, RAACommitmentOrder, PaymentSendFailure, BREAKDOWN_TIMEOUT, MIN_CLTV_EXPIRY_DELTA};
23
23
use ln::channel::{Channel, ChannelError};
24
24
use ln::{chan_utils, onion_utils};
25
- use routing::router::{Route, RouteHop, RouteHint, RouteHintHop, get_route};
25
+ use routing::router::{Route, RouteHop, RouteHint, RouteHintHop, get_route, get_keysend_route };
26
26
use routing::network_graph::RoutingFees;
27
27
use ln::features::{ChannelFeatures, InitFeatures, InvoiceFeatures, NodeFeatures};
28
28
use ln::msgs;
@@ -9602,3 +9602,33 @@ fn test_keysend_payments_to_public_node() {
9602
9602
pass_along_path(&nodes[0], &path, 10000, payment_hash, PaymentSecret([0; 32]), event, true, Some(test_preimage));
9603
9603
claim_payment(&nodes[0], &path, test_preimage);
9604
9604
}
9605
+
9606
+ #[test]
9607
+ fn test_keysend_payments_to_private_node() {
9608
+ let chanmon_cfgs = create_chanmon_cfgs(2);
9609
+ let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
9610
+ let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
9611
+ let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
9612
+
9613
+ let payer_pubkey = nodes[0].node.get_our_node_id();
9614
+ let payee_pubkey = nodes[1].node.get_our_node_id();
9615
+ nodes[0].node.peer_connected(&payee_pubkey, &msgs::Init { features: InitFeatures::known() });
9616
+ nodes[1].node.peer_connected(&payer_pubkey, &msgs::Init { features: InitFeatures::known() });
9617
+
9618
+ let _chan = create_chan_between_nodes(&nodes[0], &nodes[1], InitFeatures::known(), InitFeatures::known());
9619
+ let network_graph = nodes[0].net_graph_msg_handler.network_graph.read().unwrap();
9620
+ let first_hops = nodes[0].node.list_usable_channels();
9621
+ let route = get_keysend_route(&payer_pubkey, &network_graph, &payee_pubkey,
9622
+ Some(&first_hops.iter().collect::<Vec<_>>()), &vec![], 10000, 40,
9623
+ nodes[0].logger).unwrap();
9624
+
9625
+ let test_preimage = PaymentPreimage([42; 32]);
9626
+ let payment_hash = nodes[0].node.send_spontaneous_payment(&route, Some(test_preimage)).unwrap();
9627
+ check_added_monitors!(nodes[0], 1);
9628
+ let mut events = nodes[0].node.get_and_clear_pending_msg_events();
9629
+ assert_eq!(events.len(), 1);
9630
+ let event = events.pop().unwrap();
9631
+ let path = vec![&nodes[1]];
9632
+ pass_along_path(&nodes[0], &path, 10000, payment_hash, PaymentSecret([0; 32]), event, true, Some(test_preimage));
9633
+ claim_payment(&nodes[0], &path, test_preimage);
9634
+ }
0 commit comments