github.com/projectdiscovery/nuclei/v2@v2.9.15/internal/runner/options_test.go (about) 1 package runner 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/projectdiscovery/goflags" 8 "github.com/projectdiscovery/nuclei/v2/pkg/types" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestParseHeadlessOptionalArguments(t *testing.T) { 13 tests := []struct { 14 name string 15 input string 16 want map[string]string 17 }{ 18 { 19 name: "single value", 20 input: "a=b", 21 want: map[string]string{"a": "b"}, 22 }, 23 { 24 name: "empty string", 25 input: "", 26 want: map[string]string{}, 27 }, 28 { 29 name: "empty key", 30 input: "=b", 31 want: map[string]string{}, 32 }, 33 { 34 name: "empty value", 35 input: "a=", 36 want: map[string]string{}, 37 }, 38 { 39 name: "double input", 40 input: "a=b,c=d", 41 want: map[string]string{"a": "b", "c": "d"}, 42 }, 43 { 44 name: "duplicated input", 45 input: "a=b,a=b", 46 want: map[string]string{"a": "b"}, 47 }, 48 } 49 for _, tt := range tests { 50 t.Run(tt.name, func(t *testing.T) { 51 strsl := goflags.StringSlice{} 52 for _, v := range strings.Split(tt.input, ",") { 53 //nolint 54 strsl.Set(v) 55 } 56 opt := types.Options{HeadlessOptionalArguments: strsl} 57 got := opt.ParseHeadlessOptionalArguments() 58 require.Equal(t, tt.want, got) 59 }) 60 } 61 }