1// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2 3package rdfloader 4 5import ( 6 "io" 7 "strings" 8 "testing" 9) 10 11func TestLoad2_2(t *testing.T) { 12 var reader io.Reader 13 var err error 14 15 // TestCase 1: invalid rdf/xml must raise an error 16 reader = strings.NewReader("") 17 _, err = Load2_2(reader) 18 if err == nil { 19 t.Errorf("expected an EOF error reading an empty file, got %v", err) 20 } 21 22 // TestCase 2: Valid rdf/xml but invalid spdx document must raise an error 23 reader = strings.NewReader(` 24 <rdf:RDF 25 xmlns:spdx="http://spdx.org/rdf/terms#" 26 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 27 xmlns="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#"> 28 </rdf:RDF> 29 `) 30 _, err = Load2_2(reader) 31 if err == nil { 32 t.Errorf("expected an error due to no SpdxDocument Node in the document") 33 } 34} 35 36func TestLoad2_3(t *testing.T) { 37 var reader io.Reader 38 var err error 39 40 // TestCase 1: invalid rdf/xml must raise an error 41 reader = strings.NewReader("") 42 _, err = Load2_3(reader) 43 if err == nil { 44 t.Errorf("expected an EOF error reading an empty file, got %v", err) 45 } 46 47 // TestCase 2: Valid rdf/xml but invalid spdx document must raise an error 48 reader = strings.NewReader(` 49 <rdf:RDF 50 xmlns:spdx="http://spdx.org/rdf/terms#" 51 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 52 xmlns="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#"> 53 </rdf:RDF> 54 `) 55 _, err = Load2_3(reader) 56 if err == nil { 57 t.Errorf("expected an error due to no SpdxDocument Node in the document") 58 } 59 60 // TestCase 3: New SPDX package elements 61 reader = strings.NewReader(` 62 <rdf:RDF 63 xmlns:spdx="http://spdx.org/rdf/terms#" 64 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 65 xmlns="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#" 66 xmlns:doap="http://usefulinc.com/ns/doap#" 67 xmlns:j.0="http://www.w3.org/2009/pointers#" 68 xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 69 <spdx:SpdxDocument rdf:about="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#SPDXRef-DOCUMENT"> 70 <spdx:specVersion>SPDX-2.0</spdx:specVersion> 71 <spdx:relationship> 72 <spdx:Relationship> 73 <spdx:relationshipType rdf:resource="http://spdx.org/rdf/terms#relationshipType_describes"/> 74 <spdx:relatedSpdxElement> 75 <spdx:Package rdf:about="http://spdx.org/spdxdocs/spdx-example-444504E0-4F89-41D3-9A0C-0305E82C3301#SPDXRef-Saxon"> 76 <spdx:name>Some-Package</spdx:name> 77 <spdx:primaryPackagePurpose rdf:resource="packagePurpose_container" /> 78 <spdx:releaseDate>2021-10-15T02:38:00Z</spdx:releaseDate> 79 <spdx:builtDate>2021-09-15T02:38:00Z</spdx:builtDate> 80 <spdx:validUntilDate>2022-10-15T02:38:00Z</spdx:validUntilDate> 81 </spdx:Package> 82 </spdx:relatedSpdxElement> 83 </spdx:Relationship> 84 </spdx:relationship> 85 </spdx:SpdxDocument> 86 </rdf:RDF> 87 `) 88 89 doc, err := Load2_3(reader) 90 if err != nil { 91 t.Errorf("expected valid SPDX document: %v", err) 92 } 93 94 if doc == nil { 95 t.Fatalf("expected valid SPDX document but got nil") 96 } 97 98 if len(doc.Packages) == 0 { 99 t.Errorf("expected packages but got none") 100 } 101 102 pkg := doc.Packages[0] 103 if pkg.PackageName != "Some-Package" { 104 t.Errorf("expected package nameof Some-Package but got: %s", pkg.PackageName) 105 } 106 if pkg.PrimaryPackagePurpose != "CONTAINER" { 107 t.Errorf("expected package primary purpose of CONTAINER but got: %s", pkg.PrimaryPackagePurpose) 108 } 109 if pkg.ReleaseDate != "2021-10-15T02:38:00Z" { 110 t.Errorf("expected release date of 2021-10-15T02:38:00Z but got: %s", pkg.ReleaseDate) 111 } 112 if pkg.BuiltDate != "2021-09-15T02:38:00Z" { 113 t.Errorf("expected built date of 2021-09-15T02:38:00Z but got: %s", pkg.BuiltDate) 114 } 115 if pkg.ValidUntilDate != "2022-10-15T02:38:00Z" { 116 t.Errorf("expected valid until date of 2022-10-15T02:38:00Z but got: %s", pkg.ValidUntilDate) 117 } 118} 119