lnd/lntest/rpc/invoices.go
ffranr 0c6a1558d5
lntest: add HtlcModifier support to node RPC harness
This commit enhances the itest LND node harness to include support for
the new `HtlcModifier` RPC endpoint.
At the same time we move another method to the correct file.
2024-09-19 09:21:38 +02:00

102 lines
2.9 KiB
Go

package rpc
import (
"context"
"github.com/lightningnetwork/lnd/lnrpc"
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
)
// =====================
// InvoiceClient related RPCs.
// =====================
// LookupInvoiceV2 queries the node's invoices using the invoice client's
// LookupInvoiceV2.
func (h *HarnessRPC) LookupInvoiceV2(
req *invoicesrpc.LookupInvoiceMsg) *lnrpc.Invoice {
ctxt, cancel := context.WithTimeout(h.runCtx, DefaultTimeout)
defer cancel()
resp, err := h.Invoice.LookupInvoiceV2(ctxt, req)
h.NoError(err, "LookupInvoiceV2")
return resp
}
// AddHoldInvoice adds a hold invoice for the given node and asserts.
func (h *HarnessRPC) AddHoldInvoice(
r *invoicesrpc.AddHoldInvoiceRequest) *invoicesrpc.AddHoldInvoiceResp {
ctxt, cancel := context.WithTimeout(h.runCtx, DefaultTimeout)
defer cancel()
invoice, err := h.Invoice.AddHoldInvoice(ctxt, r)
h.NoError(err, "AddHoldInvoice")
return invoice
}
// SettleInvoice settles a given invoice and asserts.
func (h *HarnessRPC) SettleInvoice(
preimage []byte) *invoicesrpc.SettleInvoiceResp {
ctxt, cancel := context.WithTimeout(h.runCtx, DefaultTimeout)
defer cancel()
req := &invoicesrpc.SettleInvoiceMsg{Preimage: preimage}
resp, err := h.Invoice.SettleInvoice(ctxt, req)
h.NoError(err, "SettleInvoice")
return resp
}
// CancelInvoice cancels a given invoice and asserts.
func (h *HarnessRPC) CancelInvoice(
payHash []byte) *invoicesrpc.CancelInvoiceResp {
ctxt, cancel := context.WithTimeout(h.runCtx, DefaultTimeout)
defer cancel()
req := &invoicesrpc.CancelInvoiceMsg{PaymentHash: payHash}
resp, err := h.Invoice.CancelInvoice(ctxt, req)
h.NoError(err, "CancelInvoice")
return resp
}
type SingleInvoiceClient invoicesrpc.Invoices_SubscribeSingleInvoiceClient
// SubscribeSingleInvoice creates a subscription client for given invoice and
// asserts its creation.
func (h *HarnessRPC) SubscribeSingleInvoice(rHash []byte) SingleInvoiceClient {
req := &invoicesrpc.SubscribeSingleInvoiceRequest{RHash: rHash}
// SubscribeSingleInvoice needs to have the context alive for the
// entire test case as the returned client will be used for send and
// receive events stream. Thus we use runCtx here instead of a timeout
// context.
client, err := h.Invoice.SubscribeSingleInvoice(h.runCtx, req)
h.NoError(err, "SubscribeSingleInvoice")
return client
}
type InvoiceHtlcModifierClient invoicesrpc.Invoices_HtlcModifierClient
// InvoiceHtlcModifier makes an RPC call to the node's RouterClient and asserts.
func (h *HarnessRPC) InvoiceHtlcModifier() (InvoiceHtlcModifierClient,
context.CancelFunc) {
// InvoiceHtlcModifier needs to have the context alive for the entire
// test case as the returned client will be used for send and receive
// events stream. Therefore, we use cancel context here instead of a
// timeout context.
ctxt, cancel := context.WithCancel(h.runCtx)
resp, err := h.Invoice.HtlcModifier(ctxt)
h.NoError(err, "InvoiceHtlcModifier")
return resp, cancel
}