nuclei/v2/pkg/protocols/http/fuzz/fuzz_test.go
Ice3man b9472cf7e1
Added fuzzing support for query params + var dump feature (#2679)
* Added fuzzing support for query params + var dump feature

* Added query-fuzz integration test

* Fixed payloads + added keys-regex fuzz parameter

* Fixed interactsh not working + misc

* Fixed evaluation + added global variables/dsl support to payloads

* Misc fixes related to variables evaluations

* Added http variables support to fuzz

* misc

* Misc

* Added testing playground + misc renaming

* Added support for path and raw request to fuzzing

* Fixed fuzz integration test

* Fixed variable unresolved issue

* Add multiple parameter support with same name

* Added parameter value as 'value' dsl variable for parts

Co-authored-by: Sandeep Singh <sandeep@projectdiscovery.io>
2022-11-01 20:28:50 +05:30

38 lines
1.2 KiB
Go

package fuzz
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestRuleMatchKeyOrValue(t *testing.T) {
rule := &Rule{}
err := rule.Compile(nil, nil)
require.NoError(t, err, "could not compile rule")
result := rule.matchKeyOrValue("url", "")
require.True(t, result, "could not get correct result")
t.Run("key", func(t *testing.T) {
rule := &Rule{Keys: []string{"url"}}
err := rule.Compile(nil, nil)
require.NoError(t, err, "could not compile rule")
result := rule.matchKeyOrValue("url", "")
require.True(t, result, "could not get correct result")
result = rule.matchKeyOrValue("test", "")
require.False(t, result, "could not get correct result")
})
t.Run("value", func(t *testing.T) {
rule := &Rule{ValuesRegex: []string{`https?:\/\/?([-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b)*(\/[\/\d\w\.-]*)*(?:[\?])*(.+)*`}}
err := rule.Compile(nil, nil)
require.NoError(t, err, "could not compile rule")
result := rule.matchKeyOrValue("", "http://localhost:80")
require.True(t, result, "could not get correct result")
result = rule.matchKeyOrValue("test", "random")
require.False(t, result, "could not get correct result")
})
}