mirror of
https://github.com/anyproto/any-sync.git
synced 2025-06-07 21:47:02 +09:00
92 lines
2.5 KiB
Go
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)
|
|
}
|