nuclei/pkg/fuzz/component/value_test.go
Tarun Koyalwar c1bd4f82ea
Multiple bug fixes in query param fuzzing (#4925)
* fuzz: check and handle typed slice

* do not query encode params + fuzz/allow duplicates params

* sometimes order matters ~query params

* component: fix broken iterator

* result upload add meta params
2024-03-25 10:08:26 +05:30

54 lines
1.0 KiB
Go

package component
import (
"testing"
"github.com/leslie-qiwa/flat"
"github.com/stretchr/testify/require"
)
func TestFlatMap_FlattenUnflatten(t *testing.T) {
data := map[string]interface{}{
"foo": "bar",
"bar": map[string]interface{}{
"baz": "foo",
},
"slice": []interface{}{
"foo",
"bar",
},
"with.dot": map[string]interface{}{
"foo": "bar",
},
}
opts := &flat.Options{
Safe: true,
Delimiter: "~",
}
flattened, err := flat.Flatten(data, opts)
if err != nil {
t.Fatal(err)
}
nested, err := flat.Unflatten(flattened, opts)
if err != nil {
t.Fatal(err)
}
require.Equal(t, data, nested, "unexpected data")
}
func TestAnySlice(t *testing.T) {
data := []any{}
data = append(data, []int{1, 2, 3})
data = append(data, []string{"foo", "bar"})
data = append(data, []bool{true, false})
data = append(data, []float64{1.1, 2.2, 3.3})
for _, d := range data {
val, ok := IsTypedSlice(d)
require.True(t, ok, "expected slice")
require.True(t, val != nil, "expected value but got nil")
}
}