blob: 4f77bdfcee5c0a880cb47f1fe0af0c28fcb1a4fe [file] [log] [blame] [edit]
// 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)
}
}