Skip to content

Commit a5b0bf9

Browse files
committed
[FAB-4173] UT for protos/common
After the grpc-go upgrade, a few new methods are generated for the protos so need to add coverage for them. Also, some new code was added to help with the configtx tool so started some coverage for them as well. Change-Id: If841a7ae34ea123abd519fb7b48503cc96712a4a Signed-off-by: Gari Singh <[email protected]>
1 parent 1c8dc30 commit a5b0bf9

File tree

5 files changed

+312
-76
lines changed

5 files changed

+312
-76
lines changed

protos/common/common_test.go

+181-24
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,15 @@
11
/*
2-
Copyright IBM Corp. 2017 All Rights Reserved.
2+
Copyright IBM Corp. All Rights Reserved.
33
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.
4+
SPDX-License-Identifier: Apache-2.0
155
*/
166

177
package common
188

199
import (
2010
"testing"
2111

12+
"github.com/golang/protobuf/proto"
2213
google_protobuf "github.com/golang/protobuf/ptypes/timestamp"
2314
"github.com/stretchr/testify/assert"
2415
)
@@ -75,54 +66,89 @@ func TestCommonEnums(t *testing.T) {
7566

7667
func TestCommonStructs(t *testing.T) {
7768
var last *LastConfig
69+
last = nil
70+
assert.Equal(t, uint64(0), last.GetIndex())
7871
last = &LastConfig{
7972
Index: uint64(1),
8073
}
74+
assert.Equal(t, uint64(1), last.GetIndex())
8175
last.Reset()
82-
assert.Equal(t, uint64(0), last.Index)
76+
assert.Equal(t, uint64(0), last.GetIndex())
8377
_, _ = last.Descriptor()
8478
_ = last.String()
8579
last.ProtoMessage()
8680

8781
var meta *Metadata
8882
meta = nil
8983
assert.Nil(t, meta.GetSignatures())
84+
assert.Nil(t, meta.GetValue())
9085
meta = &Metadata{
86+
Value: []byte("value"),
9187
Signatures: []*MetadataSignature{&MetadataSignature{}},
9288
}
9389
assert.NotNil(t, meta.GetSignatures())
90+
assert.NotNil(t, meta.GetValue())
9491
meta.Reset()
9592
assert.Nil(t, meta.GetSignatures())
9693
_, _ = meta.Descriptor()
9794
_ = meta.String()
9895
meta.ProtoMessage()
9996

10097
var sig *MetadataSignature
98+
sig = nil
99+
assert.Nil(t, sig.GetSignature())
100+
assert.Nil(t, sig.GetSignatureHeader())
101101
sig = &MetadataSignature{
102-
Signature: []byte("signature"),
102+
SignatureHeader: []byte("header"),
103+
Signature: []byte("signature"),
103104
}
105+
assert.NotNil(t, sig.GetSignature())
106+
assert.NotNil(t, sig.GetSignatureHeader())
104107
sig.Reset()
105-
assert.Nil(t, sig.Signature)
108+
assert.Nil(t, sig.GetSignature())
109+
assert.Nil(t, sig.GetSignatureHeader())
106110
_, _ = sig.Descriptor()
107111
_ = sig.String()
108112
sig.ProtoMessage()
109113

110114
var header *Header
115+
header = nil
116+
assert.Nil(t, header.GetChannelHeader())
117+
assert.Nil(t, header.GetSignatureHeader())
111118
header = &Header{
112-
ChannelHeader: []byte("channel header"),
119+
ChannelHeader: []byte("channel header"),
120+
SignatureHeader: []byte("signature header"),
113121
}
122+
assert.NotNil(t, header.GetChannelHeader())
123+
assert.NotNil(t, header.GetSignatureHeader())
114124
header.Reset()
115-
assert.Nil(t, header.ChannelHeader)
125+
assert.Nil(t, header.GetChannelHeader())
126+
assert.Nil(t, header.GetSignatureHeader())
116127
_, _ = header.Descriptor()
117128
_ = header.String()
118129
header.ProtoMessage()
119130

120131
var chheader *ChannelHeader
121132
chheader = nil
133+
assert.Equal(t, "", chheader.GetChannelId())
134+
assert.Equal(t, "", chheader.GetTxId())
135+
assert.Equal(t, uint64(0), chheader.GetEpoch())
136+
assert.Equal(t, int32(0), chheader.GetType())
137+
assert.Equal(t, int32(0), chheader.GetVersion())
138+
assert.Nil(t, chheader.GetExtension())
122139
assert.Nil(t, chheader.GetTimestamp())
123140
chheader = &ChannelHeader{
141+
ChannelId: "ChannelId",
142+
TxId: "TxId",
124143
Timestamp: &google_protobuf.Timestamp{},
144+
Extension: []byte{},
125145
}
146+
assert.Equal(t, "ChannelId", chheader.GetChannelId())
147+
assert.Equal(t, "TxId", chheader.GetTxId())
148+
assert.Equal(t, uint64(0), chheader.GetEpoch())
149+
assert.Equal(t, int32(0), chheader.GetType())
150+
assert.Equal(t, int32(0), chheader.GetVersion())
151+
assert.NotNil(t, chheader.GetExtension())
126152
assert.NotNil(t, chheader.GetTimestamp())
127153
chheader.Reset()
128154
assert.Nil(t, chheader.GetTimestamp())
@@ -131,9 +157,15 @@ func TestCommonStructs(t *testing.T) {
131157
chheader.ProtoMessage()
132158

133159
var sigheader *SignatureHeader
160+
sigheader = nil
161+
assert.Nil(t, sigheader.GetCreator())
162+
assert.Nil(t, sigheader.GetNonce())
134163
sigheader = &SignatureHeader{
135164
Creator: []byte("creator"),
165+
Nonce: []byte("nonce"),
136166
}
167+
assert.NotNil(t, sigheader.GetCreator())
168+
assert.NotNil(t, sigheader.GetNonce())
137169
sigheader.Reset()
138170
assert.Nil(t, sigheader.Creator)
139171
_, _ = sigheader.Descriptor()
@@ -143,20 +175,29 @@ func TestCommonStructs(t *testing.T) {
143175
var payload *Payload
144176
payload = nil
145177
assert.Nil(t, payload.GetHeader())
178+
assert.Nil(t, payload.GetData())
146179
payload = &Payload{
147180
Header: &Header{},
181+
Data: []byte("data"),
148182
}
149183
assert.NotNil(t, payload.GetHeader())
184+
assert.NotNil(t, payload.GetData())
150185
payload.Reset()
151186
assert.Nil(t, payload.Data)
152187
_, _ = payload.Descriptor()
153188
_ = payload.String()
154189
payload.ProtoMessage()
155190

156191
var env *Envelope
192+
env = nil
193+
assert.Nil(t, env.GetPayload())
194+
assert.Nil(t, env.GetSignature())
157195
env = &Envelope{
158-
Payload: []byte("payload"),
196+
Payload: []byte("payload"),
197+
Signature: []byte("signature"),
159198
}
199+
assert.NotNil(t, env.GetPayload())
200+
assert.NotNil(t, env.GetSignature())
160201
env.Reset()
161202
assert.Nil(t, env.Payload)
162203
_, _ = env.Descriptor()
@@ -172,31 +213,147 @@ func TestCommonStructs(t *testing.T) {
172213
_ = b.String()
173214
b.ProtoMessage()
174215

175-
bh := &BlockHeader{
216+
var bh *BlockHeader
217+
bh = nil
218+
assert.Nil(t, bh.GetDataHash())
219+
assert.Nil(t, bh.GetPreviousHash())
220+
assert.Equal(t, uint64(0), bh.GetNumber())
221+
bh = &BlockHeader{
176222
PreviousHash: []byte("hash"),
223+
DataHash: []byte("dataHash"),
224+
Number: uint64(1),
177225
}
226+
assert.NotNil(t, bh.GetDataHash())
227+
assert.NotNil(t, bh.GetPreviousHash())
228+
assert.Equal(t, uint64(1), bh.GetNumber())
178229
bh.Reset()
179-
assert.Nil(t, bh.PreviousHash)
230+
assert.Nil(t, bh.GetPreviousHash())
180231
_, _ = bh.Descriptor()
181232
_ = bh.String()
182233
bh.ProtoMessage()
183234

184-
bd := &BlockData{
235+
var bd *BlockData
236+
bd = nil
237+
assert.Nil(t, bd.GetData())
238+
bd = &BlockData{
185239
Data: [][]byte{},
186240
}
241+
assert.NotNil(t, bd.GetData())
187242
bd.Reset()
188-
assert.Nil(t, bd.Data)
243+
assert.Nil(t, bd.GetData())
189244
_, _ = bd.Descriptor()
190245
_ = bd.String()
191246
bd.ProtoMessage()
192247

193-
bm := &BlockMetadata{
248+
var bm *BlockMetadata
249+
bm = nil
250+
assert.Nil(t, bm.GetMetadata())
251+
bm = &BlockMetadata{
194252
Metadata: [][]byte{},
195253
}
254+
assert.NotNil(t, bm.GetMetadata())
196255
bm.Reset()
197-
assert.Nil(t, bm.Metadata)
256+
assert.Nil(t, bm.GetMetadata())
198257
_, _ = bm.Descriptor()
199258
_ = bm.String()
200259
bm.ProtoMessage()
201260

202261
}
262+
263+
func TestCommonProtolator(t *testing.T) {
264+
// Envelope
265+
env := &Envelope{}
266+
assert.Equal(t, []string{"payload"}, env.StaticallyOpaqueFields())
267+
msg, err := env.StaticallyOpaqueFieldProto("badproto")
268+
assert.Nil(t, msg)
269+
assert.Error(t, err)
270+
msg, err = env.StaticallyOpaqueFieldProto("payload")
271+
// Payload
272+
payload := &Payload{}
273+
assert.Equal(t, &Payload{}, msg)
274+
assert.NoError(t, err)
275+
assert.Equal(t, []string{"data"}, payload.VariablyOpaqueFields())
276+
msg, err = payload.VariablyOpaqueFieldProto("badproto")
277+
assert.Nil(t, msg)
278+
assert.Error(t, err)
279+
msg, err = payload.VariablyOpaqueFieldProto("data")
280+
assert.Nil(t, msg)
281+
assert.Error(t, err)
282+
283+
payload = &Payload{
284+
Header: &Header{
285+
ChannelHeader: []byte("badbytes"),
286+
},
287+
}
288+
msg, err = payload.VariablyOpaqueFieldProto("data")
289+
assert.Nil(t, msg)
290+
assert.Error(t, err)
291+
292+
ch := &ChannelHeader{
293+
Type: int32(HeaderType_CONFIG),
294+
}
295+
chbytes, _ := proto.Marshal(ch)
296+
payload = &Payload{
297+
Header: &Header{
298+
ChannelHeader: chbytes,
299+
},
300+
}
301+
msg, err = payload.VariablyOpaqueFieldProto("data")
302+
assert.Equal(t, &ConfigEnvelope{}, msg)
303+
assert.NoError(t, err)
304+
305+
ch = &ChannelHeader{
306+
Type: int32(HeaderType_CONFIG_UPDATE),
307+
}
308+
chbytes, _ = proto.Marshal(ch)
309+
payload = &Payload{
310+
Header: &Header{
311+
ChannelHeader: chbytes,
312+
},
313+
}
314+
msg, err = payload.VariablyOpaqueFieldProto("data")
315+
assert.Equal(t, &ConfigUpdateEnvelope{}, msg)
316+
assert.NoError(t, err)
317+
318+
ch = &ChannelHeader{
319+
Type: int32(HeaderType_CHAINCODE_PACKAGE),
320+
}
321+
chbytes, _ = proto.Marshal(ch)
322+
payload = &Payload{
323+
Header: &Header{
324+
ChannelHeader: chbytes,
325+
},
326+
}
327+
msg, err = payload.VariablyOpaqueFieldProto("data")
328+
assert.Nil(t, msg)
329+
assert.Error(t, err)
330+
331+
// Header
332+
var header *Header
333+
assert.Equal(t, []string{"channel_header", "signature_header"},
334+
header.StaticallyOpaqueFields())
335+
336+
msg, err = header.StaticallyOpaqueFieldProto("badproto")
337+
assert.Nil(t, msg)
338+
assert.Error(t, err)
339+
340+
msg, err = header.StaticallyOpaqueFieldProto("channel_header")
341+
assert.Equal(t, &ChannelHeader{}, msg)
342+
assert.NoError(t, err)
343+
344+
msg, err = header.StaticallyOpaqueFieldProto("signature_header")
345+
assert.Equal(t, &SignatureHeader{}, msg)
346+
assert.NoError(t, err)
347+
348+
// BlockData
349+
var bd *BlockData
350+
assert.Equal(t, []string{"data"}, bd.StaticallyOpaqueSliceFields())
351+
352+
msg, err = bd.StaticallyOpaqueSliceFieldProto("badslice", 0)
353+
assert.Nil(t, msg)
354+
assert.Error(t, err)
355+
msg, err = bd.StaticallyOpaqueSliceFieldProto("data", 0)
356+
assert.Equal(t, &Envelope{}, msg)
357+
assert.NoError(t, err)
358+
359+
}

0 commit comments

Comments
 (0)