From ae90afb97d1c9a66df8a0cb3cdeecf2ba98a3e10 Mon Sep 17 00:00:00 2001 From: Mikhail Rakhmanov Date: Mon, 12 May 2025 13:59:29 +0200 Subject: [PATCH] Update verifier logic --- acl/object.go | 3 +- commonspace/acl/aclclient/acjoiningclient.go | 3 +- commonspace/acl/aclwaiter/aclwaiter.go | 3 +- commonspace/deletion_test.go | 2 +- .../object/acl/list/aclrecordbuilder.go | 5 +- commonspace/object/acl/list/aclstate.go | 5 +- commonspace/object/acl/list/acltestsuite.go | 9 +- commonspace/object/acl/list/list.go | 23 +----- commonspace/object/acl/list/list_test.go | 3 +- commonspace/object/acl/list/listutils.go | 7 +- commonspace/object/acl/list/validator.go | 5 +- .../object/acl/recordverifier/alwaysaccept.go | 28 ------- .../acl/recordverifier/recordverifier.go | 8 +- .../object/acl/recordverifier/validatefull.go | 28 +++++++ commonspace/object/keyvalue/keyvalue_test.go | 3 +- .../object/tree/objecttree/objecttree_test.go | 5 +- commonspace/spacepayloads/payloads.go | 5 +- commonspace/spacerpc_test.go | 2 +- .../spacestorage/migration/aclmigrator.go | 3 +- .../mock/mock_paymentserviceclient.go | 82 +++++++++---------- 20 files changed, 116 insertions(+), 116 deletions(-) delete mode 100644 commonspace/object/acl/recordverifier/alwaysaccept.go create mode 100644 commonspace/object/acl/recordverifier/validatefull.go diff --git a/acl/object.go b/acl/object.go index c265a08c..32a7487d 100644 --- a/acl/object.go +++ b/acl/object.go @@ -10,6 +10,7 @@ import ( "go.uber.org/zap" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" ) @@ -58,7 +59,7 @@ func (a *aclObject) AddConsensusRecords(recs []*consensusproto.RawRecordWithId) if a.store, a.consErr = list.NewInMemoryStorage(a.id, recs); a.consErr != nil { return } - if a.AclList, a.consErr = list.BuildAclListWithIdentity(a.aclService.accountService.Account(), a.store, list.NoOpAcceptorVerifier{}); a.consErr != nil { + if a.AclList, a.consErr = list.BuildAclListWithIdentity(a.aclService.accountService.Account(), a.store, recordverifier.NewValidateFull()); a.consErr != nil { return } } else { diff --git a/commonspace/acl/aclclient/acjoiningclient.go b/commonspace/acl/aclclient/acjoiningclient.go index 883fafa1..de958b31 100644 --- a/commonspace/acl/aclclient/acjoiningclient.go +++ b/commonspace/acl/aclclient/acjoiningclient.go @@ -9,6 +9,7 @@ import ( "github.com/anyproto/any-sync/app" "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/node/nodeclient" ) @@ -59,7 +60,7 @@ func (c *aclJoiningClient) getAcl(ctx context.Context, spaceId string) (l list.A if err != nil { return } - return list.BuildAclListWithIdentity(c.keys, storage, list.NoOpAcceptorVerifier{}) + return list.BuildAclListWithIdentity(c.keys, storage, recordverifier.NewValidateFull()) } func (c *aclJoiningClient) CancelJoin(ctx context.Context, spaceId string) (err error) { diff --git a/commonspace/acl/aclwaiter/aclwaiter.go b/commonspace/acl/aclwaiter/aclwaiter.go index e26633f6..e9d8eb10 100644 --- a/commonspace/acl/aclwaiter/aclwaiter.go +++ b/commonspace/acl/aclwaiter/aclwaiter.go @@ -14,6 +14,7 @@ import ( "github.com/anyproto/any-sync/commonspace/acl/aclclient" "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/util/periodicsync" ) @@ -82,7 +83,7 @@ func (a *aclWaiter) loop(ctx context.Context) error { if err != nil { return err } - acl, err := list.BuildAclListWithIdentity(a.keys, storage, list.NoOpAcceptorVerifier{}) + acl, err := list.BuildAclListWithIdentity(a.keys, storage, recordverifier.NewValidateFull()) if err != nil { return err } diff --git a/commonspace/deletion_test.go b/commonspace/deletion_test.go index 2f49ce63..377e371d 100644 --- a/commonspace/deletion_test.go +++ b/commonspace/deletion_test.go @@ -22,7 +22,7 @@ func mockDeps() Deps { return Deps{ TreeSyncer: mockTreeSyncer{}, SyncStatus: syncstatus.NewNoOpSyncStatus(), - recordVerifier: recordverifier.NewAlwaysAccept(), + recordVerifier: recordverifier.NewValidateFull(), } } diff --git a/commonspace/object/acl/list/aclrecordbuilder.go b/commonspace/object/acl/list/aclrecordbuilder.go index aaff083f..84afae70 100644 --- a/commonspace/object/acl/list/aclrecordbuilder.go +++ b/commonspace/object/acl/list/aclrecordbuilder.go @@ -8,6 +8,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/util/cidutil" "github.com/anyproto/any-sync/util/crypto" @@ -105,11 +106,11 @@ type aclRecordBuilder struct { id string keyStorage crypto.KeyStorage accountKeys *accountdata.AccountKeys - verifier AcceptorVerifier + verifier recordverifier.AcceptorVerifier state *AclState } -func NewAclRecordBuilder(id string, keyStorage crypto.KeyStorage, keys *accountdata.AccountKeys, verifier AcceptorVerifier) AclRecordBuilder { +func NewAclRecordBuilder(id string, keyStorage crypto.KeyStorage, keys *accountdata.AccountKeys, verifier recordverifier.AcceptorVerifier) AclRecordBuilder { return &aclRecordBuilder{ id: id, keyStorage: keyStorage, diff --git a/commonspace/object/acl/list/aclstate.go b/commonspace/object/acl/list/aclstate.go index 1afb8892..5c642f52 100644 --- a/commonspace/object/acl/list/aclstate.go +++ b/commonspace/object/acl/list/aclstate.go @@ -9,6 +9,7 @@ import ( "github.com/anyproto/any-sync/app/logger" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/util/crypto" ) @@ -87,7 +88,7 @@ type AclState struct { func newAclStateWithKeys( rootRecord *AclRecord, key crypto.PrivKey, - verifier AcceptorVerifier) (st *AclState, err error) { + verifier recordverifier.AcceptorVerifier) (st *AclState, err error) { st = &AclState{ id: rootRecord.Id, key: key, @@ -107,7 +108,7 @@ func newAclStateWithKeys( return st, nil } -func newAclState(rootRecord *AclRecord, verifier AcceptorVerifier) (st *AclState, err error) { +func newAclState(rootRecord *AclRecord, verifier recordverifier.AcceptorVerifier) (st *AclState, err error) { st = &AclState{ id: rootRecord.Id, keys: make(map[string]AclKeys), diff --git a/commonspace/object/acl/list/acltestsuite.go b/commonspace/object/acl/list/acltestsuite.go index 90c71e28..43621eec 100644 --- a/commonspace/object/acl/list/acltestsuite.go +++ b/commonspace/object/acl/list/acltestsuite.go @@ -7,6 +7,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/util/crypto" ) @@ -86,7 +87,7 @@ func (a *AclTestExecutor) buildBatchRequest(args []string, acl AclList, getPerm return nil, err } ownerAcl := a.actualAccounts[a.owner].Acl.(*aclList) - accountAcl, err := BuildAclListWithIdentity(keys, ownerAcl.storage, NoOpAcceptorVerifier{}) + accountAcl, err := BuildAclListWithIdentity(keys, ownerAcl.storage, recordverifier.NewValidateFull()) if err != nil { return nil, err } @@ -273,7 +274,7 @@ func (a *AclTestExecutor) Execute(cmd string) (err error) { } else { ownerAcl := a.actualAccounts[a.owner].Acl.(*aclList) copyStorage := ownerAcl.storage.(*inMemoryStorage).Copy() - accountAcl, err := BuildAclListWithIdentity(keys, copyStorage, NoOpAcceptorVerifier{}) + accountAcl, err := BuildAclListWithIdentity(keys, copyStorage, recordverifier.NewValidateFull()) if err != nil { return err } @@ -291,7 +292,7 @@ func (a *AclTestExecutor) Execute(cmd string) (err error) { keys := a.actualAccounts[account].Keys ownerAcl := a.actualAccounts[a.owner].Acl.(*aclList) copyStorage := ownerAcl.storage.(*inMemoryStorage).Copy() - accountAcl, err := BuildAclListWithIdentity(keys, copyStorage, NoOpAcceptorVerifier{}) + accountAcl, err := BuildAclListWithIdentity(keys, copyStorage, recordverifier.NewValidateFull()) if err != nil { return err } @@ -458,7 +459,7 @@ func (a *AclTestExecutor) Execute(cmd string) (err error) { return err } ownerAcl := a.actualAccounts[a.owner].Acl.(*aclList) - accountAcl, err := BuildAclListWithIdentity(keys, ownerAcl.storage, NoOpAcceptorVerifier{}) + accountAcl, err := BuildAclListWithIdentity(keys, ownerAcl.storage, recordverifier.NewValidateFull()) if err != nil { return err } diff --git a/commonspace/object/acl/list/list.go b/commonspace/object/acl/list/list.go index 4890f24a..b7706634 100644 --- a/commonspace/object/acl/list/list.go +++ b/commonspace/object/acl/list/list.go @@ -8,6 +8,7 @@ import ( "sync" "github.com/anyproto/any-sync/commonspace/object/accountdata" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/util/cidutil" "github.com/anyproto/any-sync/util/crypto" @@ -26,22 +27,6 @@ type RWLocker interface { RUnlock() } -type AcceptorVerifier interface { - VerifyAcceptor(rec *consensusproto.RawRecord) (err error) - ShouldValidate() bool -} - -type NoOpAcceptorVerifier struct { -} - -func (n NoOpAcceptorVerifier) VerifyAcceptor(rec *consensusproto.RawRecord) (err error) { - return nil -} - -func (n NoOpAcceptorVerifier) ShouldValidate() bool { - return true -} - type AclList interface { RWLocker Id() string @@ -80,7 +65,7 @@ type aclList struct { keyStorage crypto.KeyStorage aclState *AclState storage Storage - verifier AcceptorVerifier + verifier recordverifier.AcceptorVerifier sync.RWMutex } @@ -90,10 +75,10 @@ type internalDeps struct { keyStorage crypto.KeyStorage stateBuilder *aclStateBuilder recordBuilder AclRecordBuilder - acceptorVerifier AcceptorVerifier + acceptorVerifier recordverifier.AcceptorVerifier } -func BuildAclListWithIdentity(acc *accountdata.AccountKeys, storage Storage, verifier AcceptorVerifier) (AclList, error) { +func BuildAclListWithIdentity(acc *accountdata.AccountKeys, storage Storage, verifier recordverifier.AcceptorVerifier) (AclList, error) { keyStorage := crypto.NewKeyStorage() deps := internalDeps{ storage: storage, diff --git a/commonspace/object/acl/list/list_test.go b/commonspace/object/acl/list/list_test.go index 16888492..d920febd 100644 --- a/commonspace/object/acl/list/list_test.go +++ b/commonspace/object/acl/list/list_test.go @@ -13,6 +13,7 @@ import ( "github.com/anyproto/any-sync/commonspace/headsync/headstorage" "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/util/crypto" ) @@ -279,7 +280,7 @@ func TestAclList_FixAcceptPanic(t *testing.T) { fx := newFixture(t) fx.inviteAccount(t, AclPermissions(aclrecordproto.AclUserPermissions_Writer)) - _, err := BuildAclListWithIdentity(fx.accountKeys, fx.ownerAcl.storage, NoOpAcceptorVerifier{}) + _, err := BuildAclListWithIdentity(fx.accountKeys, fx.ownerAcl.storage, recordverifier.NewValidateFull()) require.NoError(t, err) } diff --git a/commonspace/object/acl/list/listutils.go b/commonspace/object/acl/list/listutils.go index a404e7bd..35880240 100644 --- a/commonspace/object/acl/list/listutils.go +++ b/commonspace/object/acl/list/listutils.go @@ -2,6 +2,7 @@ package list import ( "github.com/anyproto/any-sync/commonspace/object/accountdata" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/util/crypto" ) @@ -17,7 +18,7 @@ func newAclWithStoreProvider(root *consensusproto.RawRecordWithId, keys *account if err != nil { return nil, err } - return BuildAclListWithIdentity(keys, storage, NoOpAcceptorVerifier{}) + return BuildAclListWithIdentity(keys, storage, recordverifier.NewValidateFull()) } func newDerivedAclWithStoreProvider(spaceId string, keys *accountdata.AccountKeys, metadata []byte, storeProvider StorageProvider) (AclList, error) { @@ -43,11 +44,11 @@ func newInMemoryAclWithRoot(keys *accountdata.AccountKeys, root *consensusproto. if err != nil { return nil, err } - return BuildAclListWithIdentity(keys, st, NoOpAcceptorVerifier{}) + return BuildAclListWithIdentity(keys, st, recordverifier.NewValidateFull()) } func buildDerivedRoot(spaceId string, keys *accountdata.AccountKeys, metadata []byte) (root *consensusproto.RawRecordWithId, err error) { - builder := NewAclRecordBuilder("", crypto.NewKeyStorage(), keys, NoOpAcceptorVerifier{}) + builder := NewAclRecordBuilder("", crypto.NewKeyStorage(), keys, recordverifier.NewValidateFull()) masterKey, _, err := crypto.GenerateRandomEd25519KeyPair() if err != nil { return nil, err diff --git a/commonspace/object/acl/list/validator.go b/commonspace/object/acl/list/validator.go index c927c557..6ddd8b23 100644 --- a/commonspace/object/acl/list/validator.go +++ b/commonspace/object/acl/list/validator.go @@ -4,6 +4,7 @@ import ( "golang.org/x/exp/slices" "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/util/crypto" ) @@ -27,10 +28,10 @@ type ContentValidator interface { type contentValidator struct { keyStore crypto.KeyStorage aclState *AclState - verifier AcceptorVerifier + verifier recordverifier.AcceptorVerifier } -func newContentValidator(keyStore crypto.KeyStorage, aclState *AclState, verifier AcceptorVerifier) ContentValidator { +func newContentValidator(keyStore crypto.KeyStorage, aclState *AclState, verifier recordverifier.AcceptorVerifier) ContentValidator { return &contentValidator{ keyStore: keyStore, aclState: aclState, diff --git a/commonspace/object/acl/recordverifier/alwaysaccept.go b/commonspace/object/acl/recordverifier/alwaysaccept.go deleted file mode 100644 index 4dcdffe5..00000000 --- a/commonspace/object/acl/recordverifier/alwaysaccept.go +++ /dev/null @@ -1,28 +0,0 @@ -package recordverifier - -import ( - "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/consensus/consensusproto" -) - -type AlwaysAccept struct{} - -func NewAlwaysAccept() RecordVerifier { - return &AlwaysAccept{} -} - -func (a *AlwaysAccept) Init(_ *app.App) error { - return nil -} - -func (a *AlwaysAccept) Name() string { - return CName -} - -func (a *AlwaysAccept) VerifyAcceptor(_ *consensusproto.RawRecord) error { - return nil -} - -func (a *AlwaysAccept) ShouldValidate() bool { - return true -} diff --git a/commonspace/object/acl/recordverifier/recordverifier.go b/commonspace/object/acl/recordverifier/recordverifier.go index 222b14c0..c06d3778 100644 --- a/commonspace/object/acl/recordverifier/recordverifier.go +++ b/commonspace/object/acl/recordverifier/recordverifier.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/anyproto/any-sync/app" - "github.com/anyproto/any-sync/commonspace/object/acl/list" "github.com/anyproto/any-sync/consensus/consensusproto" "github.com/anyproto/any-sync/nodeconf" "github.com/anyproto/any-sync/util/crypto" @@ -12,9 +11,14 @@ import ( const CName = "common.acl.recordverifier" +type AcceptorVerifier interface { + VerifyAcceptor(rec *consensusproto.RawRecord) (err error) + ShouldValidate() bool +} + type RecordVerifier interface { app.Component - list.AcceptorVerifier + AcceptorVerifier } func New() RecordVerifier { diff --git a/commonspace/object/acl/recordverifier/validatefull.go b/commonspace/object/acl/recordverifier/validatefull.go new file mode 100644 index 00000000..9458c712 --- /dev/null +++ b/commonspace/object/acl/recordverifier/validatefull.go @@ -0,0 +1,28 @@ +package recordverifier + +import ( + "github.com/anyproto/any-sync/app" + "github.com/anyproto/any-sync/consensus/consensusproto" +) + +type ValidateFull struct{} + +func NewValidateFull() RecordVerifier { + return &ValidateFull{} +} + +func (a *ValidateFull) Init(_ *app.App) error { + return nil +} + +func (a *ValidateFull) Name() string { + return CName +} + +func (a *ValidateFull) VerifyAcceptor(_ *consensusproto.RawRecord) error { + return nil +} + +func (a *ValidateFull) ShouldValidate() bool { + return true +} diff --git a/commonspace/object/keyvalue/keyvalue_test.go b/commonspace/object/keyvalue/keyvalue_test.go index 301d9d0d..025e1e15 100644 --- a/commonspace/object/keyvalue/keyvalue_test.go +++ b/commonspace/object/keyvalue/keyvalue_test.go @@ -17,6 +17,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/commonspace/object/keyvalue/keyvaluestorage" "github.com/anyproto/any-sync/commonspace/object/keyvalue/keyvaluestorage/innerstorage" "github.com/anyproto/any-sync/commonspace/spacepayloads" @@ -280,7 +281,7 @@ func newFixture(t *testing.T, keys *accountdata.AccountKeys, spacePayload spaces require.NoError(t, err) aclStorage, err := storage.AclStorage() require.NoError(t, err) - aclList, err := list.BuildAclListWithIdentity(keys, aclStorage, list.NoOpAcceptorVerifier{}) + aclList, err := list.BuildAclListWithIdentity(keys, aclStorage, recordverifier.NewValidateFull()) require.NoError(t, err) storageId := "kv.storage" rpcHandler := rpctest.NewTestServer() diff --git a/commonspace/object/tree/objecttree/objecttree_test.go b/commonspace/object/tree/objecttree/objecttree_test.go index 0357c0d4..d379086b 100644 --- a/commonspace/object/tree/objecttree/objecttree_test.go +++ b/commonspace/object/tree/objecttree/objecttree_test.go @@ -19,6 +19,7 @@ import ( "github.com/anyproto/any-sync/commonspace/headsync/headstorage" "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/object/tree/treestorage" ) @@ -390,7 +391,7 @@ func TestObjectTree(t *testing.T) { require.NoError(t, err) prevId = rec.Id } - beforeAcl, err := list.BuildAclListWithIdentity(account.Keys, beforeStorage, list.NoOpAcceptorVerifier{}) + beforeAcl, err := list.BuildAclListWithIdentity(account.Keys, beforeStorage, recordverifier.NewValidateFull()) require.NoError(t, err) err = exec.Execute("a.invite::invId") require.NoError(t, err) @@ -462,7 +463,7 @@ func TestObjectTree(t *testing.T) { require.NoError(t, err) storage, err := list.NewInMemoryStorage(prevAclRecs[0].Id, prevAclRecs) require.NoError(t, err) - acl, err := list.BuildAclListWithIdentity(bAccount.Keys, storage, list.NoOpAcceptorVerifier{}) + acl, err := list.BuildAclListWithIdentity(bAccount.Keys, storage, recordverifier.NewValidateFull()) require.NoError(t, err) // creating tree with old storage which doesn't have a new invite record bTree, err := BuildKeyFilterableObjectTree(bStore, acl) diff --git a/commonspace/spacepayloads/payloads.go b/commonspace/spacepayloads/payloads.go index ecb10a0d..594a7eb2 100644 --- a/commonspace/spacepayloads/payloads.go +++ b/commonspace/spacepayloads/payloads.go @@ -12,6 +12,7 @@ import ( "github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/commonspace/object/tree/objecttree" "github.com/anyproto/any-sync/commonspace/object/tree/treechangeproto" "github.com/anyproto/any-sync/commonspace/spacestorage" @@ -96,7 +97,7 @@ func StoragePayloadForSpaceCreate(payload SpaceCreatePayload) (storagePayload sp // building acl root keyStorage := crypto.NewKeyStorage() - aclBuilder := list.NewAclRecordBuilder("", keyStorage, nil, list.NoOpAcceptorVerifier{}) + aclBuilder := list.NewAclRecordBuilder("", keyStorage, nil, recordverifier.NewValidateFull()) aclRoot, err := aclBuilder.BuildRoot(list.RootContent{ PrivKey: payload.SigningKey, MasterKey: payload.MasterKey, @@ -187,7 +188,7 @@ func StoragePayloadForSpaceDerive(payload SpaceDerivePayload) (storagePayload sp // building acl root keyStorage := crypto.NewKeyStorage() - aclBuilder := list.NewAclRecordBuilder("", keyStorage, nil, list.NoOpAcceptorVerifier{}) + aclBuilder := list.NewAclRecordBuilder("", keyStorage, nil, recordverifier.NewValidateFull()) aclRoot, err := aclBuilder.BuildRoot(list.RootContent{ PrivKey: payload.SigningKey, MasterKey: payload.MasterKey, diff --git a/commonspace/spacerpc_test.go b/commonspace/spacerpc_test.go index 892f0f49..1efdacd7 100644 --- a/commonspace/spacerpc_test.go +++ b/commonspace/spacerpc_test.go @@ -130,7 +130,7 @@ func (r *RpcServer) getSpace(ctx context.Context, spaceId string) (sp Space, err sp, err = r.spaceService.NewSpace(ctx, spaceId, Deps{ TreeSyncer: NewTreeSyncer(spaceId), SyncStatus: syncstatus.NewNoOpSyncStatus(), - recordVerifier: recordverifier.NewAlwaysAccept(), + recordVerifier: recordverifier.NewValidateFull(), }) if err != nil { return nil, err diff --git a/commonspace/spacestorage/migration/aclmigrator.go b/commonspace/spacestorage/migration/aclmigrator.go index 2c04f1e8..0ca48e59 100644 --- a/commonspace/spacestorage/migration/aclmigrator.go +++ b/commonspace/spacestorage/migration/aclmigrator.go @@ -10,6 +10,7 @@ import ( "github.com/anyproto/any-sync/commonspace/headsync/headstorage" "github.com/anyproto/any-sync/commonspace/object/accountdata" "github.com/anyproto/any-sync/commonspace/object/acl/list" + "github.com/anyproto/any-sync/commonspace/object/acl/recordverifier" "github.com/anyproto/any-sync/commonspace/spacestorage/oldstorage" "github.com/anyproto/any-sync/consensus/consensusproto" ) @@ -31,7 +32,7 @@ func migrateAclList(ctx context.Context, oldStorage oldstorage.ListStorage, head if err != nil { return nil, fmt.Errorf("migration: failed to generate keys: %w", err) } - aclList, err := list.BuildAclListWithIdentity(keys, aclStorage, &list.NoOpAcceptorVerifier{}) + aclList, err := list.BuildAclListWithIdentity(keys, aclStorage, recordverifier.NewValidateFull()) if err != nil { return nil, fmt.Errorf("migration: failed to build acl list: %w", err) } diff --git a/paymentservice/paymentserviceclient/mock/mock_paymentserviceclient.go b/paymentservice/paymentserviceclient/mock/mock_paymentserviceclient.go index 080941a6..2716f81b 100644 --- a/paymentservice/paymentserviceclient/mock/mock_paymentserviceclient.go +++ b/paymentservice/paymentserviceclient/mock/mock_paymentserviceclient.go @@ -5,7 +5,6 @@ // // mockgen -destination=mock/mock_paymentserviceclient.go -package=mock_paymentserviceclient github.com/anyproto/any-sync/paymentservice/paymentserviceclient AnyPpClientService // - // Package mock_paymentserviceclient is a generated GoMock package. package mock_paymentserviceclient @@ -22,7 +21,6 @@ import ( type MockAnyPpClientService struct { ctrl *gomock.Controller recorder *MockAnyPpClientServiceMockRecorder - isgomock struct{} } // MockAnyPpClientServiceMockRecorder is the mock recorder for MockAnyPpClientService. @@ -43,122 +41,122 @@ func (m *MockAnyPpClientService) EXPECT() *MockAnyPpClientServiceMockRecorder { } // BuySubscription mocks base method. -func (m *MockAnyPpClientService) BuySubscription(ctx context.Context, in *paymentserviceproto.BuySubscriptionRequestSigned) (*paymentserviceproto.BuySubscriptionResponse, error) { +func (m *MockAnyPpClientService) BuySubscription(arg0 context.Context, arg1 *paymentserviceproto.BuySubscriptionRequestSigned) (*paymentserviceproto.BuySubscriptionResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "BuySubscription", ctx, in) + ret := m.ctrl.Call(m, "BuySubscription", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.BuySubscriptionResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // BuySubscription indicates an expected call of BuySubscription. -func (mr *MockAnyPpClientServiceMockRecorder) BuySubscription(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) BuySubscription(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuySubscription", reflect.TypeOf((*MockAnyPpClientService)(nil).BuySubscription), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BuySubscription", reflect.TypeOf((*MockAnyPpClientService)(nil).BuySubscription), arg0, arg1) } // FinalizeSubscription mocks base method. -func (m *MockAnyPpClientService) FinalizeSubscription(ctx context.Context, in *paymentserviceproto.FinalizeSubscriptionRequestSigned) (*paymentserviceproto.FinalizeSubscriptionResponse, error) { +func (m *MockAnyPpClientService) FinalizeSubscription(arg0 context.Context, arg1 *paymentserviceproto.FinalizeSubscriptionRequestSigned) (*paymentserviceproto.FinalizeSubscriptionResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "FinalizeSubscription", ctx, in) + ret := m.ctrl.Call(m, "FinalizeSubscription", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.FinalizeSubscriptionResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // FinalizeSubscription indicates an expected call of FinalizeSubscription. -func (mr *MockAnyPpClientServiceMockRecorder) FinalizeSubscription(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) FinalizeSubscription(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeSubscription", reflect.TypeOf((*MockAnyPpClientService)(nil).FinalizeSubscription), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalizeSubscription", reflect.TypeOf((*MockAnyPpClientService)(nil).FinalizeSubscription), arg0, arg1) } // GetAllTiers mocks base method. -func (m *MockAnyPpClientService) GetAllTiers(ctx context.Context, in *paymentserviceproto.GetTiersRequestSigned) (*paymentserviceproto.GetTiersResponse, error) { +func (m *MockAnyPpClientService) GetAllTiers(arg0 context.Context, arg1 *paymentserviceproto.GetTiersRequestSigned) (*paymentserviceproto.GetTiersResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAllTiers", ctx, in) + ret := m.ctrl.Call(m, "GetAllTiers", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.GetTiersResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // GetAllTiers indicates an expected call of GetAllTiers. -func (mr *MockAnyPpClientServiceMockRecorder) GetAllTiers(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) GetAllTiers(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllTiers", reflect.TypeOf((*MockAnyPpClientService)(nil).GetAllTiers), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllTiers", reflect.TypeOf((*MockAnyPpClientService)(nil).GetAllTiers), arg0, arg1) } // GetSubscriptionPortalLink mocks base method. -func (m *MockAnyPpClientService) GetSubscriptionPortalLink(ctx context.Context, in *paymentserviceproto.GetSubscriptionPortalLinkRequestSigned) (*paymentserviceproto.GetSubscriptionPortalLinkResponse, error) { +func (m *MockAnyPpClientService) GetSubscriptionPortalLink(arg0 context.Context, arg1 *paymentserviceproto.GetSubscriptionPortalLinkRequestSigned) (*paymentserviceproto.GetSubscriptionPortalLinkResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSubscriptionPortalLink", ctx, in) + ret := m.ctrl.Call(m, "GetSubscriptionPortalLink", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.GetSubscriptionPortalLinkResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // GetSubscriptionPortalLink indicates an expected call of GetSubscriptionPortalLink. -func (mr *MockAnyPpClientServiceMockRecorder) GetSubscriptionPortalLink(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) GetSubscriptionPortalLink(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscriptionPortalLink", reflect.TypeOf((*MockAnyPpClientService)(nil).GetSubscriptionPortalLink), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscriptionPortalLink", reflect.TypeOf((*MockAnyPpClientService)(nil).GetSubscriptionPortalLink), arg0, arg1) } // GetSubscriptionStatus mocks base method. -func (m *MockAnyPpClientService) GetSubscriptionStatus(ctx context.Context, in *paymentserviceproto.GetSubscriptionRequestSigned) (*paymentserviceproto.GetSubscriptionResponse, error) { +func (m *MockAnyPpClientService) GetSubscriptionStatus(arg0 context.Context, arg1 *paymentserviceproto.GetSubscriptionRequestSigned) (*paymentserviceproto.GetSubscriptionResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetSubscriptionStatus", ctx, in) + ret := m.ctrl.Call(m, "GetSubscriptionStatus", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.GetSubscriptionResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // GetSubscriptionStatus indicates an expected call of GetSubscriptionStatus. -func (mr *MockAnyPpClientServiceMockRecorder) GetSubscriptionStatus(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) GetSubscriptionStatus(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscriptionStatus", reflect.TypeOf((*MockAnyPpClientService)(nil).GetSubscriptionStatus), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscriptionStatus", reflect.TypeOf((*MockAnyPpClientService)(nil).GetSubscriptionStatus), arg0, arg1) } // GetVerificationEmail mocks base method. -func (m *MockAnyPpClientService) GetVerificationEmail(ctx context.Context, in *paymentserviceproto.GetVerificationEmailRequestSigned) (*paymentserviceproto.GetVerificationEmailResponse, error) { +func (m *MockAnyPpClientService) GetVerificationEmail(arg0 context.Context, arg1 *paymentserviceproto.GetVerificationEmailRequestSigned) (*paymentserviceproto.GetVerificationEmailResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetVerificationEmail", ctx, in) + ret := m.ctrl.Call(m, "GetVerificationEmail", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.GetVerificationEmailResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // GetVerificationEmail indicates an expected call of GetVerificationEmail. -func (mr *MockAnyPpClientServiceMockRecorder) GetVerificationEmail(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) GetVerificationEmail(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVerificationEmail", reflect.TypeOf((*MockAnyPpClientService)(nil).GetVerificationEmail), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVerificationEmail", reflect.TypeOf((*MockAnyPpClientService)(nil).GetVerificationEmail), arg0, arg1) } // Init mocks base method. -func (m *MockAnyPpClientService) Init(a *app.App) error { +func (m *MockAnyPpClientService) Init(arg0 *app.App) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Init", a) + ret := m.ctrl.Call(m, "Init", arg0) ret0, _ := ret[0].(error) return ret0 } // Init indicates an expected call of Init. -func (mr *MockAnyPpClientServiceMockRecorder) Init(a any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) Init(arg0 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", reflect.TypeOf((*MockAnyPpClientService)(nil).Init), a) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Init", reflect.TypeOf((*MockAnyPpClientService)(nil).Init), arg0) } // IsNameValid mocks base method. -func (m *MockAnyPpClientService) IsNameValid(ctx context.Context, in *paymentserviceproto.IsNameValidRequest) (*paymentserviceproto.IsNameValidResponse, error) { +func (m *MockAnyPpClientService) IsNameValid(arg0 context.Context, arg1 *paymentserviceproto.IsNameValidRequest) (*paymentserviceproto.IsNameValidResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "IsNameValid", ctx, in) + ret := m.ctrl.Call(m, "IsNameValid", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.IsNameValidResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // IsNameValid indicates an expected call of IsNameValid. -func (mr *MockAnyPpClientServiceMockRecorder) IsNameValid(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) IsNameValid(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsNameValid", reflect.TypeOf((*MockAnyPpClientService)(nil).IsNameValid), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsNameValid", reflect.TypeOf((*MockAnyPpClientService)(nil).IsNameValid), arg0, arg1) } // Name mocks base method. @@ -176,31 +174,31 @@ func (mr *MockAnyPpClientServiceMockRecorder) Name() *gomock.Call { } // VerifyAppStoreReceipt mocks base method. -func (m *MockAnyPpClientService) VerifyAppStoreReceipt(ctx context.Context, in *paymentserviceproto.VerifyAppStoreReceiptRequestSigned) (*paymentserviceproto.VerifyAppStoreReceiptResponse, error) { +func (m *MockAnyPpClientService) VerifyAppStoreReceipt(arg0 context.Context, arg1 *paymentserviceproto.VerifyAppStoreReceiptRequestSigned) (*paymentserviceproto.VerifyAppStoreReceiptResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "VerifyAppStoreReceipt", ctx, in) + ret := m.ctrl.Call(m, "VerifyAppStoreReceipt", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.VerifyAppStoreReceiptResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // VerifyAppStoreReceipt indicates an expected call of VerifyAppStoreReceipt. -func (mr *MockAnyPpClientServiceMockRecorder) VerifyAppStoreReceipt(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) VerifyAppStoreReceipt(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyAppStoreReceipt", reflect.TypeOf((*MockAnyPpClientService)(nil).VerifyAppStoreReceipt), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyAppStoreReceipt", reflect.TypeOf((*MockAnyPpClientService)(nil).VerifyAppStoreReceipt), arg0, arg1) } // VerifyEmail mocks base method. -func (m *MockAnyPpClientService) VerifyEmail(ctx context.Context, in *paymentserviceproto.VerifyEmailRequestSigned) (*paymentserviceproto.VerifyEmailResponse, error) { +func (m *MockAnyPpClientService) VerifyEmail(arg0 context.Context, arg1 *paymentserviceproto.VerifyEmailRequestSigned) (*paymentserviceproto.VerifyEmailResponse, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "VerifyEmail", ctx, in) + ret := m.ctrl.Call(m, "VerifyEmail", arg0, arg1) ret0, _ := ret[0].(*paymentserviceproto.VerifyEmailResponse) ret1, _ := ret[1].(error) return ret0, ret1 } // VerifyEmail indicates an expected call of VerifyEmail. -func (mr *MockAnyPpClientServiceMockRecorder) VerifyEmail(ctx, in any) *gomock.Call { +func (mr *MockAnyPpClientServiceMockRecorder) VerifyEmail(arg0, arg1 any) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyEmail", reflect.TypeOf((*MockAnyPpClientService)(nil).VerifyEmail), ctx, in) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyEmail", reflect.TypeOf((*MockAnyPpClientService)(nil).VerifyEmail), arg0, arg1) }