1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-07 21:47:02 +09:00
any-sync/node/nodeclient/nodeclient_test.go
2024-03-26 16:16:27 +01:00

92 lines
2.5 KiB
Go

package nodeclient
import (
"context"
"fmt"
"testing"
"github.com/stretchr/testify/require"
"go.uber.org/mock/gomock"
"github.com/anyproto/any-sync/commonspace/spacesyncproto"
"github.com/anyproto/any-sync/commonspace/spacesyncproto/mock_spacesyncproto"
"github.com/anyproto/any-sync/consensus/consensusproto"
)
var ctx = context.Background()
type fixture struct {
*nodeClient
ctrl *gomock.Controller
}
func (f *fixture) finish() {
f.ctrl.Finish()
}
func newFixture(t *testing.T) *fixture {
ctrl := gomock.NewController(t)
return &fixture{
nodeClient: New().(*nodeClient),
ctrl: ctrl,
}
}
func TestNodeClient_AclGetRecords(t *testing.T) {
f := newFixture(t)
defer f.finish()
spaceId := "spaceId"
aclHead := "aclHead"
cl := mock_spacesyncproto.NewMockDRPCSpaceSyncClient(f.ctrl)
clientDo = func(client *nodeClient, ctx context.Context, s string, f func(cl spacesyncproto.DRPCSpaceSyncClient) error) error {
return f(cl)
}
var (
expectedRecs []*consensusproto.RawRecordWithId
expectedByteRecs [][]byte
total = 5
)
for i := 0; i < total; i++ {
expectedRecs = append(expectedRecs, &consensusproto.RawRecordWithId{
Id: fmt.Sprint(i),
})
marshalled, err := expectedRecs[i].Marshal()
require.NoError(t, err)
expectedByteRecs = append(expectedByteRecs, marshalled)
}
cl.EXPECT().AclGetRecords(ctx, &spacesyncproto.AclGetRecordsRequest{
SpaceId: spaceId,
AclHead: aclHead,
}).Return(&spacesyncproto.AclGetRecordsResponse{Records: expectedByteRecs}, nil)
recs, err := f.AclGetRecords(ctx, spaceId, aclHead)
require.NoError(t, err)
require.Equal(t, expectedRecs, recs)
}
func TestNodeClient_AclAddRecords(t *testing.T) {
f := newFixture(t)
defer f.finish()
spaceId := "spaceId"
cl := mock_spacesyncproto.NewMockDRPCSpaceSyncClient(f.ctrl)
clientDo = func(client *nodeClient, ctx context.Context, s string, f func(cl spacesyncproto.DRPCSpaceSyncClient) error) error {
return f(cl)
}
sendRec := &consensusproto.RawRecord{
AcceptorTimestamp: 10,
}
data, err := sendRec.Marshal()
require.NoError(t, err)
expectedRec := &consensusproto.RawRecordWithId{
Id: "recId",
Payload: data,
}
cl.EXPECT().AclAddRecord(ctx, &spacesyncproto.AclAddRecordRequest{
SpaceId: spaceId,
Payload: data,
}).Return(&spacesyncproto.AclAddRecordResponse{RecordId: expectedRec.Id, Payload: expectedRec.Payload}, nil)
rec, err := f.AclAddRecord(ctx, spaceId, sendRec)
require.NoError(t, err)
require.Equal(t, expectedRec, rec)
}