@@ -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 , get_route} ;
25
+ use routing:: router:: { Route , RouteHop , get_route, get_keysend_route } ;
26
26
use ln:: features:: { ChannelFeatures , InitFeatures , InvoiceFeatures , NodeFeatures } ;
27
27
use ln:: msgs;
28
28
use ln:: msgs:: { ChannelMessageHandler , RoutingMessageHandler , HTLCFailChannelUpdate , ErrorAction } ;
@@ -9419,3 +9419,33 @@ fn test_keysend_payments_to_public_node() {
9419
9419
pass_along_path ( & nodes[ 0 ] , & path, 10000 , payment_hash, PaymentSecret ( [ 0 ; 32 ] ) , event, true , Some ( test_preimage) ) ;
9420
9420
claim_payment ( & nodes[ 0 ] , & path, test_preimage) ;
9421
9421
}
9422
+
9423
+ #[ test]
9424
+ fn test_keysend_payments_to_private_node ( ) {
9425
+ let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
9426
+ let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
9427
+ let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
9428
+ let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
9429
+
9430
+ let payer_pubkey = nodes[ 0 ] . node . get_our_node_id ( ) ;
9431
+ let payee_pubkey = nodes[ 1 ] . node . get_our_node_id ( ) ;
9432
+ nodes[ 0 ] . node . peer_connected ( & payee_pubkey, & msgs:: Init { features : InitFeatures :: known ( ) } ) ;
9433
+ nodes[ 1 ] . node . peer_connected ( & payer_pubkey, & msgs:: Init { features : InitFeatures :: known ( ) } ) ;
9434
+
9435
+ let _chan = create_chan_between_nodes ( & nodes[ 0 ] , & nodes[ 1 ] , InitFeatures :: known ( ) , InitFeatures :: known ( ) ) ;
9436
+ let network_graph = nodes[ 0 ] . net_graph_msg_handler . network_graph . read ( ) . unwrap ( ) ;
9437
+ let first_hops = nodes[ 0 ] . node . list_usable_channels ( ) ;
9438
+ let route = get_keysend_route ( & payer_pubkey, & network_graph, & payee_pubkey,
9439
+ Some ( & first_hops. iter ( ) . collect :: < Vec < _ > > ( ) ) , & vec ! [ ] , 10000 , 40 ,
9440
+ nodes[ 0 ] . logger ) . unwrap ( ) ;
9441
+
9442
+ let test_preimage = PaymentPreimage ( [ 42 ; 32 ] ) ;
9443
+ let payment_hash = nodes[ 0 ] . node . send_spontaneous_payment ( & route, Some ( test_preimage) ) . unwrap ( ) ;
9444
+ check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
9445
+ let mut events = nodes[ 0 ] . node . get_and_clear_pending_msg_events ( ) ;
9446
+ assert_eq ! ( events. len( ) , 1 ) ;
9447
+ let event = events. pop ( ) . unwrap ( ) ;
9448
+ let path = vec ! [ & nodes[ 1 ] ] ;
9449
+ pass_along_path ( & nodes[ 0 ] , & path, 10000 , payment_hash, PaymentSecret ( [ 0 ; 32 ] ) , event, true , Some ( test_preimage) ) ;
9450
+ claim_payment ( & nodes[ 0 ] , & path, test_preimage) ;
9451
+ }
0 commit comments