Skip to content

Commit

Permalink
JsonParser : increase test coverage of files, creationinfo and annota…
Browse files Browse the repository at this point in the history
…tions

Signed-off-by: Ujjwal Agarwal <ujjwalcoding012@gmail.com>
  • Loading branch information
specter25 committed Jul 27, 2021
1 parent 81c7677 commit 1a9690f
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 13 deletions.
11 changes: 10 additions & 1 deletion jsonloader/jsonloader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package jsonloader

import (
"bytes"
"fmt"
"io"
"os"
Expand Down Expand Up @@ -45,6 +46,14 @@ func TestLoad2_2(t *testing.T) {
},
wantErr: false,
},
{
name: "fail - invalidjson ",
args: args{
content: bytes.NewReader([]byte(`{"Hello":"HI",}`)),
},
want: nil,
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand All @@ -53,7 +62,7 @@ func TestLoad2_2(t *testing.T) {
t.Errorf("Load2_2() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got.CreationInfo, tt.want.CreationInfo) {
if !tt.wantErr && !reflect.DeepEqual(got.CreationInfo, tt.want.CreationInfo) {
t.Errorf("Load2_2() = %v, want %v", got.CreationInfo, tt.want.CreationInfo)
}
})
Expand Down
58 changes: 54 additions & 4 deletions jsonloader/parser2v2/parse_annotations_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,26 @@ func TestJSONSpdxDocument_parseJsonAnnotations2_2(t *testing.T) {
} ]
}
`)
data2 := []byte(`{
"annotations" : [ {
"annotationDate" : "2010-02-10T00:00:00Z",
"annotationType" : "REVIEW",
"annotator" : "Person: Joe Reviewer",
"comment" : "This is just an example. Some of the non-standard licenses look like they are actually BSD 3 clause licenses",
"Hello":"hellp"
}]
}
`)
data3 := []byte(`{
"annotations" : [ {
"annotationDate" : "2010-02-10T00:00:00Z",
"annotationType" : "REVIEW",
"annotator" : "Fasle: Joe Reviewer",
"comment" : "This is just an example. Some of the non-standard licenses look like they are actually BSD 3 clause licenses",
"Hello":"hellp"
}]
}
`)

annotationstest1 := []*spdx.Annotation2_2{
{
Expand Down Expand Up @@ -60,7 +80,12 @@ func TestJSONSpdxDocument_parseJsonAnnotations2_2(t *testing.T) {
}

var specs JSONSpdxDocument
var specs2 JSONSpdxDocument
var specs3 JSONSpdxDocument

json.Unmarshal(data, &specs)
json.Unmarshal(data2, &specs2)
json.Unmarshal(data3, &specs3)

type args struct {
key string
Expand Down Expand Up @@ -88,16 +113,41 @@ func TestJSONSpdxDocument_parseJsonAnnotations2_2(t *testing.T) {
want: annotationstest1,
wantErr: false,
},
{
name: "failure test - invaid creator type",
spec: specs2,
args: args{
key: "annotations",
value: specs2["annotations"],
doc: &spdxDocument2_2{},
SPDXElementID: spdx.DocElementID{DocumentRefID: "", ElementRefID: "DOCUMENT"},
},
want: nil,
wantErr: true,
},
{
name: "failure test - invalid tag",
spec: specs3,
args: args{
key: "annotations",
value: specs3["annotations"],
doc: &spdxDocument2_2{},
SPDXElementID: spdx.DocElementID{DocumentRefID: "", ElementRefID: "DOCUMENT"},
},
want: nil,
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := tt.spec.parseJsonAnnotations2_2(tt.args.key, tt.args.value, tt.args.doc, tt.args.SPDXElementID); (err != nil) != tt.wantErr {
t.Errorf("JSONSpdxDocument.parseJsonAnnotations2_2() error = %v, wantErr %v", err, tt.wantErr)
}

for i := 0; i < len(tt.want); i++ {
if !reflect.DeepEqual(tt.args.doc.Annotations[i], tt.want[i]) {
t.Errorf("Load2_2() = %v, want %v", tt.args.doc.Annotations[i], tt.want[i])
if !tt.wantErr {
for i := 0; i < len(tt.want); i++ {
if !reflect.DeepEqual(tt.args.doc.Annotations[i], tt.want[i]) {
t.Errorf("Load2_2() = %v, want %v", tt.args.doc.Annotations[i], tt.want[i])
}
}
}

Expand Down
60 changes: 59 additions & 1 deletion jsonloader/parser2v2/parse_creation_info_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,14 +153,72 @@ func TestJSONSpdxDocument_parseJsonCreationInfo2_2(t *testing.T) {
},
wantErr: false,
},
{
name: "failure : Invalid tag ",
spec: specs,
args: args{
key: "invalid",
value: "This document was created using SPDX 2.0 using licenses from the web site.",
doc: &spdxDocument2_2{},
},
want: &spdx.CreationInfo2_2{ExternalDocumentReferences: map[string]spdx.ExternalDocumentRef2_2{}},
wantErr: true,
},
{
name: "failure : DocRef missing in ExternalRefs",
spec: specs,
args: args{
key: "externalDocumentRefs",
value: []map[string]interface{}{
{
"externalDocumentId": "spdx-tool-1.2",
"spdxDocument": "http://spdx.org/spdxdocs/spdx-tools-v1.2-3F2504E0-4F89-41D3-9A0C-0305E82C3301",
"checksum": map[string]interface{}{
"algorithm": "SHA1",
"checksumValue": "d6a770ba38583ed4bb4525bd96e50461655d2759",
},
},
},
doc: &spdxDocument2_2{},
},
want: nil,
wantErr: true,
},
{
name: "failure : invalid SPDXID",
spec: specs,
args: args{
key: "SPDXID",
value: "DOCUMENT",
doc: &spdxDocument2_2{},
},
want: &spdx.CreationInfo2_2{ExternalDocumentReferences: map[string]spdx.ExternalDocumentRef2_2{}},
wantErr: true,
},
{
name: "failure - invalid creator type",
spec: specs,
args: args{
key: "creationInfo",
value: map[string]interface{}{
"comment": "This package has been shipped in source and binary form.\nThe binaries were created with gcc 4.5.1 and expect to link to\ncompatible system run time libraries.",
"created": "2010-01-29T18:30:22Z",
"creators": []string{"Invalid: LicenseFind-1.0", "Organization: ExampleCodeInspect ()", "Person: Jane Doe ()"},
"licenseListVersion": "3.8",
},
doc: &spdxDocument2_2{},
},
want: nil,
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
tt.args.doc = &spdxDocument2_2{}
if err := tt.spec.parseJsonCreationInfo2_2(tt.args.key, tt.args.value, tt.args.doc); (err != nil) != tt.wantErr {
t.Errorf("JSONSpdxDocument.parseJsonCreationInfo2_2() error = %v, wantErr %v", err, tt.wantErr)
}
if !reflect.DeepEqual(tt.args.doc.CreationInfo, tt.want) {
if !tt.wantErr && !reflect.DeepEqual(tt.args.doc.CreationInfo, tt.want) {
t.Errorf("Load2_2() = %v, want %v", tt.args.doc.CreationInfo, tt.want)
}

Expand Down
16 changes: 9 additions & 7 deletions jsonloader/parser2v2/parse_files_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ func TestJSONSpdxDocument_parseJsonFiles2_2(t *testing.T) {
"fileName" : "./src/org/spdx/parser/DOAPProject.java",
"fileTypes" : [ "SOURCE" ],
"licenseConcluded" : "Apache-2.0",
"attributionTexts":["text1"],
"licenseInfoInFiles" : [ "Apache-2.0" ]
}, {
"SPDXID" : "SPDXRef-CommonsLangSrc",
Expand Down Expand Up @@ -97,13 +98,14 @@ func TestJSONSpdxDocument_parseJsonFiles2_2(t *testing.T) {
Value: "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12",
},
},
FileCopyrightText: "Copyright 2010, 2011 Source Auditor Inc.",
FileContributor: []string{"Protecode Inc.", "SPDX Technical Team Members", "Open Logic Inc.", "Source Auditor Inc.", "Black Duck Software In.c"},
FileDependencies: []string{"SPDXRef-JenaLib", "SPDXRef-CommonsLangSrc"},
FileName: "./src/org/spdx/parser/DOAPProject.java",
FileType: []string{"SOURCE"},
LicenseConcluded: "Apache-2.0",
LicenseInfoInFile: []string{"Apache-2.0"},
FileCopyrightText: "Copyright 2010, 2011 Source Auditor Inc.",
FileContributor: []string{"Protecode Inc.", "SPDX Technical Team Members", "Open Logic Inc.", "Source Auditor Inc.", "Black Duck Software In.c"},
FileDependencies: []string{"SPDXRef-JenaLib", "SPDXRef-CommonsLangSrc"},
FileName: "./src/org/spdx/parser/DOAPProject.java",
FileType: []string{"SOURCE"},
LicenseConcluded: "Apache-2.0",
FileAttributionTexts: []string{"text1"},
LicenseInfoInFile: []string{"Apache-2.0"},
},
"CommonsLangSrc": {
FileSPDXIdentifier: "CommonsLangSrc",
Expand Down
2 changes: 2 additions & 0 deletions jsonloader/parser2v2/parse_snippets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ func TestJSONSpdxDocument_parseJsonSnippets2_2(t *testing.T) {
"licenseComments" : "The concluded license was taken from package xyz, from which the snippet was copied into the current file. The concluded license information was found in the COPYING.txt file in package xyz.",
"licenseConcluded" : "GPL-2.0-only",
"licenseInfoInSnippets" : [ "GPL-2.0-only" ],
"attributionTexts":["text1"],
"name" : "from linux kernel",
"ranges" : [ {
"endPointer" : {
Expand Down Expand Up @@ -52,6 +53,7 @@ func TestJSONSpdxDocument_parseJsonSnippets2_2(t *testing.T) {
Snippets: map[spdx.ElementID]*spdx.Snippet2_2{
"Snippet": {
SnippetSPDXIdentifier: "Snippet",
SnippetAttributionTexts: []string{"text1"},
SnippetFromFileSPDXIdentifier: spdx.DocElementID{ElementRefID: "DoapSource"},
SnippetComment: "This snippet was identified as significant and highlighted in this Apache-2.0 file, when a commercial scanner identified it as being derived from file foo.c in package xyz which is licensed under GPL-2.0.",
SnippetCopyrightText: "Copyright 2008-2010 John Smith",
Expand Down

0 comments on commit 1a9690f

Please sign in to comment.