From 1690896a67193f5461bc1e5fe7fbf0427724e09e Mon Sep 17 00:00:00 2001 From: Mikhail Rakhmanov Date: Mon, 26 May 2025 12:33:49 +0200 Subject: [PATCH] Implement correct validation --- commonspace/object/acl/list/list.go | 1 + commonspace/object/acl/list/list_test.go | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/commonspace/object/acl/list/list.go b/commonspace/object/acl/list/list.go index b7706634..8eb6a597 100644 --- a/commonspace/object/acl/list/list.go +++ b/commonspace/object/acl/list/list.go @@ -178,6 +178,7 @@ func (a *aclList) ValidateRawRecord(rawRec *consensusproto.RawRecord, afterValid return } stateCopy := a.aclState.Copy() + stateCopy.contentValidator = newContentValidator(stateCopy.keyStore, stateCopy, recordverifier.NewValidateFull()) err = stateCopy.ApplyRecord(record) if err != nil || afterValid == nil { return diff --git a/commonspace/object/acl/list/list_test.go b/commonspace/object/acl/list/list_test.go index d920febd..25c7cf50 100644 --- a/commonspace/object/acl/list/list_test.go +++ b/commonspace/object/acl/list/list_test.go @@ -310,6 +310,27 @@ func TestAclList_MetadataDecrypt(t *testing.T) { require.NotEqual(t, mockMetadata, meta) } +func TestAclList_ValidateUsesCorrectVerifier(t *testing.T) { + fx := newFixture(t) + var ownerAcl = fx.ownerAcl + ownerAcl.aclState.contentValidator.(*contentValidator).verifier = recordverifier.New() + ownerAcl.verifier = recordverifier.New() + // building invite + inv, err := ownerAcl.RecordBuilder().BuildInvite() + require.NoError(t, err) + isCalled := false + ok := ownerAcl.aclState.contentValidator.(*contentValidator).verifier.ShouldValidate() + require.False(t, ok) + err = fx.ownerAcl.ValidateRawRecord(inv.InviteRec, func(state *AclState) error { + isCalled = true + // check that we change the validator to the verifying one + require.True(t, state.contentValidator.(*contentValidator).verifier.ShouldValidate()) + return nil + }) + require.NoError(t, err) + require.True(t, isCalled) +} + func TestAclList_ReadKeyChange(t *testing.T) { fx := newFixture(t) var (