package flag_test import ( "testing" "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/aquasecurity/trivy/pkg/flag" "github.com/aquasecurity/trivy/pkg/log" "github.com/aquasecurity/trivy/pkg/types" ) func TestVulnerabilityFlagGroup_ToOptions(t *testing.T) { type fields struct { vulnType string } tests := []struct { name string args []string fields fields want flag.VulnerabilityOptions wantLogs []string }{ { name: "happy path for OS vulnerabilities", args: []string{"alpine:latest"}, fields: fields{ vulnType: "os", }, want: flag.VulnerabilityOptions{ VulnType: []string{types.VulnTypeOS}, }, }, { name: "happy path for library vulnerabilities", args: []string{"alpine:latest"}, fields: fields{ vulnType: "library", }, want: flag.VulnerabilityOptions{ VulnType: []string{types.VulnTypeLibrary}, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { out := newLogger(log.LevelWarn) viper.Set(flag.VulnTypeFlag.ConfigName, tt.fields.vulnType) // Assert options f := &flag.VulnerabilityFlagGroup{ VulnType: flag.VulnTypeFlag.Clone(), } got, err := f.ToOptions() require.NoError(t, err) assert.Equalf(t, tt.want, got, "ToOptions()") // Assert log messages assert.Equal(t, tt.wantLogs, out.Messages(), tt.name) }) } }