aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUjjwal Agarwal <ujjwalcoding012@gmail.com>2021-07-27 19:42:54 +0530
committerUjjwal Agarwal <ujjwalcoding012@gmail.com>2021-07-27 19:42:54 +0530
commit1a9690feffaf2257985570998037cefd196e21aa (patch)
tree3f49ee7fe8e5180d921021800477e61c8e750d08
parent81c7677913cec65e6f45f8def531783b3399b0bc (diff)
downloadspdx-tools-1a9690feffaf2257985570998037cefd196e21aa.tar.gz
JsonParser : increase test coverage of files, creationinfo and annotations
Signed-off-by: Ujjwal Agarwal <ujjwalcoding012@gmail.com>
-rw-r--r--jsonloader/jsonloader_test.go11
-rw-r--r--jsonloader/parser2v2/parse_annotations_test.go58
-rw-r--r--jsonloader/parser2v2/parse_creation_info_test.go60
-rw-r--r--jsonloader/parser2v2/parse_files_test.go16
-rw-r--r--jsonloader/parser2v2/parse_snippets_test.go2
5 files changed, 134 insertions, 13 deletions
diff --git a/jsonloader/jsonloader_test.go b/jsonloader/jsonloader_test.go
index 2ce8750..e90a6a5 100644
--- a/jsonloader/jsonloader_test.go
+++ b/jsonloader/jsonloader_test.go
@@ -3,6 +3,7 @@
package jsonloader
import (
+ "bytes"
"fmt"
"io"
"os"
@@ -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) {
@@ -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)
}
})
diff --git a/jsonloader/parser2v2/parse_annotations_test.go b/jsonloader/parser2v2/parse_annotations_test.go
index 6ef5693..014c3dd 100644
--- a/jsonloader/parser2v2/parse_annotations_test.go
+++ b/jsonloader/parser2v2/parse_annotations_test.go
@@ -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{
{
@@ -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
@@ -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])
+ }
}
}
diff --git a/jsonloader/parser2v2/parse_creation_info_test.go b/jsonloader/parser2v2/parse_creation_info_test.go
index ae62cba..280775a 100644
--- a/jsonloader/parser2v2/parse_creation_info_test.go
+++ b/jsonloader/parser2v2/parse_creation_info_test.go
@@ -153,6 +153,64 @@ 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) {
@@ -160,7 +218,7 @@ func TestJSONSpdxDocument_parseJsonCreationInfo2_2(t *testing.T) {
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)
}
diff --git a/jsonloader/parser2v2/parse_files_test.go b/jsonloader/parser2v2/parse_files_test.go
index 196cb60..30f1bdc 100644
--- a/jsonloader/parser2v2/parse_files_test.go
+++ b/jsonloader/parser2v2/parse_files_test.go
@@ -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",
@@ -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",
diff --git a/jsonloader/parser2v2/parse_snippets_test.go b/jsonloader/parser2v2/parse_snippets_test.go
index e72599e..b25bee5 100644
--- a/jsonloader/parser2v2/parse_snippets_test.go
+++ b/jsonloader/parser2v2/parse_snippets_test.go
@@ -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" : {
@@ -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",