aboutsummaryrefslogtreecommitdiff
path: root/rdfloader/rdfloader_test.go
blob: 4f77bdfcee5c0a880cb47f1fe0af0c28fcb1a4fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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)
	}
}