mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-08-28 14:40:51 +02:00
100 lines
2.8 KiB
Go
100 lines
2.8 KiB
Go
package itest
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/lightningnetwork/lnd/invoices"
|
|
"github.com/lightningnetwork/lnd/lnrpc"
|
|
"github.com/lightningnetwork/lnd/lntest"
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func testDeleteCanceledInvoice(ht *lntest.HarnessTest) {
|
|
bob := ht.NewNode("bob", nil)
|
|
|
|
// Create 2 invoices for Bob.
|
|
const numInvoices = 2
|
|
invoiceResp := make([]*lnrpc.AddInvoiceResponse, numInvoices)
|
|
|
|
for i := range numInvoices {
|
|
// Create a unique 32-byte preimage for each invoice.
|
|
preimage := bytes.Repeat([]byte{byte(i + 1)}, 32)
|
|
|
|
invoice := &lnrpc.Invoice{
|
|
RPreimage: preimage,
|
|
Value: paymentAmt,
|
|
}
|
|
|
|
invoiceResp[i] = bob.RPC.AddInvoice(invoice)
|
|
}
|
|
|
|
// Cancel all invoices except the last one.
|
|
for i := range numInvoices - 1 {
|
|
bob.RPC.CancelInvoice(invoiceResp[i].RHash)
|
|
}
|
|
|
|
// Let's assert an error while providing no invoice hash.
|
|
bob.RPC.DeleteCanceledInvoiceAssertErr(
|
|
&lnrpc.DelCanceledInvoiceReq{},
|
|
invoices.ErrNoInvoiceHash.Error(),
|
|
)
|
|
|
|
// Let's assert an error while providing a hash with an invalid length.
|
|
bob.RPC.DeleteCanceledInvoiceAssertErr(
|
|
&lnrpc.DelCanceledInvoiceReq{InvoiceHash: "bb02fbfa62983b6b62"},
|
|
"invalid hash string length",
|
|
)
|
|
|
|
// Let's assert an error is returned for a hash with invalid encoding.
|
|
bob.RPC.DeleteCanceledInvoiceAssertErr(
|
|
&lnrpc.DelCanceledInvoiceReq{
|
|
InvoiceHash: "bb02fbfa62983b6b621376bf8230732dd3a6dce" +
|
|
"a9f5df803c0935ae6ce7440dg",
|
|
}, "encoding/hex: invalid byte",
|
|
)
|
|
|
|
// Let's delete one canceled invoice.
|
|
invoiceToDelete := lntypes.Hash(invoiceResp[0].RHash).String()
|
|
resp := bob.RPC.DeleteCanceledInvoice(
|
|
&lnrpc.DelCanceledInvoiceReq{InvoiceHash: invoiceToDelete},
|
|
)
|
|
|
|
require.Contains(
|
|
ht, resp.String(), "canceled invoice deleted successfully",
|
|
)
|
|
|
|
respList := bob.RPC.ListInvoices(&lnrpc.ListInvoiceRequest{})
|
|
|
|
// Assert that the invoice was deleted.
|
|
require.Len(ht, respList.Invoices, numInvoices-1)
|
|
|
|
// Let's assert an error while deleting a non-existent invoice.
|
|
bob.RPC.DeleteCanceledInvoiceAssertErr(
|
|
&lnrpc.DelCanceledInvoiceReq{InvoiceHash: invoiceToDelete},
|
|
invoices.ErrInvoiceNotFound.Error(),
|
|
)
|
|
|
|
// Let's assert an error while deleting a non canceled invoice.
|
|
notCanceledInvoice := lntypes.Hash(invoiceResp[numInvoices-1].RHash).
|
|
String()
|
|
|
|
bob.RPC.DeleteCanceledInvoiceAssertErr(
|
|
&lnrpc.DelCanceledInvoiceReq{InvoiceHash: notCanceledInvoice},
|
|
invoices.ErrInvoiceNotCanceled.Error(),
|
|
)
|
|
|
|
// Assert that the last invoice in the invoiceResp is still present and
|
|
// OPEN.
|
|
respList = bob.RPC.ListInvoices(&lnrpc.ListInvoiceRequest{})
|
|
require.Equal(
|
|
ht, invoiceResp[numInvoices-1].RHash,
|
|
respList.Invoices[0].RHash,
|
|
)
|
|
|
|
require.Equal(ht, lnrpc.Invoice_OPEN, respList.Invoices[0].State)
|
|
|
|
// Assert that just one invoice exists.
|
|
require.Len(ht, respList.Invoices, 1)
|
|
}
|