diff options
Diffstat (limited to 'rdfloader/rdfloader_test.go')
-rw-r--r-- | rdfloader/rdfloader_test.go | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/rdfloader/rdfloader_test.go b/rdfloader/rdfloader_test.go new file mode 100644 index 0000000..4f77bdf --- /dev/null +++ b/rdfloader/rdfloader_test.go @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +package rdfloader + +import ( + "io" + "strings" + "testing" +) + +func TestLoad2_2(t *testing.T) { + var reader io.Reader + var err error + + // TestCase 1: invalid rdf/xml must raise an error + reader = strings.NewReader("") + _, err = Load2_2(reader) + if err == nil { + t.Errorf("expected an EOF error reading an empty file, got %v", err) + } + + // TestCase 2: Valid rdf/xml but invalid spdx document must raise an error + reader = strings.NewReader(` + <rdf:RDF + xmlns:spdx="http://spdx.org/rdf/terms#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#"> + </rdf:RDF> + `) + _, err = Load2_2(reader) + if err == nil { + t.Errorf("expected an error due to no SpdxDocument Node in the document") + } +} + +func TestLoad2_3(t *testing.T) { + var reader io.Reader + var err error + + // TestCase 1: invalid rdf/xml must raise an error + reader = strings.NewReader("") + _, err = Load2_3(reader) + if err == nil { + t.Errorf("expected an EOF error reading an empty file, got %v", err) + } + + // TestCase 2: Valid rdf/xml but invalid spdx document must raise an error + reader = strings.NewReader(` + <rdf:RDF + xmlns:spdx="http://spdx.org/rdf/terms#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#"> + </rdf:RDF> + `) + _, err = Load2_3(reader) + if err == nil { + t.Errorf("expected an error due to no SpdxDocument Node in the document") + } + + // TestCase 3: New SPDX package elements + reader = strings.NewReader(` + <rdf:RDF + xmlns:spdx="http://spdx.org/rdf/terms#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#" + xmlns:doap="http://usefulinc.com/ns/doap#" + xmlns:j.0="http://www.w3.org/2009/pointers#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> + <spdx:SpdxDocument rdf:about="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#SPDXRef-DOCUMENT"> + <spdx:specVersion>SPDX-2.0</spdx:specVersion> + <spdx:relationship> + <spdx:Relationship> + <spdx:relationshipType rdf:resource="http://spdx.org/rdf/terms#relationshipType_describes"/> + <spdx:relatedSpdxElement> + <spdx:Package rdf:about="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#SPDXRef-Saxon"> + <spdx:name>Some-Package</spdx:name> + <spdx:primaryPackagePurpose rdf:resource="packagePurpose_container" /> + <spdx:releaseDate>2021-10-15T02:38:00Z</spdx:releaseDate> + <spdx:builtDate>2021-09-15T02:38:00Z</spdx:builtDate> + <spdx:validUntilDate>2022-10-15T02:38:00Z</spdx:validUntilDate> + </spdx:Package> + </spdx:relatedSpdxElement> + </spdx:Relationship> + </spdx:relationship> + </spdx:SpdxDocument> + </rdf:RDF> + `) + + doc, err := Load2_3(reader) + if err != nil { + t.Errorf("expected valid SPDX document: %v", err) + } + + if doc == nil { + t.Fatalf("expected valid SPDX document but got nil") + } + + if len(doc.Packages) == 0 { + t.Errorf("expected packages but got none") + } + + pkg := doc.Packages[0] + if pkg.PackageName != "Some-Package" { + t.Errorf("expected package nameof Some-Package but got: %s", pkg.PackageName) + } + if pkg.PrimaryPackagePurpose != "CONTAINER" { + t.Errorf("expected package primary purpose of CONTAINER but got: %s", pkg.PrimaryPackagePurpose) + } + if pkg.ReleaseDate != "2021-10-15T02:38:00Z" { + t.Errorf("expected release date of 2021-10-15T02:38:00Z but got: %s", pkg.ReleaseDate) + } + if pkg.BuiltDate != "2021-09-15T02:38:00Z" { + t.Errorf("expected built date of 2021-09-15T02:38:00Z but got: %s", pkg.BuiltDate) + } + if pkg.ValidUntilDate != "2022-10-15T02:38:00Z" { + t.Errorf("expected valid until date of 2022-10-15T02:38:00Z but got: %s", pkg.ValidUntilDate) + } +} |