mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-13 12:33:03 +02:00
The selected_amount column of all previous swaps is filled with the total value of deposits that partook in these swaps.
107 lines
2.8 KiB
Go
107 lines
2.8 KiB
Go
package loopin
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/btcsuite/btcd/btcutil"
|
|
"github.com/btcsuite/btcd/chaincfg"
|
|
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
|
"github.com/btcsuite/btcd/wire"
|
|
"github.com/lightninglabs/loop/loopdb"
|
|
"github.com/lightninglabs/loop/staticaddr/deposit"
|
|
"github.com/lightninglabs/loop/test"
|
|
"github.com/lightningnetwork/lnd/clock"
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestMigrateSelectedSwapAmount tests the selected amount migration.
|
|
func TestMigrateSelectedSwapAmount(t *testing.T) {
|
|
// Set up test context objects.
|
|
ctxb := context.Background()
|
|
testDb := loopdb.NewTestDB(t)
|
|
testClock := clock.NewTestClock(time.Now())
|
|
defer testDb.Close()
|
|
|
|
db := loopdb.NewStoreMock(t)
|
|
depositStore := deposit.NewSqlStore(testDb.BaseDB)
|
|
swapStore := NewSqlStore(
|
|
loopdb.NewTypedStore[Querier](testDb), testClock,
|
|
&chaincfg.MainNetParams,
|
|
)
|
|
|
|
newID := func() deposit.ID {
|
|
did, err := deposit.GetRandomDepositID()
|
|
require.NoError(t, err)
|
|
|
|
return did
|
|
}
|
|
|
|
d1, d2 := &deposit.Deposit{
|
|
ID: newID(),
|
|
OutPoint: wire.OutPoint{
|
|
Hash: chainhash.Hash{0x1a, 0x2b, 0x3c, 0x4d},
|
|
Index: 0,
|
|
},
|
|
Value: btcutil.Amount(100_000),
|
|
TimeOutSweepPkScript: []byte{
|
|
0x00, 0x14, 0x1a, 0x2b, 0x3c, 0x41,
|
|
},
|
|
},
|
|
&deposit.Deposit{
|
|
ID: newID(),
|
|
OutPoint: wire.OutPoint{
|
|
Hash: chainhash.Hash{0x2a, 0x2b, 0x3c, 0x4e},
|
|
Index: 1,
|
|
},
|
|
Value: btcutil.Amount(200_000),
|
|
TimeOutSweepPkScript: []byte{
|
|
0x00, 0x14, 0x1a, 0x2b, 0x3c, 0x4d,
|
|
},
|
|
}
|
|
|
|
err := depositStore.CreateDeposit(ctxb, d1)
|
|
require.NoError(t, err)
|
|
err = depositStore.CreateDeposit(ctxb, d2)
|
|
require.NoError(t, err)
|
|
|
|
outpoints := []string{
|
|
d1.OutPoint.String(),
|
|
d2.OutPoint.String(),
|
|
}
|
|
_, clientPubKey := test.CreateKey(1)
|
|
_, serverPubKey := test.CreateKey(2)
|
|
p2wkhAddr := "bcrt1qq68r6ff4k4pjx39efs44gcyccf7unqnu5qtjjz"
|
|
addr, err := btcutil.DecodeAddress(p2wkhAddr, nil)
|
|
require.NoError(t, err)
|
|
|
|
swap := StaticAddressLoopIn{
|
|
SwapHash: lntypes.Hash{0x1, 0x2, 0x3, 0x4},
|
|
DepositOutpoints: outpoints,
|
|
ClientPubkey: clientPubKey,
|
|
ServerPubkey: serverPubKey,
|
|
HtlcTimeoutSweepAddress: addr,
|
|
Deposits: []*deposit.Deposit{d1, d2},
|
|
}
|
|
swap.SetState(Succeeded)
|
|
|
|
err = swapStore.CreateLoopIn(ctxb, &swap)
|
|
require.NoError(t, err)
|
|
|
|
storedSwaps, err := swapStore.GetStaticAddressLoopInSwapsByStates(
|
|
ctxb, FinalStates,
|
|
)
|
|
require.NoError(t, err)
|
|
require.EqualValues(t, 0, storedSwaps[0].SelectedAmount)
|
|
|
|
err = MigrateSelectedSwapAmount(ctxb, db, depositStore, swapStore)
|
|
require.NoError(t, err)
|
|
|
|
storedSwaps, err = swapStore.GetStaticAddressLoopInSwapsByStates(
|
|
ctxb, FinalStates,
|
|
)
|
|
require.NoError(t, err)
|
|
require.EqualValues(t, d1.Value+d2.Value, storedSwaps[0].SelectedAmount)
|
|
}
|