aboutsummaryrefslogtreecommitdiff
path: root/tvsaver/saver2v2/save_creation_info_test.go
blob: 404abfe0671c87f545ceeda81459811a9b79148a (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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

package saver2v2

import (
	"bytes"
	"testing"

	"github.com/spdx/tools-golang/spdx"
)

// ===== Creation Info section Saver tests =====
func TestSaver2_2CISavesText(t *testing.T) {
	ci := &spdx.CreationInfo2_2{
		SPDXVersion:       "SPDX-2.2",
		DataLicense:       "CC0-1.0",
		SPDXIdentifier:    spdx.ElementID("DOCUMENT"),
		DocumentName:      "spdx-go-0.0.1.abcdef",
		DocumentNamespace: "https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1.abcdef.whatever",
		ExternalDocumentReferences: map[string]spdx.ExternalDocumentRef2_2{
			"spdx-go-0.0.1a": spdx.ExternalDocumentRef2_2{
				DocumentRefID: "spdx-go-0.0.1a",
				URI:           "https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1a.cdefab.whatever",
				Alg:           "SHA1",
				Checksum:      "0123456701234567012345670123456701234567",
			},
			"time-1.2.3": spdx.ExternalDocumentRef2_2{
				DocumentRefID: "time-1.2.3",
				URI:           "https://github.com/swinslow/spdx-docs/time/time-1.2.3.cdefab.whatever",
				Alg:           "SHA1",
				Checksum:      "0123456701234567012345670123456701234568",
			},
		},
		LicenseListVersion: "3.9",
		CreatorPersons: []string{
			"John Doe",
			"Jane Doe (janedoe@example.com)",
		},
		CreatorOrganizations: []string{
			"John Doe, Inc.",
			"Jane Doe LLC",
		},
		CreatorTools: []string{
			"magictool1-1.0",
			"magictool2-1.0",
			"magictool3-1.0",
		},
		Created:         "2018-10-10T06:20:00Z",
		CreatorComment:  "this is a creator comment",
		DocumentComment: "this is a document comment",
	}

	// what we want to get, as a buffer of bytes
	want := bytes.NewBufferString(`SPDXVersion: SPDX-2.2
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: spdx-go-0.0.1.abcdef
DocumentNamespace: https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1.abcdef.whatever
ExternalDocumentRef: DocumentRef-spdx-go-0.0.1a https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1a.cdefab.whatever SHA1:0123456701234567012345670123456701234567
ExternalDocumentRef: DocumentRef-time-1.2.3 https://github.com/swinslow/spdx-docs/time/time-1.2.3.cdefab.whatever SHA1:0123456701234567012345670123456701234568
LicenseListVersion: 3.9
Creator: Person: John Doe
Creator: Person: Jane Doe (janedoe@example.com)
Creator: Organization: John Doe, Inc.
Creator: Organization: Jane Doe LLC
Creator: Tool: magictool1-1.0
Creator: Tool: magictool2-1.0
Creator: Tool: magictool3-1.0
Created: 2018-10-10T06:20:00Z
CreatorComment: this is a creator comment
DocumentComment: this is a document comment

`)

	// render as buffer of bytes
	var got bytes.Buffer
	err := renderCreationInfo2_2(ci, &got)
	if err != nil {
		t.Errorf("Expected nil error, got %v", err)
	}

	// check that they match
	c := bytes.Compare(want.Bytes(), got.Bytes())
	if c != 0 {
		t.Errorf("Expected %v, got %v", want.String(), got.String())
	}
}

func TestSaver2_2CIOmitsOptionalFieldsIfEmpty(t *testing.T) {
	// --- need at least one creator; do first for Persons ---
	ci1 := &spdx.CreationInfo2_2{
		SPDXVersion:       "SPDX-2.2",
		DataLicense:       "CC0-1.0",
		SPDXIdentifier:    spdx.ElementID("DOCUMENT"),
		DocumentName:      "spdx-go-0.0.1.abcdef",
		DocumentNamespace: "https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1.abcdef.whatever",
		CreatorPersons: []string{
			"John Doe",
		},
		Created: "2018-10-10T06:20:00Z",
	}

	// what we want to get, as a buffer of bytes
	want1 := bytes.NewBufferString(`SPDXVersion: SPDX-2.2
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: spdx-go-0.0.1.abcdef
DocumentNamespace: https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1.abcdef.whatever
Creator: Person: John Doe
Created: 2018-10-10T06:20:00Z

`)

	// render as buffer of bytes
	var got1 bytes.Buffer
	err := renderCreationInfo2_2(ci1, &got1)
	if err != nil {
		t.Errorf("Expected nil error, got %v", err)
	}

	// check that they match
	c1 := bytes.Compare(want1.Bytes(), got1.Bytes())
	if c1 != 0 {
		t.Errorf("Expected %v, got %v", want1.String(), got1.String())
	}

	// --- need at least one creator; now switch to organization ---
	ci2 := &spdx.CreationInfo2_2{
		SPDXVersion:       "SPDX-2.2",
		DataLicense:       "CC0-1.0",
		SPDXIdentifier:    spdx.ElementID("DOCUMENT"),
		DocumentName:      "spdx-go-0.0.1.abcdef",
		DocumentNamespace: "https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1.abcdef.whatever",
		CreatorOrganizations: []string{
			"John Doe, Inc.",
		},
		Created: "2018-10-10T06:20:00Z",
	}

	// what we want to get, as a buffer of bytes
	want2 := bytes.NewBufferString(`SPDXVersion: SPDX-2.2
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: spdx-go-0.0.1.abcdef
DocumentNamespace: https://github.com/swinslow/spdx-docs/spdx-go/spdx-go-0.0.1.abcdef.whatever
Creator: Organization: John Doe, Inc.
Created: 2018-10-10T06:20:00Z

`)

	// render as buffer of bytes
	var got2 bytes.Buffer
	err = renderCreationInfo2_2(ci2, &got2)
	if err != nil {
		t.Errorf("Expected nil error, got %v", err)
	}

	// check that they match
	c2 := bytes.Compare(want2.Bytes(), got2.Bytes())
	if c2 != 0 {
		t.Errorf("Expected %v, got %v", want2.String(), got2.String())
	}
}