xref: /aosp_15_r20/external/spdx-tools/utils/verification_test.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2*ba677afaSXin Li
3*ba677afaSXin Lipackage utils
4*ba677afaSXin Li
5*ba677afaSXin Liimport (
6*ba677afaSXin Li	"testing"
7*ba677afaSXin Li
8*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/common"
9*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_1"
10*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_2"
11*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_3"
12*ba677afaSXin Li)
13*ba677afaSXin Li
14*ba677afaSXin Li// ===== 2.1 Verification code functionality tests =====
15*ba677afaSXin Li
16*ba677afaSXin Lifunc TestPackage2_1CanGetVerificationCode(t *testing.T) {
17*ba677afaSXin Li	files := []*v2_1.File{
18*ba677afaSXin Li		{
19*ba677afaSXin Li			FileName:           "file2.txt",
20*ba677afaSXin Li			FileSPDXIdentifier: "File0",
21*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
22*ba677afaSXin Li		},
23*ba677afaSXin Li		{
24*ba677afaSXin Li			FileName:           "file1.txt",
25*ba677afaSXin Li			FileSPDXIdentifier: "File1",
26*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
27*ba677afaSXin Li		},
28*ba677afaSXin Li		{
29*ba677afaSXin Li			FileName:           "file3.txt",
30*ba677afaSXin Li			FileSPDXIdentifier: "File2",
31*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
32*ba677afaSXin Li		},
33*ba677afaSXin Li		{
34*ba677afaSXin Li			FileName:           "file5.txt",
35*ba677afaSXin Li			FileSPDXIdentifier: "File3",
36*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
37*ba677afaSXin Li		},
38*ba677afaSXin Li		{
39*ba677afaSXin Li			FileName:           "file4.txt",
40*ba677afaSXin Li			FileSPDXIdentifier: "File4",
41*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", Algorithm: common.SHA1}},
42*ba677afaSXin Li		},
43*ba677afaSXin Li	}
44*ba677afaSXin Li
45*ba677afaSXin Li	wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"}
46*ba677afaSXin Li
47*ba677afaSXin Li	gotCode, err := GetVerificationCode2_1(files, "")
48*ba677afaSXin Li	if err != nil {
49*ba677afaSXin Li		t.Fatalf("expected nil error, got %v", err)
50*ba677afaSXin Li	}
51*ba677afaSXin Li	if wantCode.Value != gotCode.Value {
52*ba677afaSXin Li		t.Errorf("expected %v, got %v", wantCode, gotCode)
53*ba677afaSXin Li	}
54*ba677afaSXin Li
55*ba677afaSXin Li}
56*ba677afaSXin Li
57*ba677afaSXin Lifunc TestPackage2_1CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) {
58*ba677afaSXin Li	files := []*v2_1.File{
59*ba677afaSXin Li		{
60*ba677afaSXin Li			FileName:           "file1.txt",
61*ba677afaSXin Li			FileSPDXIdentifier: "File0",
62*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
63*ba677afaSXin Li		},
64*ba677afaSXin Li		{
65*ba677afaSXin Li			FileName:           "file2.txt",
66*ba677afaSXin Li			FileSPDXIdentifier: "File1",
67*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
68*ba677afaSXin Li		},
69*ba677afaSXin Li		{
70*ba677afaSXin Li			FileName:           "thisfile.spdx",
71*ba677afaSXin Li			FileSPDXIdentifier: "File2",
72*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", Algorithm: common.SHA1}},
73*ba677afaSXin Li		},
74*ba677afaSXin Li		{
75*ba677afaSXin Li			FileName:           "file3.txt",
76*ba677afaSXin Li			FileSPDXIdentifier: "File3",
77*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
78*ba677afaSXin Li		},
79*ba677afaSXin Li		{
80*ba677afaSXin Li			FileName:           "file4.txt",
81*ba677afaSXin Li			FileSPDXIdentifier: "File4",
82*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
83*ba677afaSXin Li		},
84*ba677afaSXin Li	}
85*ba677afaSXin Li
86*ba677afaSXin Li	wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"}
87*ba677afaSXin Li
88*ba677afaSXin Li	gotCode, err := GetVerificationCode2_1(files, "thisfile.spdx")
89*ba677afaSXin Li	if err != nil {
90*ba677afaSXin Li		t.Fatalf("expected nil error, got %v", err)
91*ba677afaSXin Li	}
92*ba677afaSXin Li	if wantCode.Value != gotCode.Value {
93*ba677afaSXin Li		t.Errorf("expected %v, got %v", wantCode, gotCode)
94*ba677afaSXin Li	}
95*ba677afaSXin Li}
96*ba677afaSXin Li
97*ba677afaSXin Lifunc TestPackage2_1GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) {
98*ba677afaSXin Li	files := []*v2_1.File{
99*ba677afaSXin Li		{
100*ba677afaSXin Li			FileName:           "file2.txt",
101*ba677afaSXin Li			FileSPDXIdentifier: "File0",
102*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
103*ba677afaSXin Li		},
104*ba677afaSXin Li		nil,
105*ba677afaSXin Li		{
106*ba677afaSXin Li			FileName:           "file3.txt",
107*ba677afaSXin Li			FileSPDXIdentifier: "File2",
108*ba677afaSXin Li			Checksums:          []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}},
109*ba677afaSXin Li		},
110*ba677afaSXin Li	}
111*ba677afaSXin Li
112*ba677afaSXin Li	_, err := GetVerificationCode2_1(files, "")
113*ba677afaSXin Li	if err == nil {
114*ba677afaSXin Li		t.Fatalf("expected non-nil error, got nil")
115*ba677afaSXin Li	}
116*ba677afaSXin Li}
117*ba677afaSXin Li
118*ba677afaSXin Li// ===== 2.2 Verification code functionality tests =====
119*ba677afaSXin Li
120*ba677afaSXin Lifunc TestPackage2_2CanGetVerificationCode(t *testing.T) {
121*ba677afaSXin Li	files := []*v2_2.File{
122*ba677afaSXin Li		{
123*ba677afaSXin Li			FileName:           "file2.txt",
124*ba677afaSXin Li			FileSPDXIdentifier: "File0",
125*ba677afaSXin Li			Checksums: []common.Checksum{
126*ba677afaSXin Li				{
127*ba677afaSXin Li					Algorithm: common.SHA1,
128*ba677afaSXin Li					Value:     "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd",
129*ba677afaSXin Li				},
130*ba677afaSXin Li			},
131*ba677afaSXin Li		},
132*ba677afaSXin Li		{
133*ba677afaSXin Li			FileName:           "file1.txt",
134*ba677afaSXin Li			FileSPDXIdentifier: "File1",
135*ba677afaSXin Li			Checksums: []common.Checksum{
136*ba677afaSXin Li				{
137*ba677afaSXin Li					Algorithm: common.SHA1,
138*ba677afaSXin Li					Value:     "3333333333bbbbbbbbbbccccccccccdddddddddd",
139*ba677afaSXin Li				},
140*ba677afaSXin Li			},
141*ba677afaSXin Li		},
142*ba677afaSXin Li		{
143*ba677afaSXin Li			FileName:           "file3.txt",
144*ba677afaSXin Li			FileSPDXIdentifier: "File2",
145*ba677afaSXin Li			Checksums: []common.Checksum{
146*ba677afaSXin Li				{
147*ba677afaSXin Li					Algorithm: common.SHA1,
148*ba677afaSXin Li					Value:     "8888888888bbbbbbbbbbccccccccccdddddddddd",
149*ba677afaSXin Li				},
150*ba677afaSXin Li			},
151*ba677afaSXin Li		},
152*ba677afaSXin Li		{
153*ba677afaSXin Li			FileName:           "file5.txt",
154*ba677afaSXin Li			FileSPDXIdentifier: "File3",
155*ba677afaSXin Li			Checksums: []common.Checksum{
156*ba677afaSXin Li				{
157*ba677afaSXin Li					Algorithm: common.SHA1,
158*ba677afaSXin Li					Value:     "2222222222bbbbbbbbbbccccccccccdddddddddd",
159*ba677afaSXin Li				},
160*ba677afaSXin Li			},
161*ba677afaSXin Li		},
162*ba677afaSXin Li		{
163*ba677afaSXin Li			FileName:           "file4.txt",
164*ba677afaSXin Li			FileSPDXIdentifier: "File4",
165*ba677afaSXin Li			Checksums: []common.Checksum{
166*ba677afaSXin Li				{
167*ba677afaSXin Li					Algorithm: common.SHA1,
168*ba677afaSXin Li					Value:     "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa",
169*ba677afaSXin Li				},
170*ba677afaSXin Li			},
171*ba677afaSXin Li		},
172*ba677afaSXin Li	}
173*ba677afaSXin Li
174*ba677afaSXin Li	wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"}
175*ba677afaSXin Li
176*ba677afaSXin Li	gotCode, err := GetVerificationCode2_2(files, "")
177*ba677afaSXin Li	if err != nil {
178*ba677afaSXin Li		t.Fatalf("expected nil error, got %v", err)
179*ba677afaSXin Li	}
180*ba677afaSXin Li	if wantCode.Value != gotCode.Value {
181*ba677afaSXin Li		t.Errorf("expected %v, got %v", wantCode, gotCode)
182*ba677afaSXin Li	}
183*ba677afaSXin Li
184*ba677afaSXin Li}
185*ba677afaSXin Li
186*ba677afaSXin Lifunc TestPackage2_2CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) {
187*ba677afaSXin Li	files := []*v2_2.File{
188*ba677afaSXin Li		{
189*ba677afaSXin Li			FileName:           "file1.txt",
190*ba677afaSXin Li			FileSPDXIdentifier: "File0",
191*ba677afaSXin Li			Checksums: []common.Checksum{
192*ba677afaSXin Li				{
193*ba677afaSXin Li					Algorithm: common.SHA1,
194*ba677afaSXin Li					Value:     "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd",
195*ba677afaSXin Li				},
196*ba677afaSXin Li			},
197*ba677afaSXin Li		},
198*ba677afaSXin Li		{
199*ba677afaSXin Li			FileName:           "file2.txt",
200*ba677afaSXin Li			FileSPDXIdentifier: "File1",
201*ba677afaSXin Li			Checksums: []common.Checksum{
202*ba677afaSXin Li				{
203*ba677afaSXin Li					Algorithm: common.SHA1,
204*ba677afaSXin Li					Value:     "3333333333bbbbbbbbbbccccccccccdddddddddd",
205*ba677afaSXin Li				},
206*ba677afaSXin Li			},
207*ba677afaSXin Li		},
208*ba677afaSXin Li		{
209*ba677afaSXin Li			FileName:           "thisfile.spdx",
210*ba677afaSXin Li			FileSPDXIdentifier: "File2",
211*ba677afaSXin Li			Checksums: []common.Checksum{
212*ba677afaSXin Li				{
213*ba677afaSXin Li					Algorithm: common.SHA1,
214*ba677afaSXin Li					Value:     "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa",
215*ba677afaSXin Li				},
216*ba677afaSXin Li			},
217*ba677afaSXin Li		},
218*ba677afaSXin Li		{
219*ba677afaSXin Li			FileName:           "file3.txt",
220*ba677afaSXin Li			FileSPDXIdentifier: "File3",
221*ba677afaSXin Li			Checksums: []common.Checksum{
222*ba677afaSXin Li				{
223*ba677afaSXin Li					Algorithm: common.SHA1,
224*ba677afaSXin Li					Value:     "8888888888bbbbbbbbbbccccccccccdddddddddd",
225*ba677afaSXin Li				},
226*ba677afaSXin Li			},
227*ba677afaSXin Li		},
228*ba677afaSXin Li		{
229*ba677afaSXin Li			FileName:           "file4.txt",
230*ba677afaSXin Li			FileSPDXIdentifier: "File4",
231*ba677afaSXin Li			Checksums: []common.Checksum{
232*ba677afaSXin Li				{
233*ba677afaSXin Li					Algorithm: common.SHA1,
234*ba677afaSXin Li					Value:     "2222222222bbbbbbbbbbccccccccccdddddddddd",
235*ba677afaSXin Li				},
236*ba677afaSXin Li			},
237*ba677afaSXin Li		},
238*ba677afaSXin Li	}
239*ba677afaSXin Li
240*ba677afaSXin Li	wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"}
241*ba677afaSXin Li
242*ba677afaSXin Li	gotCode, err := GetVerificationCode2_2(files, "thisfile.spdx")
243*ba677afaSXin Li	if err != nil {
244*ba677afaSXin Li		t.Fatalf("expected nil error, got %v", err)
245*ba677afaSXin Li	}
246*ba677afaSXin Li	if wantCode.Value != gotCode.Value {
247*ba677afaSXin Li		t.Errorf("expected %v, got %v", wantCode, gotCode)
248*ba677afaSXin Li	}
249*ba677afaSXin Li}
250*ba677afaSXin Li
251*ba677afaSXin Lifunc TestPackage2_2GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) {
252*ba677afaSXin Li	files := []*v2_2.File{
253*ba677afaSXin Li		{
254*ba677afaSXin Li			FileName:           "file2.txt",
255*ba677afaSXin Li			FileSPDXIdentifier: "File0",
256*ba677afaSXin Li			Checksums: []common.Checksum{
257*ba677afaSXin Li				{
258*ba677afaSXin Li					Algorithm: common.SHA1,
259*ba677afaSXin Li					Value:     "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd",
260*ba677afaSXin Li				},
261*ba677afaSXin Li			},
262*ba677afaSXin Li		},
263*ba677afaSXin Li		nil,
264*ba677afaSXin Li		{
265*ba677afaSXin Li			FileName:           "file3.txt",
266*ba677afaSXin Li			FileSPDXIdentifier: "File2",
267*ba677afaSXin Li			Checksums: []common.Checksum{
268*ba677afaSXin Li				{
269*ba677afaSXin Li					Algorithm: common.SHA1,
270*ba677afaSXin Li					Value:     "8888888888bbbbbbbbbbccccccccccdddddddddd",
271*ba677afaSXin Li				},
272*ba677afaSXin Li			},
273*ba677afaSXin Li		},
274*ba677afaSXin Li	}
275*ba677afaSXin Li
276*ba677afaSXin Li	_, err := GetVerificationCode2_2(files, "")
277*ba677afaSXin Li	if err == nil {
278*ba677afaSXin Li		t.Fatalf("expected non-nil error, got nil")
279*ba677afaSXin Li	}
280*ba677afaSXin Li}
281*ba677afaSXin Li
282*ba677afaSXin Li// ===== 2.3 Verification code functionality tests =====
283*ba677afaSXin Li
284*ba677afaSXin Lifunc TestPackage2_3CanGetVerificationCode(t *testing.T) {
285*ba677afaSXin Li	files := []*v2_3.File{
286*ba677afaSXin Li		{
287*ba677afaSXin Li			FileName:           "file2.txt",
288*ba677afaSXin Li			FileSPDXIdentifier: "File0",
289*ba677afaSXin Li			Checksums: []common.Checksum{
290*ba677afaSXin Li				{
291*ba677afaSXin Li					Algorithm: common.SHA1,
292*ba677afaSXin Li					Value:     "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd",
293*ba677afaSXin Li				},
294*ba677afaSXin Li			},
295*ba677afaSXin Li		},
296*ba677afaSXin Li		{
297*ba677afaSXin Li			FileName:           "file1.txt",
298*ba677afaSXin Li			FileSPDXIdentifier: "File1",
299*ba677afaSXin Li			Checksums: []common.Checksum{
300*ba677afaSXin Li				{
301*ba677afaSXin Li					Algorithm: common.SHA1,
302*ba677afaSXin Li					Value:     "3333333333bbbbbbbbbbccccccccccdddddddddd",
303*ba677afaSXin Li				},
304*ba677afaSXin Li			},
305*ba677afaSXin Li		},
306*ba677afaSXin Li		{
307*ba677afaSXin Li			FileName:           "file3.txt",
308*ba677afaSXin Li			FileSPDXIdentifier: "File2",
309*ba677afaSXin Li			Checksums: []common.Checksum{
310*ba677afaSXin Li				{
311*ba677afaSXin Li					Algorithm: common.SHA1,
312*ba677afaSXin Li					Value:     "8888888888bbbbbbbbbbccccccccccdddddddddd",
313*ba677afaSXin Li				},
314*ba677afaSXin Li			},
315*ba677afaSXin Li		},
316*ba677afaSXin Li		{
317*ba677afaSXin Li			FileName:           "file5.txt",
318*ba677afaSXin Li			FileSPDXIdentifier: "File3",
319*ba677afaSXin Li			Checksums: []common.Checksum{
320*ba677afaSXin Li				{
321*ba677afaSXin Li					Algorithm: common.SHA1,
322*ba677afaSXin Li					Value:     "2222222222bbbbbbbbbbccccccccccdddddddddd",
323*ba677afaSXin Li				},
324*ba677afaSXin Li			},
325*ba677afaSXin Li		},
326*ba677afaSXin Li		{
327*ba677afaSXin Li			FileName:           "file4.txt",
328*ba677afaSXin Li			FileSPDXIdentifier: "File4",
329*ba677afaSXin Li			Checksums: []common.Checksum{
330*ba677afaSXin Li				{
331*ba677afaSXin Li					Algorithm: common.SHA1,
332*ba677afaSXin Li					Value:     "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa",
333*ba677afaSXin Li				},
334*ba677afaSXin Li			},
335*ba677afaSXin Li		},
336*ba677afaSXin Li	}
337*ba677afaSXin Li
338*ba677afaSXin Li	wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"}
339*ba677afaSXin Li
340*ba677afaSXin Li	gotCode, err := GetVerificationCode2_3(files, "")
341*ba677afaSXin Li	if err != nil {
342*ba677afaSXin Li		t.Fatalf("expected nil error, got %v", err)
343*ba677afaSXin Li	}
344*ba677afaSXin Li	if wantCode.Value != gotCode.Value {
345*ba677afaSXin Li		t.Errorf("expected %v, got %v", wantCode, gotCode)
346*ba677afaSXin Li	}
347*ba677afaSXin Li
348*ba677afaSXin Li}
349*ba677afaSXin Li
350*ba677afaSXin Lifunc TestPackage2_3CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) {
351*ba677afaSXin Li	files := []*v2_3.File{
352*ba677afaSXin Li		{
353*ba677afaSXin Li			FileName:           "file1.txt",
354*ba677afaSXin Li			FileSPDXIdentifier: "File0",
355*ba677afaSXin Li			Checksums: []common.Checksum{
356*ba677afaSXin Li				{
357*ba677afaSXin Li					Algorithm: common.SHA1,
358*ba677afaSXin Li					Value:     "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd",
359*ba677afaSXin Li				},
360*ba677afaSXin Li			},
361*ba677afaSXin Li		},
362*ba677afaSXin Li		{
363*ba677afaSXin Li			FileName:           "file2.txt",
364*ba677afaSXin Li			FileSPDXIdentifier: "File1",
365*ba677afaSXin Li			Checksums: []common.Checksum{
366*ba677afaSXin Li				{
367*ba677afaSXin Li					Algorithm: common.SHA1,
368*ba677afaSXin Li					Value:     "3333333333bbbbbbbbbbccccccccccdddddddddd",
369*ba677afaSXin Li				},
370*ba677afaSXin Li			},
371*ba677afaSXin Li		},
372*ba677afaSXin Li		{
373*ba677afaSXin Li			FileName:           "thisfile.spdx",
374*ba677afaSXin Li			FileSPDXIdentifier: "File2",
375*ba677afaSXin Li			Checksums: []common.Checksum{
376*ba677afaSXin Li				{
377*ba677afaSXin Li					Algorithm: common.SHA1,
378*ba677afaSXin Li					Value:     "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa",
379*ba677afaSXin Li				},
380*ba677afaSXin Li			},
381*ba677afaSXin Li		},
382*ba677afaSXin Li		{
383*ba677afaSXin Li			FileName:           "file3.txt",
384*ba677afaSXin Li			FileSPDXIdentifier: "File3",
385*ba677afaSXin Li			Checksums: []common.Checksum{
386*ba677afaSXin Li				{
387*ba677afaSXin Li					Algorithm: common.SHA1,
388*ba677afaSXin Li					Value:     "8888888888bbbbbbbbbbccccccccccdddddddddd",
389*ba677afaSXin Li				},
390*ba677afaSXin Li			},
391*ba677afaSXin Li		},
392*ba677afaSXin Li		{
393*ba677afaSXin Li			FileName:           "file4.txt",
394*ba677afaSXin Li			FileSPDXIdentifier: "File4",
395*ba677afaSXin Li			Checksums: []common.Checksum{
396*ba677afaSXin Li				{
397*ba677afaSXin Li					Algorithm: common.SHA1,
398*ba677afaSXin Li					Value:     "2222222222bbbbbbbbbbccccccccccdddddddddd",
399*ba677afaSXin Li				},
400*ba677afaSXin Li			},
401*ba677afaSXin Li		},
402*ba677afaSXin Li	}
403*ba677afaSXin Li
404*ba677afaSXin Li	wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"}
405*ba677afaSXin Li
406*ba677afaSXin Li	gotCode, err := GetVerificationCode2_3(files, "thisfile.spdx")
407*ba677afaSXin Li	if err != nil {
408*ba677afaSXin Li		t.Fatalf("expected nil error, got %v", err)
409*ba677afaSXin Li	}
410*ba677afaSXin Li	if wantCode.Value != gotCode.Value {
411*ba677afaSXin Li		t.Errorf("expected %v, got %v", wantCode, gotCode)
412*ba677afaSXin Li	}
413*ba677afaSXin Li}
414*ba677afaSXin Li
415*ba677afaSXin Lifunc TestPackage2_3GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) {
416*ba677afaSXin Li	files := []*v2_3.File{
417*ba677afaSXin Li		{
418*ba677afaSXin Li			FileName:           "file2.txt",
419*ba677afaSXin Li			FileSPDXIdentifier: "File0",
420*ba677afaSXin Li			Checksums: []common.Checksum{
421*ba677afaSXin Li				{
422*ba677afaSXin Li					Algorithm: common.SHA1,
423*ba677afaSXin Li					Value:     "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd",
424*ba677afaSXin Li				},
425*ba677afaSXin Li			},
426*ba677afaSXin Li		},
427*ba677afaSXin Li		nil,
428*ba677afaSXin Li		{
429*ba677afaSXin Li			FileName:           "file3.txt",
430*ba677afaSXin Li			FileSPDXIdentifier: "File2",
431*ba677afaSXin Li			Checksums: []common.Checksum{
432*ba677afaSXin Li				{
433*ba677afaSXin Li					Algorithm: common.SHA1,
434*ba677afaSXin Li					Value:     "8888888888bbbbbbbbbbccccccccccdddddddddd",
435*ba677afaSXin Li				},
436*ba677afaSXin Li			},
437*ba677afaSXin Li		},
438*ba677afaSXin Li	}
439*ba677afaSXin Li
440*ba677afaSXin Li	_, err := GetVerificationCode2_3(files, "")
441*ba677afaSXin Li	if err == nil {
442*ba677afaSXin Li		t.Fatalf("expected non-nil error, got nil")
443*ba677afaSXin Li	}
444*ba677afaSXin Li}
445