@@ -2901,6 +2901,54 @@ func testCustomChannelsLiquidityEdgeCasesCore(ctx context.Context,
2901
2901
)
2902
2902
2903
2903
logBalance (t .t , nodes , assetID , "after safe asset htlc failure" )
2904
+
2905
+ // Another test case: Make sure an asset invoice contains the correct
2906
+ // channel policy. We expect it to be the policy for the direction from
2907
+ // edge node to receiver node. To test this, we first set two different
2908
+ // policies on the channel between Erin and Fabia.
2909
+ resp , err := erin .UpdateChannelPolicy (ctx , & lnrpc.PolicyUpdateRequest {
2910
+ Scope : & lnrpc.PolicyUpdateRequest_ChanPoint {
2911
+ ChanPoint : chanPointEF ,
2912
+ },
2913
+ BaseFeeMsat : 31337 ,
2914
+ FeeRatePpm : 443322 ,
2915
+ TimeLockDelta : 19 ,
2916
+ })
2917
+ require .NoError (t .t , err )
2918
+ require .Empty (t .t , resp .FailedUpdates )
2919
+
2920
+ resp , err = fabia .UpdateChannelPolicy (ctx , & lnrpc.PolicyUpdateRequest {
2921
+ Scope : & lnrpc.PolicyUpdateRequest_ChanPoint {
2922
+ ChanPoint : chanPointEF ,
2923
+ },
2924
+ BaseFeeMsat : 42069 ,
2925
+ FeeRatePpm : 223344 ,
2926
+ TimeLockDelta : 18 ,
2927
+ })
2928
+ require .NoError (t .t , err )
2929
+ require .Empty (t .t , resp .FailedUpdates )
2930
+
2931
+ // We now create an invoice on Fabia and expect Erin's policy to be used
2932
+ // in the invoice.
2933
+ invoiceResp = createAssetInvoice (t .t , erin , fabia , 1_000 , assetID )
2934
+ req , err := erin .DecodePayReq (ctx , & lnrpc.PayReqString {
2935
+ PayReq : invoiceResp .PaymentRequest ,
2936
+ })
2937
+ require .NoError (t .t , err )
2938
+
2939
+ require .Len (t .t , req .RouteHints , 1 )
2940
+ require .Len (t .t , req .RouteHints [0 ].HopHints , 1 )
2941
+ invoiceHint := req .RouteHints [0 ].HopHints [0 ]
2942
+ require .Equal (t .t , erin .PubKeyStr , invoiceHint .NodeId )
2943
+ require .EqualValues (t .t , 31337 , invoiceHint .FeeBaseMsat )
2944
+ require .EqualValues (t .t , 443322 , invoiceHint .FeeProportionalMillionths )
2945
+ require .EqualValues (t .t , 19 , invoiceHint .CltvExpiryDelta )
2946
+
2947
+ // Now we pay the invoice and expect the same policy with very expensive
2948
+ // fees to be used.
2949
+ payInvoiceWithSatoshi (
2950
+ t .t , dave , invoiceResp , withFeeLimit (100_000_000 ),
2951
+ )
2904
2952
}
2905
2953
2906
2954
// testCustomChannelsLiquidityEdgeCases is a test that runs through some
0 commit comments