119 lines
3.8 KiB
Go
119 lines
3.8 KiB
Go
|
|
// 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)
|
||
|
|
}
|
||
|
|
}
|