@@ -614,6 +614,7 @@ where
614614mod test {
615615 use super :: * ;
616616 use crate :: chain:: channelmonitor:: HTLC_FAIL_BACK_BUFFER ;
617+ use crate :: events:: Event ;
617618 use crate :: ln:: channelmanager:: {
618619 Bolt11InvoiceParameters , PaymentId , PhantomRouteHints , RecipientOnionFields , Retry ,
619620 MIN_FINAL_CLTV_EXPIRY_DELTA ,
@@ -663,7 +664,7 @@ mod test {
663664 }
664665
665666 #[ test]
666- fn create_and_pay_for_bolt11_invoice ( ) {
667+ fn create_and_pay_for_bolt11_invoice_with_custom_tlvs ( ) {
667668 let chanmon_cfgs = create_chanmon_cfgs ( 2 ) ;
668669 let node_cfgs = create_node_cfgs ( 2 , & chanmon_cfgs) ;
669670 let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
@@ -694,6 +695,11 @@ mod test {
694695 Duration :: from_secs( non_default_invoice_expiry_secs. into( ) )
695696 ) ;
696697
698+ let ( payment_hash, payment_secret) =
699+ ( PaymentHash ( invoice. payment_hash ( ) . to_byte_array ( ) ) , * invoice. payment_secret ( ) ) ;
700+
701+ let preimage = nodes[ 1 ] . node . get_payment_preimage ( payment_hash, payment_secret) . unwrap ( ) ;
702+
697703 // Invoice SCIDs should always use inbound SCID aliases over the real channel ID, if one is
698704 // available.
699705 let chan = & nodes[ 1 ] . node . list_usable_channels ( ) [ 0 ] ;
@@ -708,13 +714,15 @@ mod test {
708714 assert_eq ! ( invoice. route_hints( ) [ 0 ] . 0 [ 0 ] . htlc_maximum_msat, chan. inbound_htlc_maximum_msat) ;
709715
710716 let retry = Retry :: Attempts ( 0 ) ;
717+ let custom_tlvs = vec ! [ ( 65537 , vec![ 42 ; 42 ] ) ] ;
718+
711719 nodes[ 0 ]
712720 . node
713721 . pay_for_bolt11_invoice (
714722 & invoice,
715723 PaymentId ( [ 42 ; 32 ] ) ,
716724 None ,
717- vec ! [ ] ,
725+ custom_tlvs . clone ( ) ,
718726 Default :: default ( ) ,
719727 retry,
720728 )
@@ -725,10 +733,30 @@ mod test {
725733 assert_eq ! ( events. len( ) , 1 ) ;
726734 let payment_event = SendEvent :: from_event ( events. remove ( 0 ) ) ;
727735 nodes[ 1 ] . node . handle_update_add_htlc ( node_a_id, & payment_event. msgs [ 0 ] ) ;
728- nodes[ 1 ] . node . handle_commitment_signed_batch_test ( node_a_id, & payment_event. commitment_msg ) ;
729- check_added_monitors ( & nodes[ 1 ] , 1 ) ;
730- let events = nodes[ 1 ] . node . get_and_clear_pending_msg_events ( ) ;
731- assert_eq ! ( events. len( ) , 2 ) ;
736+ check_added_monitors ! ( & nodes[ 1 ] , 0 ) ;
737+ do_commitment_signed_dance (
738+ & nodes[ 1 ] ,
739+ & nodes[ 0 ] ,
740+ & payment_event. commitment_msg ,
741+ false ,
742+ false ,
743+ ) ;
744+ expect_and_process_pending_htlcs ( & nodes[ 1 ] , false ) ;
745+
746+ let events = nodes[ 1 ] . node . get_and_clear_pending_events ( ) ;
747+ assert_eq ! ( events. len( ) , 1 ) ;
748+
749+ match events[ 0 ] {
750+ Event :: PaymentClaimable { ref onion_fields, .. } => {
751+ assert_eq ! ( onion_fields. clone( ) . unwrap( ) . custom_tlvs( ) . clone( ) , custom_tlvs) ;
752+ } ,
753+ _ => panic ! ( "Unexpected event" ) ,
754+ }
755+
756+ claim_payment_along_route (
757+ ClaimAlongRouteArgs :: new ( & nodes[ 0 ] , & [ & [ & nodes[ 1 ] ] ] , preimage)
758+ . with_custom_tlvs ( custom_tlvs) ,
759+ ) ;
732760 }
733761
734762 fn do_create_invoice_min_final_cltv_delta ( with_custom_delta : bool ) {
@@ -1214,7 +1242,7 @@ mod test {
12141242 }
12151243
12161244 fn do_test_multi_node_receive ( user_generated_pmt_hash : bool ) {
1217- use crate :: events:: { Event , EventsProvider } ;
1245+ use crate :: events:: EventsProvider ;
12181246 use core:: cell:: RefCell ;
12191247
12201248 let mut chanmon_cfgs = create_chanmon_cfgs ( 3 ) ;
0 commit comments