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{ return &ACLTreeBuilder{
signingPubKeyDecoder: decoder, signingPubKeyDecoder: decoder,
thread: t, 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 identityKeys map[string]threadmodels.SigningPubKey
signingPubKeyDecoder threadmodels.SigningPubKeyDecoder signingPubKeyDecoder threadmodels.SigningPubKeyDecoder
thread threadmodels.Thread thread threadmodels.Thread
changeCreator func(id string, ch *pb.ACLChange) (*Change, error)
} }
func newChangeLoader( func newChangeLoader(
thread threadmodels.Thread, thread threadmodels.Thread,
signingPubKeyDecoder threadmodels.SigningPubKeyDecoder) *changeLoader { signingPubKeyDecoder threadmodels.SigningPubKeyDecoder,
changeCreator func(id string, ch *pb.ACLChange) (*Change, error)) *changeLoader {
return &changeLoader{ return &changeLoader{
signingPubKeyDecoder: signingPubKeyDecoder, signingPubKeyDecoder: signingPubKeyDecoder,
thread: thread, thread: thread,
changeCreator: changeCreator,
} }
} }
@ -61,7 +64,7 @@ func (c *changeLoader) loadChange(id string) (ch *Change, err error) {
return return
} }
ch, err = NewACLChange(id, aclChange) ch, err = c.changeCreator(id, aclChange)
c.cache[id] = ch c.cache[id] = ch
return ch, nil return ch, nil

View File

@ -47,9 +47,9 @@ func (d *Document) Update(changes []*pb.ACLChange) (DocumentState, UpdateResult,
} }
func (d *Document) Build() (DocumentState, error) { 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 return nil, nil
} }

View File

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

View File

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