From 1ed6a6f7da0d9fea42a131791e57121c48975fb5 Mon Sep 17 00:00:00 2001 From: mcrakhman Date: Tue, 5 Jul 2022 17:21:45 +0200 Subject: [PATCH] Change init logic and fix tests --- data/acltreebuilder.go | 5 ++++- data/changeloader.go | 7 +++++-- data/document.go | 4 ++-- data/threadhelpers.go | 16 +++++++++++++--- data/treebuilder.go | 5 ++++- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/data/acltreebuilder.go b/data/acltreebuilder.go index 6d327c74..99289d41 100644 --- a/data/acltreebuilder.go +++ b/data/acltreebuilder.go @@ -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), } } diff --git a/data/changeloader.go b/data/changeloader.go index b58e4cf5..700fd0d6 100644 --- a/data/changeloader.go +++ b/data/changeloader.go @@ -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 diff --git a/data/document.go b/data/document.go index 1fb26417..375fede1 100644 --- a/data/document.go +++ b/data/document.go @@ -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 } diff --git a/data/threadhelpers.go b/data/threadhelpers.go index ab179df9..4841c065 100644 --- a/data/threadhelpers.go +++ b/data/threadhelpers.go @@ -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 diff --git a/data/treebuilder.go b/data/treebuilder.go index d590c37e..97054699 100644 --- a/data/treebuilder.go +++ b/data/treebuilder.go @@ -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), } }