diff options
Diffstat (limited to 'tvloader/parser2v2/parse_file_test.go')
-rw-r--r-- | tvloader/parser2v2/parse_file_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tvloader/parser2v2/parse_file_test.go b/tvloader/parser2v2/parse_file_test.go index 411593f..3af06a1 100644 --- a/tvloader/parser2v2/parse_file_test.go +++ b/tvloader/parser2v2/parse_file_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/spdx/tools-golang/spdx" + "github.com/spdx/tools-golang/tvloader/reader" ) // ===== Parser file section state change tests ===== @@ -917,3 +918,61 @@ func TestParser2_2FailsIfArtifactURIBeforeArtifactName(t *testing.T) { t.Errorf("expected non-nil error, got nil") } } + +func TestParser2_2FilesWithoutSpdxIdThrowError(t *testing.T) { + //case 1 + // Last unpackaged file no packages in doc + // Last file of last package in the doc + var tvPairs []reader.TagValuePair + tvPair1 := reader.TagValuePair{Tag: "SPDXVersion", Value: "SPDX-2.2"} + tvPairs = append(tvPairs, tvPair1) + tvPair2 := reader.TagValuePair{Tag: "DataLicense", Value: "CC0-1.0"} + tvPairs = append(tvPairs, tvPair2) + tvPair3 := reader.TagValuePair{Tag: "SPDXID", Value: "SPDXRef-DOCUMENT"} + tvPairs = append(tvPairs, tvPair3) + tvPair4 := reader.TagValuePair{Tag: "FileName", Value: "f1"} + tvPairs = append(tvPairs, tvPair4) + _, err := ParseTagValues(tvPairs) + if err == nil { + t.Errorf("files withoutSpdx Identifiers getting accepted") + } + + //case 2 : The previous file (packaged or unpackaged does not contain spdxID) + tvPair5 := reader.TagValuePair{Tag: "FileName", Value: "f2"} + tvPairs = append(tvPairs, tvPair5) + _, err = ParseTagValues(tvPairs) + if err == nil { + t.Errorf("%s", err) + } + + //case 3 : Invalid file with snippet + //Last unpackaged file before the packges start + //Last file of a package and New package starts + sid1 := spdx.ElementID("s1") + parser := tvParser2_2{ + doc: &spdx.Document2_2{}, + st: psCreationInfo2_2, + } + fileName := "f2.txt" + err = parser.parsePair2_2("FileName", fileName) + err = parser.parsePair2_2("SnippetSPDXID", string(sid1)) + err = parser.parsePair2_2("PackageName", "p2") + if err == nil { + t.Errorf("files withoutSpdx Identifiers getting accepted") + } + + //case 4 : Invalid File without snippets + //Last unpackaged file before the packges start + //Last file of a package and New package starts + parser3 := tvParser2_2{ + doc: &spdx.Document2_2{}, + st: psCreationInfo2_2, + } + fileName = "f3.txt" + err = parser3.parsePair2_2("FileName", fileName) + err = parser3.parsePair2_2("PackageName", "p2") + if err == nil { + t.Errorf("files withoutSpdx Identifiers getting accepted") + } + err = parser3.parsePair2_2("PackageName", "p2") +} |