1// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2 3package parser2v3 4 5import ( 6 "testing" 7 8 "github.com/spdx/tools-golang/spdx/v2_3" 9) 10 11func Test_setCreator(t *testing.T) { 12 // TestCase 1: invalid creator (empty) 13 input := "" 14 err := setCreator(input, &v2_3.CreationInfo{}) 15 if err == nil { 16 t.Errorf("shoud've raised an error due to invalid input") 17 } 18 19 // TestCase 2: invalid entity type 20 input = "Company: some company" 21 err = setCreator(input, &v2_3.CreationInfo{}) 22 if err == nil { 23 t.Errorf("shoud've raised an error due to unknown entity type") 24 } 25 26 // TestCase 3: valid input 27 input = "Person: Jane Doe" 28 ci := &v2_3.CreationInfo{} 29 err = setCreator(input, ci) 30 if err != nil { 31 t.Errorf("error parsing a valid input: %v", err) 32 } 33 if len(ci.Creators) != 1 { 34 t.Errorf("creationInfo should've had 1 creatorPersons, found %d", len(ci.Creators)) 35 } 36 expectedPerson := "Jane Doe" 37 if ci.Creators[0].Creator != expectedPerson { 38 t.Errorf("expected %s, found %s", expectedPerson, ci.Creators[0]) 39 } 40} 41 42func Test_rdfParser2_3_parseCreationInfoFromNode(t *testing.T) { 43 // TestCase 1: invalid creator must raise an error 44 parser, _ := parserFromBodyContent(` 45 <spdx:CreationInfo> 46 <spdx:licenseListVersion>2.6</spdx:licenseListVersion> 47 <spdx:creator>Person Unknown</spdx:creator> 48 <spdx:created>2018-08-24T19:55:34Z</spdx:created> 49 </spdx:CreationInfo> 50 `) 51 ciNode := parser.gordfParserObj.Triples[0].Subject 52 err := parser.parseCreationInfoFromNode(&v2_3.CreationInfo{}, ciNode) 53 if err == nil { 54 t.Errorf("invalid creator must raise an error") 55 } 56 57 // TestCase 2: unknown predicate must also raise an error 58 parser, _ = parserFromBodyContent(` 59 <spdx:CreationInfo> 60 <spdx:licenseListVersion>2.6</spdx:licenseListVersion> 61 <spdx:creator>Person: fossy (y)</spdx:creator> 62 <spdx:creator>Organization: </spdx:creator> 63 <spdx:creator>Tool: spdx2</spdx:creator> 64 <spdx:created>2018-08-24T19:55:34Z</spdx:created> 65 <spdx:unknownPredicate /> 66 </spdx:CreationInfo> 67 `) 68 ciNode = parser.gordfParserObj.Triples[0].Subject 69 err = parser.parseCreationInfoFromNode(&v2_3.CreationInfo{}, ciNode) 70 if err == nil { 71 t.Errorf("unknown predicate must raise an error") 72 } 73 74 // TestCase 2: unknown predicate must also raise an error 75 parser, _ = parserFromBodyContent(` 76 <spdx:CreationInfo> 77 <spdx:licenseListVersion>2.6</spdx:licenseListVersion> 78 <spdx:creator>Person: fossy</spdx:creator> 79 <spdx:created>2018-08-24T19:55:34Z</spdx:created> 80 <rdfs:comment>comment</rdfs:comment> 81 </spdx:CreationInfo> 82 `) 83 ciNode = parser.gordfParserObj.Triples[0].Subject 84 ci := &v2_3.CreationInfo{} 85 err = parser.parseCreationInfoFromNode(ci, ciNode) 86 if err != nil { 87 t.Errorf("unexpected error: %v", err) 88 } 89 if ci.LicenseListVersion != "2.6" { 90 t.Errorf(`expected %s, found %s`, "2.6", ci.LicenseListVersion) 91 } 92 n := len(ci.Creators) 93 if n != 1 { 94 t.Errorf("expected 1 creatorPersons, found %d", n) 95 } 96 if ci.Creators[0].Creator != "fossy" { 97 t.Errorf("expected %s, found %s", "fossy", ci.Creators[0].Creator) 98 } 99 expectedCreated := "2018-08-24T19:55:34Z" 100 if ci.Created != expectedCreated { 101 t.Errorf("expected %s, found %s", expectedCreated, ci.Created) 102 } 103 expectedComment := "comment" 104 if ci.CreatorComment != expectedComment { 105 t.Errorf("expected %s, found %s", expectedComment, ci.CreatorComment) 106 } 107} 108