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:
parent
405fdbd0bc
commit
75e1d34ba3
1 changed files with 52 additions and 35 deletions
|
@ -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")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue