// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later package utils import ( "testing" "github.com/spdx/tools-golang/spdx/common" "github.com/spdx/tools-golang/spdx/v2_1" "github.com/spdx/tools-golang/spdx/v2_2" "github.com/spdx/tools-golang/spdx/v2_3" ) // ===== 2.1 Verification code functionality tests ===== func TestPackage2_1CanGetVerificationCode(t *testing.T) { files := []*v2_1.File{ { FileName: "file2.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "file1.txt", FileSPDXIdentifier: "File1", Checksums: []common.Checksum{{Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "file3.txt", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "file5.txt", FileSPDXIdentifier: "File3", Checksums: []common.Checksum{{Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "file4.txt", FileSPDXIdentifier: "File4", Checksums: []common.Checksum{{Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", Algorithm: common.SHA1}}, }, } wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"} gotCode, err := GetVerificationCode2_1(files, "") if err != nil { t.Fatalf("expected nil error, got %v", err) } if wantCode.Value != gotCode.Value { t.Errorf("expected %v, got %v", wantCode, gotCode) } } func TestPackage2_1CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) { files := []*v2_1.File{ { FileName: "file1.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "file2.txt", FileSPDXIdentifier: "File1", Checksums: []common.Checksum{{Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "thisfile.spdx", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{{Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", Algorithm: common.SHA1}}, }, { FileName: "file3.txt", FileSPDXIdentifier: "File3", Checksums: []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, { FileName: "file4.txt", FileSPDXIdentifier: "File4", Checksums: []common.Checksum{{Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, } wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"} gotCode, err := GetVerificationCode2_1(files, "thisfile.spdx") if err != nil { t.Fatalf("expected nil error, got %v", err) } if wantCode.Value != gotCode.Value { t.Errorf("expected %v, got %v", wantCode, gotCode) } } func TestPackage2_1GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) { files := []*v2_1.File{ { FileName: "file2.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, nil, { FileName: "file3.txt", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, }, } _, err := GetVerificationCode2_1(files, "") if err == nil { t.Fatalf("expected non-nil error, got nil") } } // ===== 2.2 Verification code functionality tests ===== func TestPackage2_2CanGetVerificationCode(t *testing.T) { files := []*v2_2.File{ { FileName: "file2.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file1.txt", FileSPDXIdentifier: "File1", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file3.txt", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file5.txt", FileSPDXIdentifier: "File3", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file4.txt", FileSPDXIdentifier: "File4", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", }, }, }, } wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"} gotCode, err := GetVerificationCode2_2(files, "") if err != nil { t.Fatalf("expected nil error, got %v", err) } if wantCode.Value != gotCode.Value { t.Errorf("expected %v, got %v", wantCode, gotCode) } } func TestPackage2_2CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) { files := []*v2_2.File{ { FileName: "file1.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file2.txt", FileSPDXIdentifier: "File1", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "thisfile.spdx", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", }, }, }, { FileName: "file3.txt", FileSPDXIdentifier: "File3", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file4.txt", FileSPDXIdentifier: "File4", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", }, }, }, } wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"} gotCode, err := GetVerificationCode2_2(files, "thisfile.spdx") if err != nil { t.Fatalf("expected nil error, got %v", err) } if wantCode.Value != gotCode.Value { t.Errorf("expected %v, got %v", wantCode, gotCode) } } func TestPackage2_2GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) { files := []*v2_2.File{ { FileName: "file2.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", }, }, }, nil, { FileName: "file3.txt", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", }, }, }, } _, err := GetVerificationCode2_2(files, "") if err == nil { t.Fatalf("expected non-nil error, got nil") } } // ===== 2.3 Verification code functionality tests ===== func TestPackage2_3CanGetVerificationCode(t *testing.T) { files := []*v2_3.File{ { FileName: "file2.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file1.txt", FileSPDXIdentifier: "File1", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file3.txt", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file5.txt", FileSPDXIdentifier: "File3", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file4.txt", FileSPDXIdentifier: "File4", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", }, }, }, } wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"} gotCode, err := GetVerificationCode2_3(files, "") if err != nil { t.Fatalf("expected nil error, got %v", err) } if wantCode.Value != gotCode.Value { t.Errorf("expected %v, got %v", wantCode, gotCode) } } func TestPackage2_3CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) { files := []*v2_3.File{ { FileName: "file1.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file2.txt", FileSPDXIdentifier: "File1", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "thisfile.spdx", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", }, }, }, { FileName: "file3.txt", FileSPDXIdentifier: "File3", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", }, }, }, { FileName: "file4.txt", FileSPDXIdentifier: "File4", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", }, }, }, } wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"} gotCode, err := GetVerificationCode2_3(files, "thisfile.spdx") if err != nil { t.Fatalf("expected nil error, got %v", err) } if wantCode.Value != gotCode.Value { t.Errorf("expected %v, got %v", wantCode, gotCode) } } func TestPackage2_3GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) { files := []*v2_3.File{ { FileName: "file2.txt", FileSPDXIdentifier: "File0", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", }, }, }, nil, { FileName: "file3.txt", FileSPDXIdentifier: "File2", Checksums: []common.Checksum{ { Algorithm: common.SHA1, Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", }, }, }, } _, err := GetVerificationCode2_3(files, "") if err == nil { t.Fatalf("expected non-nil error, got nil") } }