aboutsummaryrefslogtreecommitdiff
path: root/rdfloader/rdfloader_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'rdfloader/rdfloader_test.go')
-rw-r--r--rdfloader/rdfloader_test.go118
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)
+ }
+}