Skip to content

Commit cef2688

Browse files
committed
[FAB-3907] Improve test coverage for protos/common
Since there is some not generated logic in this package, it is included in the unit tests. This change set increases coverage to over 90% for the package. Change-Id: I75b93170a2f012bab2aa48f58ce5154c04257d61 Signed-off-by: Gari Singh <[email protected]>
1 parent 65ee7b2 commit cef2688

File tree

5 files changed

+642
-0
lines changed

5 files changed

+642
-0
lines changed

protos/common/block_test.go

+31
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,41 @@ limitations under the License.
1717
package common
1818

1919
import (
20+
"encoding/asn1"
2021
"math"
2122
"testing"
23+
24+
"github.com/hyperledger/fabric/common/util"
25+
"github.com/stretchr/testify/assert"
2226
)
2327

28+
func TestBlock(t *testing.T) {
29+
var block *Block
30+
assert.Nil(t, block.GetHeader())
31+
assert.Nil(t, block.GetData())
32+
assert.Nil(t, block.GetMetadata())
33+
34+
data := &BlockData{
35+
Data: [][]byte{[]byte{0, 1, 2}},
36+
}
37+
block = NewBlock(uint64(0), []byte("datahash"))
38+
assert.Equal(t, []byte("datahash"), block.Header.PreviousHash, "Incorrect previous hash")
39+
assert.NotNil(t, block.GetData())
40+
assert.NotNil(t, block.GetMetadata())
41+
block.GetHeader().DataHash = data.Hash()
42+
43+
asn1Bytes, err := asn1.Marshal(asn1Header{
44+
Number: int64(uint64(0)),
45+
DataHash: data.Hash(),
46+
PreviousHash: []byte("datahash"),
47+
})
48+
headerHash := util.ComputeSHA256(asn1Bytes)
49+
assert.NoError(t, err)
50+
assert.Equal(t, asn1Bytes, block.Header.Bytes(), "Incorrect marshaled blockheader bytes")
51+
assert.Equal(t, headerHash, block.Header.Hash(), "Incorrect blockheader hash")
52+
53+
}
54+
2455
func TestGoodBlockHeaderBytes(t *testing.T) {
2556
goodBlockHeader := &BlockHeader{
2657
Number: 1,

protos/common/common_test.go

+202
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
/*
2+
Copyright IBM Corp. 2017 All Rights Reserved.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package common
18+
19+
import (
20+
"testing"
21+
22+
google_protobuf "github.com/golang/protobuf/ptypes/timestamp"
23+
"github.com/stretchr/testify/assert"
24+
)
25+
26+
func TestCommonEnums(t *testing.T) {
27+
var status Status
28+
29+
status = 0
30+
assert.Equal(t, "UNKNOWN", status.String())
31+
status = 200
32+
assert.Equal(t, "SUCCESS", status.String())
33+
status = 400
34+
assert.Equal(t, "BAD_REQUEST", status.String())
35+
status = 403
36+
assert.Equal(t, "FORBIDDEN", status.String())
37+
status = 404
38+
assert.Equal(t, "NOT_FOUND", status.String())
39+
status = 413
40+
assert.Equal(t, "REQUEST_ENTITY_TOO_LARGE", status.String())
41+
status = 500
42+
assert.Equal(t, "INTERNAL_SERVER_ERROR", status.String())
43+
status = 503
44+
assert.Equal(t, "SERVICE_UNAVAILABLE", status.String())
45+
_, _ = status.EnumDescriptor()
46+
47+
var header HeaderType
48+
header = 0
49+
assert.Equal(t, "MESSAGE", header.String())
50+
header = 1
51+
assert.Equal(t, "CONFIG", header.String())
52+
header = 2
53+
assert.Equal(t, "CONFIG_UPDATE", header.String())
54+
header = 3
55+
assert.Equal(t, "ENDORSER_TRANSACTION", header.String())
56+
header = 4
57+
assert.Equal(t, "ORDERER_TRANSACTION", header.String())
58+
header = 5
59+
assert.Equal(t, "DELIVER_SEEK_INFO", header.String())
60+
header = 6
61+
assert.Equal(t, "CHAINCODE_PACKAGE", header.String())
62+
_, _ = header.EnumDescriptor()
63+
64+
var index BlockMetadataIndex
65+
index = 0
66+
assert.Equal(t, "SIGNATURES", index.String())
67+
index = 1
68+
assert.Equal(t, "LAST_CONFIG", index.String())
69+
index = 2
70+
assert.Equal(t, "TRANSACTIONS_FILTER", index.String())
71+
index = 3
72+
assert.Equal(t, "ORDERER", index.String())
73+
_, _ = index.EnumDescriptor()
74+
}
75+
76+
func TestCommonStructs(t *testing.T) {
77+
var last *LastConfig
78+
last = &LastConfig{
79+
Index: uint64(1),
80+
}
81+
last.Reset()
82+
assert.Equal(t, uint64(0), last.Index)
83+
_, _ = last.Descriptor()
84+
_ = last.String()
85+
last.ProtoMessage()
86+
87+
var meta *Metadata
88+
meta = nil
89+
assert.Nil(t, meta.GetSignatures())
90+
meta = &Metadata{
91+
Signatures: []*MetadataSignature{&MetadataSignature{}},
92+
}
93+
assert.NotNil(t, meta.GetSignatures())
94+
meta.Reset()
95+
assert.Nil(t, meta.GetSignatures())
96+
_, _ = meta.Descriptor()
97+
_ = meta.String()
98+
meta.ProtoMessage()
99+
100+
var sig *MetadataSignature
101+
sig = &MetadataSignature{
102+
Signature: []byte("signature"),
103+
}
104+
sig.Reset()
105+
assert.Nil(t, sig.Signature)
106+
_, _ = sig.Descriptor()
107+
_ = sig.String()
108+
sig.ProtoMessage()
109+
110+
var header *Header
111+
header = &Header{
112+
ChannelHeader: []byte("channel header"),
113+
}
114+
header.Reset()
115+
assert.Nil(t, header.ChannelHeader)
116+
_, _ = header.Descriptor()
117+
_ = header.String()
118+
header.ProtoMessage()
119+
120+
var chheader *ChannelHeader
121+
chheader = nil
122+
assert.Nil(t, chheader.GetTimestamp())
123+
chheader = &ChannelHeader{
124+
Timestamp: &google_protobuf.Timestamp{},
125+
}
126+
assert.NotNil(t, chheader.GetTimestamp())
127+
chheader.Reset()
128+
assert.Nil(t, chheader.GetTimestamp())
129+
_, _ = chheader.Descriptor()
130+
_ = chheader.String()
131+
chheader.ProtoMessage()
132+
133+
var sigheader *SignatureHeader
134+
sigheader = &SignatureHeader{
135+
Creator: []byte("creator"),
136+
}
137+
sigheader.Reset()
138+
assert.Nil(t, sigheader.Creator)
139+
_, _ = sigheader.Descriptor()
140+
_ = sigheader.String()
141+
sigheader.ProtoMessage()
142+
143+
var payload *Payload
144+
payload = nil
145+
assert.Nil(t, payload.GetHeader())
146+
payload = &Payload{
147+
Header: &Header{},
148+
}
149+
assert.NotNil(t, payload.GetHeader())
150+
payload.Reset()
151+
assert.Nil(t, payload.Data)
152+
_, _ = payload.Descriptor()
153+
_ = payload.String()
154+
payload.ProtoMessage()
155+
156+
var env *Envelope
157+
env = &Envelope{
158+
Payload: []byte("payload"),
159+
}
160+
env.Reset()
161+
assert.Nil(t, env.Payload)
162+
_, _ = env.Descriptor()
163+
_ = env.String()
164+
env.ProtoMessage()
165+
166+
b := &Block{
167+
Data: &BlockData{},
168+
}
169+
b.Reset()
170+
assert.Nil(t, b.GetData())
171+
_, _ = b.Descriptor()
172+
_ = b.String()
173+
b.ProtoMessage()
174+
175+
bh := &BlockHeader{
176+
PreviousHash: []byte("hash"),
177+
}
178+
bh.Reset()
179+
assert.Nil(t, bh.PreviousHash)
180+
_, _ = bh.Descriptor()
181+
_ = bh.String()
182+
bh.ProtoMessage()
183+
184+
bd := &BlockData{
185+
Data: [][]byte{},
186+
}
187+
bd.Reset()
188+
assert.Nil(t, bd.Data)
189+
_, _ = bd.Descriptor()
190+
_ = bd.String()
191+
bd.ProtoMessage()
192+
193+
bm := &BlockMetadata{
194+
Metadata: [][]byte{},
195+
}
196+
bm.Reset()
197+
assert.Nil(t, bm.Metadata)
198+
_, _ = bm.Descriptor()
199+
_ = bm.String()
200+
bm.ProtoMessage()
201+
202+
}

0 commit comments

Comments
 (0)