Change init logic and fix tests

This commit is contained in:
mcrakhman 2022-07-05 17:21:45 +02:00 committed by Mikhail Iudin
parent 092e9096b8
commit 1ed6a6f7da
No known key found for this signature in database
GPG Key ID: FAAAA8BAABDFF1C0
5 changed files with 28 additions and 9 deletions

View File

@ -21,7 +21,10 @@ func NewACLTreeBuilder(t threadmodels.Thread, decoder threadmodels.SigningPubKey
return &ACLTreeBuilder{
signingPubKeyDecoder: decoder,
thread: t,
changeLoader: newChangeLoader(t, decoder),
changeLoader: newChangeLoader(
t,
decoder,
NewACLChange),
}
}

View File

@ -14,14 +14,17 @@ type changeLoader struct {
identityKeys map[string]threadmodels.SigningPubKey
signingPubKeyDecoder threadmodels.SigningPubKeyDecoder
thread threadmodels.Thread
changeCreator func(id string, ch *pb.ACLChange) (*Change, error)
}
func newChangeLoader(
thread threadmodels.Thread,
signingPubKeyDecoder threadmodels.SigningPubKeyDecoder) *changeLoader {
signingPubKeyDecoder threadmodels.SigningPubKeyDecoder,
changeCreator func(id string, ch *pb.ACLChange) (*Change, error)) *changeLoader {
return &changeLoader{
signingPubKeyDecoder: signingPubKeyDecoder,
thread: thread,
changeCreator: changeCreator,
}
}
@ -61,7 +64,7 @@ func (c *changeLoader) loadChange(id string) (ch *Change, err error) {
return
}
ch, err = NewACLChange(id, aclChange)
ch, err = c.changeCreator(id, aclChange)
c.cache[id] = ch
return ch, nil

View File

@ -47,9 +47,9 @@ func (d *Document) Update(changes []*pb.ACLChange) (DocumentState, UpdateResult,
}
func (d *Document) Build() (DocumentState, error) {
treeBuilder := NewTreeBuilder(d.thread, threadmodels.NewEd25519Decoder())
//treeBuilder := NewTreeBuilder(d.thread, threadmodels.NewEd25519Decoder())
return treeBuilder.Build(fromStart)
//return treeBuilder.Build(fromStart)
return nil, nil
}

View File

@ -12,6 +12,7 @@ type ACLContext struct {
func createTreeFromThread(t threadmodels.Thread, fromStart bool) (*Tree, error) {
treeBuilder := NewTreeBuilder(t, threadmodels.NewEd25519Decoder())
treeBuilder.Init()
return treeBuilder.Build(fromStart)
}
@ -27,14 +28,21 @@ func createACLStateFromThread(
return nil, err
}
accountData := &AccountData{
Identity: identity,
EncKey: key,
}
aclTreeBuilder := NewACLTreeBuilder(t, decoder)
aclTreeBuilder.Init()
aclTree, err := aclTreeBuilder.Build()
if err != nil {
return nil, err
}
if !fromStart {
snapshotValidator := NewSnapshotValidator(aclTree, identity, key, decoder)
snapshotValidator := NewSnapshotValidator(decoder, accountData)
snapshotValidator.Init(aclTree)
valid, err := snapshotValidator.ValidateSnapshot(tree.root)
if err != nil {
return nil, err
@ -45,7 +53,8 @@ func createACLStateFromThread(
}
}
aclBuilder, err := NewACLStateBuilder(tree, identity, key, decoder)
aclBuilder := NewACLStateBuilder(decoder, accountData)
err = aclBuilder.Init(tree)
if err != nil {
return nil, err
}
@ -71,7 +80,8 @@ func createDocumentStateFromThread(
return nil, err
}
docStateBuilder := newDocumentStateBuilder(context.Tree, context.ACLState, provider)
docStateBuilder := newDocumentStateBuilder(provider)
docStateBuilder.init(context.ACLState, context.Tree)
docState, err := docStateBuilder.build()
if err != nil {
return nil, err

View File

@ -29,7 +29,10 @@ func NewTreeBuilder(t threadmodels.Thread, decoder threadmodels.SigningPubKeyDec
return &TreeBuilder{
signingPubKeyDecoder: decoder,
thread: t,
changeLoader: newChangeLoader(t, decoder),
changeLoader: newChangeLoader(
t,
decoder,
NewChange),
}
}