Files
ark/pkg/client-sdk/store/store_test.go
Pietralberto Mazza 89df461623 Update client sdk (#207)
* Add bitcoin networks

* Refactor client

* Refactor explorer

* Refactor store

* Refactor wallet

* Refactor sdk client

* Refactor wasm & Update examples

* Move common util funcs to internal/utils

* Move to constants for service types

* Add unit tests

* Parallelize tests

* Lint

* Add job to gh action

* go mod tidy

* Fixes

* Fixes

* Fix compose file

* Fixes

* Fixes after review:
* Drop factory pattern
* Drop password from ark client methods
* Make singlekey wallet manage store and wallet store instead of defining WalletStore as extension of Store
* Move constants to arksdk module
* Drop config and expect directory store and wallet as ark client factory args

* Fix

* Add constants for bitcoin/liquid explorer

* Fix test

* Fix wasm

* Rename client.Client to client.ASPClient

* Rename store.Store to store.ConfigStore

* Rename wallet.Wallet to wallet.WalletService

* Renamings

* Lint

* Fixes

* Move everything to internal/utils & move ComputeVtxoTaprootScript to common

* Go mod tidy
2024-07-30 16:08:23 +02:00

91 lines
2.1 KiB
Go

package store_test
import (
"context"
"testing"
"github.com/ark-network/ark-sdk/client"
"github.com/ark-network/ark-sdk/store"
filestore "github.com/ark-network/ark-sdk/store/file"
inmemorystore "github.com/ark-network/ark-sdk/store/inmemory"
"github.com/ark-network/ark-sdk/wallet"
"github.com/ark-network/ark/common"
"github.com/btcsuite/btcd/btcec/v2"
"github.com/stretchr/testify/require"
)
func TestStore(t *testing.T) {
key, _ := btcec.NewPrivateKey()
ctx := context.Background()
testStoreData := store.StoreData{
AspUrl: "localhost:8080",
AspPubkey: key.PubKey(),
WalletType: wallet.SingleKeyWallet,
ClientType: client.GrpcClient,
Network: common.LiquidRegTest,
RoundLifetime: 512,
UnilateralExitDelay: 512,
MinRelayFee: 300,
}
tests := []struct {
name string
}{
{
name: store.InMemoryStore,
},
{
name: store.FileStore,
},
}
for i := range tests {
tt := tests[i]
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
var storeSvc store.ConfigStore
var err error
switch tt.name {
case store.InMemoryStore:
storeSvc, err = inmemorystore.NewConfigStore()
case store.FileStore:
storeSvc, err = filestore.NewConfigStore(t.TempDir())
}
require.NoError(t, err)
require.NotNil(t, storeSvc)
// Check empty data when store is empty.
data, err := storeSvc.GetData(ctx)
require.NoError(t, err)
require.Nil(t, data)
// Check no side effects when cleaning an empty store.
err = storeSvc.CleanData(ctx)
require.NoError(t, err)
// Check add and retrieve data.
err = storeSvc.AddData(ctx, testStoreData)
require.NoError(t, err)
data, err = storeSvc.GetData(ctx)
require.NoError(t, err)
require.Equal(t, testStoreData, *data)
// Check clean and retrieve data.
err = storeSvc.CleanData(ctx)
require.NoError(t, err)
data, err = storeSvc.GetData(ctx)
require.NoError(t, err)
require.Nil(t, data)
// Check overwriting the store.
err = storeSvc.AddData(ctx, testStoreData)
require.NoError(t, err)
err = storeSvc.AddData(ctx, testStoreData)
require.NoError(t, err)
})
}
}