diff options
Diffstat (limited to 'trillian_test.go')
-rw-r--r-- | trillian_test.go | 114 |
1 files changed, 55 insertions, 59 deletions
diff --git a/trillian_test.go b/trillian_test.go index c7bdcf1..ab053a5 100644 --- a/trillian_test.go +++ b/trillian_test.go @@ -20,25 +20,25 @@ func TestCheckQueueLeaf(t *testing.T) { wantErr bool }{ { - description: "trillian error", + description: "bad response: trillian error", err: fmt.Errorf("backend error"), wantErr: true, }, { - description: "empty trillian response", + description: "bad response: empty", wantErr: true, }, { - description: "partial trillian response: empty QueuedLeaf field", + description: "bad response: no queued leaf", rsp: &trillian.QueueLeafResponse{}, wantErr: true, }, { - description: "ok: duplicate leaf", + description: "ok response: duplicate leaf", rsp: makeTrillianQueueLeafResponse(t, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true), }, { - description: "ok: new leaf", + description: "ok response: new leaf", rsp: makeTrillianQueueLeafResponse(t, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, false), }, } { @@ -49,26 +49,6 @@ func TestCheckQueueLeaf(t *testing.T) { } func TestCheckGetLeavesByRange(t *testing.T) { - // rsp without leaves - noLeaves := makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true) - noLeaves.Leaves = nil - - // rsp without signed log root - noSlr := makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true) - noSlr.SignedLogRoot = nil - - // rsp without log root - noLr := makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true) - noLr.SignedLogRoot.LogRoot = nil - - // rsp with root that cannot be unmarshalled - tr := makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true) - tr.SignedLogRoot.LogRoot = tr.SignedLogRoot.LogRoot[1:] - - // rsp with fixed tree size - fixedSize := makeTrillianGetLeavesByRangeResponse(t, int64(testTreeSize)-1, int64(testTreeSize)-1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true) - fixedSize.SignedLogRoot = makeLatestSignedLogRootResponse(t, 0, testTreeSize, testNodeHash).SignedLogRoot - for _, table := range []struct { description string req *GetEntriesRequest @@ -77,51 +57,61 @@ func TestCheckGetLeavesByRange(t *testing.T) { wantErr bool }{ { - description: "trillian error", + description: "bad response: trillian error", err: fmt.Errorf("backend error"), wantErr: true, }, { - description: "empty trillian response", + description: "bad response: empty", wantErr: true, }, { - description: "partial trillian response: no leaves", - rsp: noLeaves, - wantErr: true, + description: "bad response: no leaves", + rsp: func(rsp *trillian.GetLeavesByRangeResponse) *trillian.GetLeavesByRangeResponse { + rsp.Leaves = nil + return rsp + }(makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true)), + wantErr: true, }, { - description: "partial trillian response: no signed log root", - rsp: noSlr, - wantErr: true, + description: "bad response: no signed log root", + rsp: func(rsp *trillian.GetLeavesByRangeResponse) *trillian.GetLeavesByRangeResponse { + rsp.SignedLogRoot = nil + return rsp + }(makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true)), + wantErr: true, }, { - description: "partial trillian response: no log root", - rsp: noLr, - wantErr: true, + description: "bad response: no log root", + rsp: func(rsp *trillian.GetLeavesByRangeResponse) *trillian.GetLeavesByRangeResponse { + rsp.SignedLogRoot.LogRoot = nil + return rsp + }(makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true)), + wantErr: true, }, { - description: "bad response: too many leaves", + description: "bad response: truncated root", req: &GetEntriesRequest{Start: 0, End: 1}, - rsp: makeTrillianGetLeavesByRangeResponse(t, 0, 2, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true), - wantErr: true, + rsp: func(rsp *trillian.GetLeavesByRangeResponse) *trillian.GetLeavesByRangeResponse { + rsp.SignedLogRoot.LogRoot = rsp.SignedLogRoot.LogRoot[1:] + return rsp + }(makeTrillianGetLeavesByRangeResponse(t, 0, 1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true)), + wantErr: true, }, { description: "bad response: too many leaves", req: &GetEntriesRequest{Start: 0, End: 1}, - rsp: tr, + rsp: makeTrillianGetLeavesByRangeResponse(t, 0, 2, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true), wantErr: true, }, { description: "bad response: start is not a valid index", req: &GetEntriesRequest{Start: int64(testTreeSize), End: int64(testTreeSize)}, - rsp: fixedSize, - wantErr: true, - }, - { - description: "ok response: interval refers to the latest leaf", - req: &GetEntriesRequest{Start: int64(testTreeSize) - 1, End: int64(testTreeSize) - 1}, - rsp: fixedSize, + rsp: func(rsp *trillian.GetLeavesByRangeResponse) *trillian.GetLeavesByRangeResponse { + rsp.SignedLogRoot = makeLatestSignedLogRootResponse(t, 0, testTreeSize, testNodeHash).SignedLogRoot + return rsp + }(makeTrillianGetLeavesByRangeResponse(t, int64(testTreeSize)-1, int64(testTreeSize)-1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true)), + wantErr: true, }, { description: "bad response: invalid leaf indices", @@ -130,6 +120,14 @@ func TestCheckGetLeavesByRange(t *testing.T) { wantErr: true, }, { + description: "ok response: interval refers to the latest leaf", + req: &GetEntriesRequest{Start: int64(testTreeSize) - 1, End: int64(testTreeSize) - 1}, + rsp: func(rsp *trillian.GetLeavesByRangeResponse) *trillian.GetLeavesByRangeResponse { + rsp.SignedLogRoot = makeLatestSignedLogRootResponse(t, 0, testTreeSize, testNodeHash).SignedLogRoot + return rsp + }(makeTrillianGetLeavesByRangeResponse(t, int64(testTreeSize)-1, int64(testTreeSize)-1, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true)), + }, + { description: "ok response: a bunch of leaves", req: &GetEntriesRequest{Start: 10, End: 20}, rsp: makeTrillianGetLeavesByRangeResponse(t, 10, 20, testPackage, testdata.FirstPemChain, testdata.FirstPemChainKey, true), @@ -226,14 +224,6 @@ func TestCheckGetConsistencyProof(t *testing.T) { } func TestCheckGetLatestSignedLogRoot(t *testing.T) { - // response with no log root - noLr := makeLatestSignedLogRootResponse(t, 0, 0, testNodeHash) - noLr.SignedLogRoot.LogRoot = nil - - // response with truncated log root - tr := makeLatestSignedLogRootResponse(t, 0, 0, testNodeHash) - tr.SignedLogRoot.LogRoot = tr.SignedLogRoot.LogRoot[1:] - lp := makeTestLogParameters(t, nil) for _, table := range []struct { description string @@ -257,13 +247,19 @@ func TestCheckGetLatestSignedLogRoot(t *testing.T) { }, { description: "bad trillian response: no log root", - rsp: noLr, - wantErr: true, + rsp: func(rsp *trillian.GetLatestSignedLogRootResponse) *trillian.GetLatestSignedLogRootResponse { + rsp.SignedLogRoot.LogRoot = nil + return rsp + }(makeLatestSignedLogRootResponse(t, 0, 0, testNodeHash)), + wantErr: true, }, { description: "bad trillian response: truncated log root", - rsp: tr, - wantErr: true, + rsp: func(rsp *trillian.GetLatestSignedLogRootResponse) *trillian.GetLatestSignedLogRootResponse { + rsp.SignedLogRoot.LogRoot = rsp.SignedLogRoot.LogRoot[1:] + return rsp + }(makeLatestSignedLogRootResponse(t, 0, 0, testNodeHash)), + wantErr: true, }, { description: "bad trillian response: invalid root hash size", |