mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-12 15:50:15 -08:00
88 lines
1.7 KiB
Go
88 lines
1.7 KiB
Go
package option_test
|
|
|
|
import (
|
|
"flag"
|
|
"testing"
|
|
|
|
"github.com/aquasecurity/trivy/pkg/commands/option"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
func TestNewDBOption(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
args []string
|
|
want option.DBOption
|
|
}{
|
|
{
|
|
name: "happy path",
|
|
args: []string{"--reset", "--skip-db-update"},
|
|
want: option.DBOption{
|
|
Reset: true,
|
|
SkipDBUpdate: true,
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
app := &cli.App{}
|
|
set := flag.NewFlagSet("test", 0)
|
|
set.Bool("reset", false, "")
|
|
set.Bool("skip-db-update", false, "")
|
|
|
|
c := cli.NewContext(app, set, nil)
|
|
_ = set.Parse(tt.args)
|
|
|
|
got := option.NewDBOption(c)
|
|
assert.Equal(t, tt.want, got, tt.name)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestDBOption_Init(t *testing.T) {
|
|
type fields struct {
|
|
Reset bool
|
|
DownloadDBOnly bool
|
|
SkipUpdate bool
|
|
Light bool
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
wantErr string
|
|
}{
|
|
{
|
|
name: "happy path",
|
|
fields: fields{
|
|
Light: true,
|
|
},
|
|
},
|
|
{
|
|
name: "sad path",
|
|
fields: fields{
|
|
DownloadDBOnly: true,
|
|
SkipUpdate: true,
|
|
},
|
|
wantErr: "--skip-db-update and --download-db-only options can not be specified both",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
c := &option.DBOption{
|
|
Reset: tt.fields.Reset,
|
|
DownloadDBOnly: tt.fields.DownloadDBOnly,
|
|
SkipDBUpdate: tt.fields.SkipUpdate,
|
|
Light: tt.fields.Light,
|
|
}
|
|
|
|
err := c.Init()
|
|
if tt.wantErr != "" {
|
|
assert.EqualError(t, err, tt.wantErr, err)
|
|
} else {
|
|
assert.NoError(t, err)
|
|
}
|
|
})
|
|
}
|
|
}
|