@@ -56,6 +56,10 @@ const (
5656	DefaultPushSat  int64  =  1062 
5757)
5858
59+ var  (
60+ 	NoScidOpt  =  fn .None [rfqmsg.SerialisedScid ]()
61+ )
62+ 
5963// createTestAssetNetwork sends asset funds from Charlie to Dave and Erin, so 
6064// they can fund asset channels with Yara and Fabia, respectively. So the asset 
6165// channels created are Charlie->Dave, Dave->Yara, Erin->Fabia. The channels 
@@ -714,6 +718,9 @@ func sendAssetKeySendPayment(t *testing.T, src, dst *HarnessNode, amt uint64,
714718
715719	result , err  :=  getAssetPaymentResult (stream , false )
716720	require .NoError (t , err )
721+ 	if  result .Status  ==  lnrpc .Payment_FAILED  {
722+ 		t .Logf ("Failure reason: %v" , result .FailureReason )
723+ 	}
717724	require .Equal (t , expectedStatus , result .Status )
718725
719726	expectedReason  :=  failReason .UnwrapOr (
@@ -772,7 +779,9 @@ func createAndPayNormalInvoiceWithBtc(t *testing.T, src, dst *HarnessNode,
772779	})
773780	require .NoError (t , err )
774781
775- 	payInvoiceWithSatoshi (t , src , invoiceResp , lnrpc .Payment_SUCCEEDED )
782+ 	payInvoiceWithSatoshi (
783+ 		t , src , invoiceResp , lnrpc .Payment_SUCCEEDED , false ,
784+ 	)
776785}
777786
778787func  createAndPayNormalInvoice (t  * testing.T , src , rfqPeer , dst  * HarnessNode ,
@@ -792,15 +801,15 @@ func createAndPayNormalInvoice(t *testing.T, src, rfqPeer, dst *HarnessNode,
792801
793802	numUnits , _  :=  payInvoiceWithAssets (
794803		t , src , rfqPeer , invoiceResp .PaymentRequest , assetID , smallShards ,
795- 		fn .None [lnrpc.Payment_PaymentStatus ](),
804+ 		fn .None [lnrpc.Payment_PaymentStatus ](),  NoScidOpt , 
796805	)
797806
798807	return  numUnits 
799808}
800809
801810func  payInvoiceWithSatoshi (t  * testing.T , payer  * HarnessNode ,
802811	invoice  * lnrpc.AddInvoiceResponse ,
803- 	expectedStatus  lnrpc.Payment_PaymentStatus ) {
812+ 	expectedStatus  lnrpc.Payment_PaymentStatus ,  expectTimeout   bool ) {
804813
805814	ctxb  :=  context .Background ()
806815	ctxt , cancel  :=  context .WithTimeout (ctxb , defaultTimeout )
@@ -816,8 +825,12 @@ func payInvoiceWithSatoshi(t *testing.T, payer *HarnessNode,
816825	require .NoError (t , err )
817826
818827	result , err  :=  getPaymentResult (stream )
819- 	require .NoError (t , err )
820- 	require .Equal (t , expectedStatus , result .Status )
828+ 	if  expectTimeout  {
829+ 		require .ErrorContains (t , err , "context deadline exceeded" )
830+ 	} else  {
831+ 		require .NoError (t , err )
832+ 		require .Equal (t , expectedStatus , result .Status )
833+ 	}
821834}
822835
823836func  payInvoiceWithSatoshiLastHop (t  * testing.T , payer  * HarnessNode ,
@@ -858,7 +871,8 @@ func payInvoiceWithSatoshiLastHop(t *testing.T, payer *HarnessNode,
858871
859872func  payInvoiceWithAssets (t  * testing.T , payer , rfqPeer  * HarnessNode ,
860873	payReq  string , assetID  []byte , smallShards  bool ,
861- 	expectedPayStatus  fn.Option [lnrpc.Payment_PaymentStatus ]) (uint64 ,
874+ 	expectedPayStatus  fn.Option [lnrpc.Payment_PaymentStatus ],
875+ 	manualRfq  fn.Option [rfqmsg.SerialisedScid ]) (uint64 ,
862876	rfqmath.BigIntFixedPoint ) {
863877
864878	ctxb  :=  context .Background ()
@@ -886,40 +900,52 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode,
886900		AssetId :        assetID ,
887901		PeerPubkey :     rfqPeer .PubKey [:],
888902		PaymentRequest : sendReq ,
903+ 		Scid :           uint64 (manualRfq .UnwrapOr (0 )),
889904	})
890905	require .NoError (t , err )
891906
892- 	// We want to receive the accepted quote message first, so we know how 
893- 	// many assets we're going to pay. 
894- 	quoteMsg , err  :=  stream .Recv ()
895- 	require .NoError (t , err )
896- 	acceptedQuote  :=  quoteMsg .GetAcceptedSellOrder ()
897- 	require .NotNil (t , acceptedQuote )
907+ 	var  (
908+ 		numUnits  uint64 
909+ 		rateVal   rfqmath.FixedPoint [rfqmath.BigInt ]
910+ 	)
898911
899- 	peerPubKey  :=  acceptedQuote .Peer 
900- 	require .Equal (t , peerPubKey , rfqPeer .PubKeyStr )
912+ 	if  manualRfq .IsNone () {
913+ 		// We want to receive the accepted quote message first, so we know how 
914+ 		// many assets we're going to pay. 
915+ 		quoteMsg , err  :=  stream .Recv ()
916+ 		require .NoError (t , err )
917+ 		acceptedQuote  :=  quoteMsg .GetAcceptedSellOrder ()
918+ 		require .NotNil (t , acceptedQuote )
901919
902- 	rpcRate  :=  acceptedQuote .BidAssetRate 
903- 	rate , err  :=  rfqrpc .UnmarshalFixedPoint (rpcRate )
904- 	require .NoError (t , err )
920+ 		peerPubKey  :=  acceptedQuote .Peer 
921+ 		require .Equal (t , peerPubKey , rfqPeer .PubKeyStr )
905922
906- 	t .Logf ("Got quote for %v asset units per BTC" , rate )
923+ 		rpcRate  :=  acceptedQuote .BidAssetRate 
924+ 		rate , err  :=  rfqrpc .UnmarshalFixedPoint (rpcRate )
925+ 		require .NoError (t , err )
926+ 
927+ 		rateVal  =  * rate 
907928
908- 	amountMsat  :=  lnwire .MilliSatoshi (decodedInvoice .NumMsat )
909- 	milliSatsFP  :=  rfqmath .MilliSatoshiToUnits (amountMsat , * rate )
910- 	numUnits  :=  milliSatsFP .ScaleTo (0 ).ToUint64 ()
911- 	msatPerUnit  :=  float64 (decodedInvoice .NumMsat ) /  float64 (numUnits )
912- 	t .Logf ("Got quote for %v asset units at %3f msat/unit from peer %s " + 
913- 		"with SCID %d" , numUnits , msatPerUnit , peerPubKey ,
914- 		acceptedQuote .Scid )
929+ 		t .Logf ("Got quote for %v asset units per BTC" , rate )
930+ 
931+ 		amountMsat  :=  lnwire .MilliSatoshi (decodedInvoice .NumMsat )
932+ 		milliSatsFP  :=  rfqmath .MilliSatoshiToUnits (amountMsat , * rate )
933+ 		numUnits  =  milliSatsFP .ScaleTo (0 ).ToUint64 ()
934+ 		msatPerUnit  :=  float64 (decodedInvoice .NumMsat ) /  float64 (numUnits )
935+ 		t .Logf ("Got quote for %v asset units at %3f msat/unit from peer %s " + 
936+ 			"with SCID %d" , numUnits , msatPerUnit , peerPubKey ,
937+ 			acceptedQuote .Scid )
938+ 	}
915939
916940	expectedStatus  :=  expectedPayStatus .UnwrapOr (lnrpc .Payment_SUCCEEDED )
917941
918- 	result , err  :=  getAssetPaymentResult (stream , expectedPayStatus .IsSome ())
942+ 	result , err  :=  getAssetPaymentResult (
943+ 		stream , expectedStatus  ==  lnrpc .Payment_IN_FLIGHT ,
944+ 	)
919945	require .NoError (t , err )
920946	require .Equal (t , expectedStatus , result .Status )
921947
922- 	return  numUnits , * rate 
948+ 	return  numUnits , rateVal 
923949}
924950
925951func  createAssetInvoice (t  * testing.T , dstRfqPeer , dst  * HarnessNode ,
0 commit comments