1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-08 05:57:03 +09:00

Revive test checking tree root with incorrect acl

This commit is contained in:
mcrakhman 2025-02-05 20:05:07 +01:00
parent 405fdbd0bc
commit 75e1d34ba3
No known key found for this signature in database
GPG key ID: DED12CFEF5B8396B

View file

@ -358,41 +358,58 @@ func TestObjectTree(t *testing.T) {
require.NoError(t, err)
})
//t.Run("reject root referring to unknown acl", func(t *testing.T) {
// exec := list.NewAclExecutor("spaceId")
// type cmdErr struct {
// cmd string
// err error
// }
// cmds := []cmdErr{
// {"a.init::a", nil},
// }
// for _, cmd := range cmds {
// err := exec.Execute(cmd.cmd)
// require.Equal(t, cmd.err, err, cmd)
// }
// account := exec.ActualAccounts()["a"]
// recs, err := account.Acl.RecordsAfter(ctx, "")
// require.NoError(t, err)
// beforeStorage, err := liststorage.NewInMemoryAclListStorage(recs[0].Id, recs)
// require.NoError(t, err)
// beforeAcl, err := list.BuildAclListWithIdentity(account.Keys, beforeStorage, list.NoOpAcceptorVerifier{})
// require.NoError(t, err)
// err = exec.Execute("a.invite::invId")
// require.NoError(t, err)
// root, err := CreateObjectTreeRoot(ObjectTreeCreatePayload{
// PrivKey: account.Keys.SignKey,
// ChangeType: "changeType",
// ChangePayload: nil,
// SpaceId: "spaceId",
// IsEncrypted: true,
// }, account.Acl)
// require.NoError(t, err)
// treeStorage, err := treestorage.NewInMemoryTreeStorage(root, []string{root.Id}, []*treechangeproto.RawTreeChangeWithId{root})
// require.NoError(t, err)
// _, err = BuildKeyFilterableObjectTree(treeStorage, beforeAcl)
// require.Equal(t, list.ErrNoSuchRecord, err)
//})
t.Run("reject root referring to unknown acl", func(t *testing.T) {
exec := list.NewAclExecutor("spaceId")
type cmdErr struct {
cmd string
err error
}
cmds := []cmdErr{
{"a.init::a", nil},
}
for _, cmd := range cmds {
err := exec.Execute(cmd.cmd)
require.Equal(t, cmd.err, err, cmd)
}
account := exec.ActualAccounts()["a"]
recs, err := account.Acl.RecordsAfter(ctx, "")
require.NoError(t, err)
beforeStorage, err := list.NewInMemoryStorage(recs[0].Id, recs)
require.NoError(t, err)
prevId := ""
for i, rec := range recs {
err := beforeStorage.AddAll(ctx, []list.StorageRecord{
{
RawRecord: rec.Payload,
PrevId: prevId,
Id: rec.Id,
Order: i + 1,
ChangeSize: len(rec.Payload),
},
})
require.NoError(t, err)
prevId = rec.Id
}
beforeAcl, err := list.BuildAclListWithIdentity(account.Keys, beforeStorage, list.NoOpAcceptorVerifier{})
require.NoError(t, err)
err = exec.Execute("a.invite::invId")
require.NoError(t, err)
root, err := CreateObjectTreeRoot(ObjectTreeCreatePayload{
PrivKey: account.Keys.SignKey,
ChangeType: "changeType",
ChangePayload: nil,
SpaceId: "spaceId",
IsEncrypted: true,
}, account.Acl)
require.NoError(t, err)
store := createStore(ctx, t)
headStorage, err := headstorage.New(ctx, store)
require.NoError(t, err)
treeStorage, err := CreateStorage(ctx, root, headStorage, store)
require.NoError(t, err)
_, err = BuildKeyFilterableObjectTree(treeStorage, beforeAcl)
require.True(t, errors.Is(err, list.ErrNoSuchRecord))
})
t.Run("filter changes when no aclHeadId", func(t *testing.T) {
exec := list.NewAclExecutor("spaceId")