* update trivy, fanal. unsupport image scanning * Update models/library.go Co-authored-by: Teppei Fukuda <teppei@elab.ic.i.u-tokyo.ac.jp> * add -no-progress flag to report/tui cmd * Display trivy vuln info to tui/report * add detection method to vulninfo detected by trivy * fix(uuid): change uuid lib to go-uuid #929 (#969) * update trivy, fanal. unsupport image scanning * Update models/library.go Co-authored-by: Teppei Fukuda <teppei@elab.ic.i.u-tokyo.ac.jp> * add -no-progress flag to report/tui cmd * Display trivy vuln info to tui/report * add detection method to vulninfo detected by trivy * unique ref links in TUI * download trivy DB only when lock file is specified in config.toml Co-authored-by: Teppei Fukuda <teppei@elab.ic.i.u-tokyo.ac.jp>
147 lines
2.5 KiB
Go
147 lines
2.5 KiB
Go
package models
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/aquasecurity/trivy-db/pkg/db"
|
|
"github.com/aquasecurity/trivy/pkg/log"
|
|
"github.com/aquasecurity/trivy/pkg/types"
|
|
"github.com/aquasecurity/trivy/pkg/utils"
|
|
)
|
|
|
|
func TestScan(t *testing.T) {
|
|
var tests = []struct {
|
|
path string
|
|
pkgs []types.Library
|
|
}{
|
|
{
|
|
path: "app/package-lock.json",
|
|
pkgs: []types.Library{
|
|
{
|
|
Name: "jquery",
|
|
Version: "2.2.4",
|
|
},
|
|
{
|
|
Name: "@babel/traverse",
|
|
Version: "7.4.4",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
if err := log.InitLogger(false, false); err != nil {
|
|
t.Errorf("trivy logger failed")
|
|
}
|
|
|
|
cacheDir := utils.DefaultCacheDir()
|
|
if err := db.Init(cacheDir); err != nil {
|
|
t.Errorf("trivy db.Init failed")
|
|
}
|
|
for _, v := range tests {
|
|
lib := LibraryScanner{
|
|
Path: v.path,
|
|
Libs: v.pkgs,
|
|
}
|
|
actual, err := lib.Scan()
|
|
if err != nil {
|
|
t.Errorf("error occurred")
|
|
}
|
|
if len(actual) == 0 {
|
|
t.Errorf("no vuln found : actual: %v\n", actual)
|
|
}
|
|
}
|
|
db.Close()
|
|
}
|
|
|
|
func TestLibraryScanners_Find(t *testing.T) {
|
|
type args struct {
|
|
name string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
lss LibraryScanners
|
|
args args
|
|
want map[string]types.Library
|
|
}{
|
|
{
|
|
name: "single file",
|
|
lss: LibraryScanners{
|
|
{
|
|
Path: "/pathA",
|
|
Libs: []types.Library{
|
|
{
|
|
Name: "libA",
|
|
Version: "1.0.0",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
args: args{"libA"},
|
|
want: map[string]types.Library{
|
|
"/pathA": {
|
|
Name: "libA",
|
|
Version: "1.0.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "multi file",
|
|
lss: LibraryScanners{
|
|
{
|
|
Path: "/pathA",
|
|
Libs: []types.Library{
|
|
{
|
|
Name: "libA",
|
|
Version: "1.0.0",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Path: "/pathB",
|
|
Libs: []types.Library{
|
|
{
|
|
Name: "libA",
|
|
Version: "1.0.5",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
args: args{"libA"},
|
|
want: map[string]types.Library{
|
|
"/pathA": {
|
|
Name: "libA",
|
|
Version: "1.0.0",
|
|
},
|
|
"/pathB": {
|
|
Name: "libA",
|
|
Version: "1.0.5",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "miss",
|
|
lss: LibraryScanners{
|
|
{
|
|
Path: "/pathA",
|
|
Libs: []types.Library{
|
|
{
|
|
Name: "libA",
|
|
Version: "1.0.0",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
args: args{"libB"},
|
|
want: map[string]types.Library{},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := tt.lss.Find(tt.args.name); !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("LibraryScanners.Find() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|