multi: move itest out of lntest
This commit moves all the test cases living in `itest` out of `lntest`, further making `lntest` an independent package for general testing.
This commit is contained in:
59 files changed
+19
-19
No files matched your search
@@ -0,0 +1,89 @@
|
||||
package itest
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"time"
|
||||
|
||||
"github.com/btcsuite/btcd/btcutil"
|
||||
"github.com/lightningnetwork/lnd/lnrpc"
|
||||
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
||||
"github.com/lightningnetwork/lnd/lntemp"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// testTrackPayments tests whether a client that calls the TrackPayments api
|
||||
// receives payment updates.
|
||||
func testTrackPayments(ht *lntemp.HarnessTest) {
|
||||
// Open a channel between alice and bob.
|
||||
alice, bob := ht.Alice, ht.Bob
|
||||
channel := ht.OpenChannel(
|
||||
alice, bob, lntemp.OpenChannelParams{
|
||||
Amt: btcutil.Amount(300000),
|
||||
},
|
||||
)
|
||||
|
||||
// Call the TrackPayments api to listen for payment updates.
|
||||
req := &routerrpc.TrackPaymentsRequest{
|
||||
NoInflightUpdates: false,
|
||||
}
|
||||
tracker := alice.RPC.TrackPayments(req)
|
||||
|
||||
// Create an invoice from bob.
|
||||
var amountMsat int64 = 1000
|
||||
invoiceResp := bob.RPC.AddInvoice(
|
||||
&lnrpc.Invoice{
|
||||
ValueMsat: amountMsat,
|
||||
},
|
||||
)
|
||||
invoice := bob.RPC.LookupInvoice(invoiceResp.RHash)
|
||||
|
||||
// Send payment from alice to bob.
|
||||
paymentClient := alice.RPC.SendPayment(
|
||||
&routerrpc.SendPaymentRequest{
|
||||
PaymentRequest: invoice.PaymentRequest,
|
||||
TimeoutSeconds: 60,
|
||||
},
|
||||
)
|
||||
|
||||
// Make sure the payment doesn't error due to invalid parameters or so.
|
||||
_, err := paymentClient.Recv()
|
||||
require.NoError(ht, err, "unable to get payment update.")
|
||||
|
||||
// Assert the first payment update is an inflight update.
|
||||
update1, err := tracker.Recv()
|
||||
require.NoError(ht, err, "unable to receive payment update 1.")
|
||||
|
||||
require.Equal(
|
||||
ht, lnrpc.PaymentFailureReason_FAILURE_REASON_NONE,
|
||||
update1.FailureReason,
|
||||
)
|
||||
require.Equal(ht, lnrpc.Payment_IN_FLIGHT, update1.Status)
|
||||
require.Equal(ht, invoice.PaymentRequest, update1.PaymentRequest)
|
||||
require.Equal(ht, amountMsat, update1.ValueMsat)
|
||||
|
||||
// Assert the second payment update is a payment success update.
|
||||
update2, err := tracker.Recv()
|
||||
require.NoError(ht, err, "unable to receive payment update 2.")
|
||||
|
||||
require.Equal(
|
||||
ht, lnrpc.PaymentFailureReason_FAILURE_REASON_NONE,
|
||||
update2.FailureReason,
|
||||
)
|
||||
require.Equal(ht, lnrpc.Payment_SUCCEEDED, update2.Status)
|
||||
require.Equal(ht, invoice.PaymentRequest, update2.PaymentRequest)
|
||||
require.Equal(ht, amountMsat, update2.ValueMsat)
|
||||
require.Equal(
|
||||
ht, hex.EncodeToString(invoice.RPreimage),
|
||||
update2.PaymentPreimage,
|
||||
)
|
||||
|
||||
// TODO(yy): remove the sleep once the following bug is fixed.
|
||||
// When the invoice is reported settled, the commitment dance is not
|
||||
// yet finished, which can cause an error when closing the channel,
|
||||
// saying there's active HTLCs. We need to investigate this issue and
|
||||
// reverse the order to, first finish the commitment dance, then report
|
||||
// the invoice as settled.
|
||||
time.Sleep(2 * time.Second)
|
||||
|
||||
ht.CloseChannel(alice, channel)
|
||||
}
|
||||
Reference in new issue
Block a user