* feat(model): change CveContents(map[string]CveContent) to map[string][]CveContent * fix(cpescan): use CveIDSource * chore: check Nvd, Jvn data * chore: go-cve-dictionary update * chore: add to cveDetails as is, since CveID is embedded in the response
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package models
 | 
						|
 | 
						|
import (
 | 
						|
	"reflect"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestExcept(t *testing.T) {
 | 
						|
	var tests = []struct {
 | 
						|
		in  CveContents
 | 
						|
		out CveContents
 | 
						|
	}{{
 | 
						|
		in: CveContents{
 | 
						|
			RedHat: []CveContent{{Type: RedHat}},
 | 
						|
			Ubuntu: []CveContent{{Type: Ubuntu}},
 | 
						|
			Debian: []CveContent{{Type: Debian}},
 | 
						|
		},
 | 
						|
		out: CveContents{
 | 
						|
			RedHat: []CveContent{{Type: RedHat}},
 | 
						|
		},
 | 
						|
	},
 | 
						|
	}
 | 
						|
	for _, tt := range tests {
 | 
						|
		actual := tt.in.Except(Ubuntu, Debian)
 | 
						|
		if !reflect.DeepEqual(tt.out, actual) {
 | 
						|
			t.Errorf("\nexpected: %v\n  actual: %v\n", tt.out, actual)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestSourceLinks(t *testing.T) {
 | 
						|
	type in struct {
 | 
						|
		lang  string
 | 
						|
		cveID string
 | 
						|
		cont  CveContents
 | 
						|
	}
 | 
						|
	var tests = []struct {
 | 
						|
		in  in
 | 
						|
		out []CveContentStr
 | 
						|
	}{
 | 
						|
		// lang: ja
 | 
						|
		{
 | 
						|
			in: in{
 | 
						|
				lang:  "ja",
 | 
						|
				cveID: "CVE-2017-6074",
 | 
						|
				cont: CveContents{
 | 
						|
					Jvn: []CveContent{{
 | 
						|
						Type:       Jvn,
 | 
						|
						SourceLink: "https://jvn.jp/vu/JVNVU93610402/",
 | 
						|
					}},
 | 
						|
					RedHat: []CveContent{{
 | 
						|
						Type:       RedHat,
 | 
						|
						SourceLink: "https://access.redhat.com/security/cve/CVE-2017-6074",
 | 
						|
					}},
 | 
						|
					Nvd: []CveContent{{
 | 
						|
						Type: Nvd,
 | 
						|
						References: []Reference{
 | 
						|
							{
 | 
						|
								Link:   "https://lists.apache.org/thread.html/765be3606d865de513f6df9288842c3cf58b09a987c617a535f2b99d@%3Cusers.tapestry.apache.org%3E",
 | 
						|
								Source: "",
 | 
						|
								RefID:  "",
 | 
						|
								Tags:   []string{"Vendor Advisory"},
 | 
						|
							},
 | 
						|
							{
 | 
						|
								Link:   "http://yahoo.com",
 | 
						|
								Source: "",
 | 
						|
								RefID:  "",
 | 
						|
								Tags:   []string{"Vendor"},
 | 
						|
							},
 | 
						|
						},
 | 
						|
						SourceLink: "https://nvd.nist.gov/vuln/detail/CVE-2017-6074",
 | 
						|
					}},
 | 
						|
				},
 | 
						|
			},
 | 
						|
			out: []CveContentStr{
 | 
						|
				{
 | 
						|
					Type:  Nvd,
 | 
						|
					Value: "https://lists.apache.org/thread.html/765be3606d865de513f6df9288842c3cf58b09a987c617a535f2b99d@%3Cusers.tapestry.apache.org%3E",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Type:  Nvd,
 | 
						|
					Value: "https://nvd.nist.gov/vuln/detail/CVE-2017-6074",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Type:  RedHat,
 | 
						|
					Value: "https://access.redhat.com/security/cve/CVE-2017-6074",
 | 
						|
				},
 | 
						|
				{
 | 
						|
					Type:  Jvn,
 | 
						|
					Value: "https://jvn.jp/vu/JVNVU93610402/",
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
		// lang: en
 | 
						|
		{
 | 
						|
			in: in{
 | 
						|
				lang:  "en",
 | 
						|
				cveID: "CVE-2017-6074",
 | 
						|
				cont: CveContents{
 | 
						|
					Jvn: []CveContent{{
 | 
						|
						Type:       Jvn,
 | 
						|
						SourceLink: "https://jvn.jp/vu/JVNVU93610402/",
 | 
						|
					}},
 | 
						|
					RedHat: []CveContent{{
 | 
						|
						Type:       RedHat,
 | 
						|
						SourceLink: "https://access.redhat.com/security/cve/CVE-2017-6074",
 | 
						|
					}},
 | 
						|
				},
 | 
						|
			},
 | 
						|
			out: []CveContentStr{
 | 
						|
				{
 | 
						|
					Type:  RedHat,
 | 
						|
					Value: "https://access.redhat.com/security/cve/CVE-2017-6074",
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
		// lang: empty
 | 
						|
		{
 | 
						|
			in: in{
 | 
						|
				lang:  "en",
 | 
						|
				cveID: "CVE-2017-6074",
 | 
						|
				cont:  CveContents{},
 | 
						|
			},
 | 
						|
			out: []CveContentStr{
 | 
						|
				{
 | 
						|
					Type:  Nvd,
 | 
						|
					Value: "https://nvd.nist.gov/vuln/detail/CVE-2017-6074",
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for i, tt := range tests {
 | 
						|
		actual := tt.in.cont.PrimarySrcURLs(tt.in.lang, "redhat", tt.in.cveID)
 | 
						|
		if !reflect.DeepEqual(tt.out, actual) {
 | 
						|
			t.Errorf("\n[%d] expected: %v\n  actual: %v\n", i, tt.out, actual)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |