Change init logic and fix tests
This commit is contained in:
parent
092e9096b8
commit
1ed6a6f7da
@ -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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user