Handle no auditor tree head in stored state
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
Katherine 2025-10-14 11:09:20 -04:00 committed by GitHub
parent 12f0683196
commit e1df58749d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 0 deletions

View File

@ -12,5 +12,8 @@ func deserializeStoredTreeHead(raw []byte) (*TransparencyTreeHead, map[string]*A
if err := json.Unmarshal(raw, data); err != nil {
return nil, nil, err
}
if data.AuditorHeads == nil {
data.AuditorHeads = make(map[string]*AuditorTreeHead)
}
return data.TreeHead, data.AuditorHeads, nil
}

View File

@ -11,6 +11,7 @@ import (
"testing"
"github.com/kinbiko/jsonassert"
"github.com/stretchr/testify/assert"
)
func TestSerializeNewStoredTreeHead(t *testing.T) {
@ -54,6 +55,30 @@ func TestSerializeNewStoredTreeHead(t *testing.T) {
jsonassert.New(t).Assertf(actualJsonString, "%s", expectedJsonString)
}
func TestDeserializeStoredTreeHeadWithNoAuditorHeads(t *testing.T) {
storedTreeHead := &storedTreeHead{
TreeHead: &TransparencyTreeHead{
TreeSize: 123,
Timestamp: 123456,
Signatures: []*Signature{
{random(32), random(32)},
},
},
}
bytes, err := json.Marshal(storedTreeHead)
if err != nil {
t.Fatal("expected no error marshaling stored tree head")
}
_, auditorHeads, err := deserializeStoredTreeHead(bytes)
if err != nil {
t.Fatal("expected no error deserializing stored tree head")
}
assert.NotNil(t, auditorHeads)
}
func random(numBytes int) []byte {
out := make([]byte, numBytes)
if _, err := rand.Read(out); err != nil {