1
1
/*
2
- Copyright IBM Corp. 2017 All Rights Reserved.
2
+ Copyright IBM Corp. All Rights Reserved.
3
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.
4
+ SPDX-License-Identifier: Apache-2.0
15
5
*/
16
6
17
7
package common
18
8
19
9
import (
20
10
"testing"
21
11
12
+ "github.com/golang/protobuf/proto"
22
13
google_protobuf "github.com/golang/protobuf/ptypes/timestamp"
23
14
"github.com/stretchr/testify/assert"
24
15
)
@@ -75,54 +66,89 @@ func TestCommonEnums(t *testing.T) {
75
66
76
67
func TestCommonStructs (t * testing.T ) {
77
68
var last * LastConfig
69
+ last = nil
70
+ assert .Equal (t , uint64 (0 ), last .GetIndex ())
78
71
last = & LastConfig {
79
72
Index : uint64 (1 ),
80
73
}
74
+ assert .Equal (t , uint64 (1 ), last .GetIndex ())
81
75
last .Reset ()
82
- assert .Equal (t , uint64 (0 ), last .Index )
76
+ assert .Equal (t , uint64 (0 ), last .GetIndex () )
83
77
_ , _ = last .Descriptor ()
84
78
_ = last .String ()
85
79
last .ProtoMessage ()
86
80
87
81
var meta * Metadata
88
82
meta = nil
89
83
assert .Nil (t , meta .GetSignatures ())
84
+ assert .Nil (t , meta .GetValue ())
90
85
meta = & Metadata {
86
+ Value : []byte ("value" ),
91
87
Signatures : []* MetadataSignature {& MetadataSignature {}},
92
88
}
93
89
assert .NotNil (t , meta .GetSignatures ())
90
+ assert .NotNil (t , meta .GetValue ())
94
91
meta .Reset ()
95
92
assert .Nil (t , meta .GetSignatures ())
96
93
_ , _ = meta .Descriptor ()
97
94
_ = meta .String ()
98
95
meta .ProtoMessage ()
99
96
100
97
var sig * MetadataSignature
98
+ sig = nil
99
+ assert .Nil (t , sig .GetSignature ())
100
+ assert .Nil (t , sig .GetSignatureHeader ())
101
101
sig = & MetadataSignature {
102
- Signature : []byte ("signature" ),
102
+ SignatureHeader : []byte ("header" ),
103
+ Signature : []byte ("signature" ),
103
104
}
105
+ assert .NotNil (t , sig .GetSignature ())
106
+ assert .NotNil (t , sig .GetSignatureHeader ())
104
107
sig .Reset ()
105
- assert .Nil (t , sig .Signature )
108
+ assert .Nil (t , sig .GetSignature ())
109
+ assert .Nil (t , sig .GetSignatureHeader ())
106
110
_ , _ = sig .Descriptor ()
107
111
_ = sig .String ()
108
112
sig .ProtoMessage ()
109
113
110
114
var header * Header
115
+ header = nil
116
+ assert .Nil (t , header .GetChannelHeader ())
117
+ assert .Nil (t , header .GetSignatureHeader ())
111
118
header = & Header {
112
- ChannelHeader : []byte ("channel header" ),
119
+ ChannelHeader : []byte ("channel header" ),
120
+ SignatureHeader : []byte ("signature header" ),
113
121
}
122
+ assert .NotNil (t , header .GetChannelHeader ())
123
+ assert .NotNil (t , header .GetSignatureHeader ())
114
124
header .Reset ()
115
- assert .Nil (t , header .ChannelHeader )
125
+ assert .Nil (t , header .GetChannelHeader ())
126
+ assert .Nil (t , header .GetSignatureHeader ())
116
127
_ , _ = header .Descriptor ()
117
128
_ = header .String ()
118
129
header .ProtoMessage ()
119
130
120
131
var chheader * ChannelHeader
121
132
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 ())
122
139
assert .Nil (t , chheader .GetTimestamp ())
123
140
chheader = & ChannelHeader {
141
+ ChannelId : "ChannelId" ,
142
+ TxId : "TxId" ,
124
143
Timestamp : & google_protobuf.Timestamp {},
144
+ Extension : []byte {},
125
145
}
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 ())
126
152
assert .NotNil (t , chheader .GetTimestamp ())
127
153
chheader .Reset ()
128
154
assert .Nil (t , chheader .GetTimestamp ())
@@ -131,9 +157,15 @@ func TestCommonStructs(t *testing.T) {
131
157
chheader .ProtoMessage ()
132
158
133
159
var sigheader * SignatureHeader
160
+ sigheader = nil
161
+ assert .Nil (t , sigheader .GetCreator ())
162
+ assert .Nil (t , sigheader .GetNonce ())
134
163
sigheader = & SignatureHeader {
135
164
Creator : []byte ("creator" ),
165
+ Nonce : []byte ("nonce" ),
136
166
}
167
+ assert .NotNil (t , sigheader .GetCreator ())
168
+ assert .NotNil (t , sigheader .GetNonce ())
137
169
sigheader .Reset ()
138
170
assert .Nil (t , sigheader .Creator )
139
171
_ , _ = sigheader .Descriptor ()
@@ -143,20 +175,29 @@ func TestCommonStructs(t *testing.T) {
143
175
var payload * Payload
144
176
payload = nil
145
177
assert .Nil (t , payload .GetHeader ())
178
+ assert .Nil (t , payload .GetData ())
146
179
payload = & Payload {
147
180
Header : & Header {},
181
+ Data : []byte ("data" ),
148
182
}
149
183
assert .NotNil (t , payload .GetHeader ())
184
+ assert .NotNil (t , payload .GetData ())
150
185
payload .Reset ()
151
186
assert .Nil (t , payload .Data )
152
187
_ , _ = payload .Descriptor ()
153
188
_ = payload .String ()
154
189
payload .ProtoMessage ()
155
190
156
191
var env * Envelope
192
+ env = nil
193
+ assert .Nil (t , env .GetPayload ())
194
+ assert .Nil (t , env .GetSignature ())
157
195
env = & Envelope {
158
- Payload : []byte ("payload" ),
196
+ Payload : []byte ("payload" ),
197
+ Signature : []byte ("signature" ),
159
198
}
199
+ assert .NotNil (t , env .GetPayload ())
200
+ assert .NotNil (t , env .GetSignature ())
160
201
env .Reset ()
161
202
assert .Nil (t , env .Payload )
162
203
_ , _ = env .Descriptor ()
@@ -172,31 +213,147 @@ func TestCommonStructs(t *testing.T) {
172
213
_ = b .String ()
173
214
b .ProtoMessage ()
174
215
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 {
176
222
PreviousHash : []byte ("hash" ),
223
+ DataHash : []byte ("dataHash" ),
224
+ Number : uint64 (1 ),
177
225
}
226
+ assert .NotNil (t , bh .GetDataHash ())
227
+ assert .NotNil (t , bh .GetPreviousHash ())
228
+ assert .Equal (t , uint64 (1 ), bh .GetNumber ())
178
229
bh .Reset ()
179
- assert .Nil (t , bh .PreviousHash )
230
+ assert .Nil (t , bh .GetPreviousHash () )
180
231
_ , _ = bh .Descriptor ()
181
232
_ = bh .String ()
182
233
bh .ProtoMessage ()
183
234
184
- bd := & BlockData {
235
+ var bd * BlockData
236
+ bd = nil
237
+ assert .Nil (t , bd .GetData ())
238
+ bd = & BlockData {
185
239
Data : [][]byte {},
186
240
}
241
+ assert .NotNil (t , bd .GetData ())
187
242
bd .Reset ()
188
- assert .Nil (t , bd .Data )
243
+ assert .Nil (t , bd .GetData () )
189
244
_ , _ = bd .Descriptor ()
190
245
_ = bd .String ()
191
246
bd .ProtoMessage ()
192
247
193
- bm := & BlockMetadata {
248
+ var bm * BlockMetadata
249
+ bm = nil
250
+ assert .Nil (t , bm .GetMetadata ())
251
+ bm = & BlockMetadata {
194
252
Metadata : [][]byte {},
195
253
}
254
+ assert .NotNil (t , bm .GetMetadata ())
196
255
bm .Reset ()
197
- assert .Nil (t , bm .Metadata )
256
+ assert .Nil (t , bm .GetMetadata () )
198
257
_ , _ = bm .Descriptor ()
199
258
_ = bm .String ()
200
259
bm .ProtoMessage ()
201
260
202
261
}
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