dc4bc/client/state_test.go

120 lines
2.6 KiB
Go

package client_test
import (
"os"
"testing"
"time"
"github.com/depools/dc4bc/client"
"github.com/stretchr/testify/require"
)
func TestLevelDBState_SaveOffset(t *testing.T) {
var (
req = require.New(t)
dbPath = "/tmp/dc4bc_test_SaveOffset"
)
defer os.RemoveAll(dbPath)
stg, err := client.NewLevelDBState(dbPath)
req.NoError(err)
var offset uint64 = 1
err = stg.SaveOffset(offset)
req.NoError(err)
loadedOffset, err := stg.LoadOffset()
req.NoError(err)
req.Equal(offset, loadedOffset)
}
func TestLevelDBState_PutOperation(t *testing.T) {
var (
req = require.New(t)
dbPath = "/tmp/dc4bc_test_PutOperation"
)
defer os.RemoveAll(dbPath)
stg, err := client.NewLevelDBState(dbPath)
req.NoError(err)
operation := &client.Operation{
ID: "operation_id",
Type: client.DKGCommits,
Payload: []byte("operation_payload"),
Result: []byte("operation_result"),
CreatedAt: time.Now(),
}
err = stg.PutOperation(operation)
req.NoError(err)
loadedOperation, err := stg.GetOperationByID(operation.ID)
req.NoError(err)
req.Equal(operation.ID, loadedOperation.ID)
req.Equal(operation.Type, loadedOperation.Type)
req.Equal(operation.Payload, loadedOperation.Payload)
req.Equal(operation.Result, loadedOperation.Result)
err = stg.PutOperation(operation)
req.Error(err)
}
func TestLevelDBState_GetOperations(t *testing.T) {
var (
req = require.New(t)
dbPath = "/tmp/dc4bc_test_PutOperation"
)
defer os.RemoveAll(dbPath)
stg, err := client.NewLevelDBState(dbPath)
req.NoError(err)
operation := &client.Operation{
ID: "operation_1",
Type: client.DKGCommits,
Payload: []byte("operation_payload"),
Result: []byte("operation_result"),
CreatedAt: time.Now(),
}
err = stg.PutOperation(operation)
req.NoError(err)
operation.ID = "operation_2"
err = stg.PutOperation(operation)
req.NoError(err)
operations, err := stg.GetOperations()
req.NoError(err)
req.Len(operations, 2)
}
func TestLevelDBState_DeleteOperation(t *testing.T) {
var (
req = require.New(t)
dbPath = "/tmp/dc4bc_test_DeleteOperation"
)
defer os.RemoveAll(dbPath)
stg, err := client.NewLevelDBState(dbPath)
req.NoError(err)
operation := &client.Operation{
ID: "operation_id",
Type: client.DKGCommits,
Payload: []byte("operation_payload"),
Result: []byte("operation_result"),
CreatedAt: time.Now(),
}
err = stg.PutOperation(operation)
req.NoError(err)
_, err = stg.GetOperationByID(operation.ID)
req.NoError(err)
err = stg.DeleteOperation(operation.ID)
req.NoError(err)
_, err = stg.GetOperationByID(operation.ID)
req.Error(err)
}