From a05e46697d54e5bb62b314cbd7b5dd57a7e3323f Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Wed, 15 Jan 2020 09:55:22 +0100 Subject: [PATCH] test: assert raw output signing requests --- client_test.go | 3 +++ loopin_test.go | 3 +++ loopout_test.go | 6 ++++++ test/lnd_services_mock.go | 11 +++++++++++ test/signer_mock.go | 5 +++++ 5 files changed, 28 insertions(+) diff --git a/client_test.go b/client_test.go index 9419521..1675009 100644 --- a/client_test.go +++ b/client_test.go @@ -265,6 +265,9 @@ func testSuccess(ctx *testContext, amt btcutil.Amount, hash lntypes.Hash, // Publish tick. ctx.expiryChan <- testTime + // Expect a signing request. + <-ctx.Lnd.SignOutputRawChannel + if !preimageRevealed { ctx.assertStatus(loopdb.StatePreimageRevealed) ctx.assertStorePreimageReveal() diff --git a/loopin_test.go b/loopin_test.go index 7ba1385..1ffae36 100644 --- a/loopin_test.go +++ b/loopin_test.go @@ -175,6 +175,9 @@ func TestLoopInTimeout(t *testing.T) { // Let htlc expire. ctx.blockEpochChan <- swap.LoopInContract.CltvExpiry + // Expect a signing request. + <-ctx.lnd.SignOutputRawChannel + // Expect timeout tx to be published. timeoutTx := <-ctx.lnd.TxPublishChannel diff --git a/loopout_test.go b/loopout_test.go index 77e5259..af56c52 100644 --- a/loopout_test.go +++ b/loopout_test.go @@ -192,6 +192,9 @@ func TestCustomSweepConfTarget(t *testing.T) { expiryChan <- time.Now() + // Expect a signing request for the HTLC success transaction. + <-ctx.Lnd.SignOutputRawChannel + cfg.store.(*storeMock).assertLoopOutState(loopdb.StatePreimageRevealed) status := <-statusChan if status.State != loopdb.StatePreimageRevealed { @@ -247,6 +250,9 @@ func TestCustomSweepConfTarget(t *testing.T) { blockEpochChan <- int32(defaultConfTargetHeight) expiryChan <- time.Now() + // Expect another signing request. + <-ctx.Lnd.SignOutputRawChannel + // We should expect to see another sweep using the higher fee since the // spend hasn't been confirmed yet. sweepTx := assertSweepTx(DefaultSweepConfTarget) diff --git a/test/lnd_services_mock.go b/test/lnd_services_mock.go index 0687bb6..3e2540a 100644 --- a/test/lnd_services_mock.go +++ b/test/lnd_services_mock.go @@ -9,6 +9,7 @@ import ( "github.com/btcsuite/btcd/wire" "github.com/lightninglabs/loop/lndclient" "github.com/lightningnetwork/lnd/chainntnfs" + "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/lntypes" "github.com/lightningnetwork/lnd/lnwallet/chainfee" "github.com/lightningnetwork/lnd/zpay32" @@ -57,6 +58,8 @@ func NewMockLnd() *LndMockServices { RouterSendPaymentChannel: make(chan RouterPaymentChannelMessage), TrackPaymentChannel: make(chan TrackPaymentMessage), + SignOutputRawChannel: make(chan SignOutputRawRequest), + FailInvoiceChannel: make(chan lntypes.Hash, 2), epochChannel: make(chan int32), Height: testStartingHeight, @@ -109,6 +112,12 @@ type SingleInvoiceSubscription struct { Err chan error } +// SignOutputRawRequest contains input data for a tx signing request. +type SignOutputRawRequest struct { + Tx *wire.MsgTx + SignDescriptors []*input.SignDescriptor +} + // LndMockServices provides a full set of mocked lnd services. type LndMockServices struct { lndclient.LndServices @@ -130,6 +139,8 @@ type LndMockServices struct { RouterSendPaymentChannel chan RouterPaymentChannelMessage TrackPaymentChannel chan TrackPaymentMessage + SignOutputRawChannel chan SignOutputRawRequest + Height int32 NodePubkey string Signature []byte diff --git a/test/signer_mock.go b/test/signer_mock.go index e0d008f..992da78 100644 --- a/test/signer_mock.go +++ b/test/signer_mock.go @@ -16,6 +16,11 @@ type mockSigner struct { func (s *mockSigner) SignOutputRaw(ctx context.Context, tx *wire.MsgTx, signDescriptors []*input.SignDescriptor) ([][]byte, error) { + s.lnd.SignOutputRawChannel <- SignOutputRawRequest{ + Tx: tx, + SignDescriptors: signDescriptors, + } + rawSigs := [][]byte{{1, 2, 3}} return rawSigs, nil