2022-09-19 16:49:30 +05:30
|
|
|
package workflows
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
2023-10-17 17:44:13 +05:30
|
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/model/types/stringslice"
|
|
|
|
|
"github.com/projectdiscovery/nuclei/v3/pkg/operators"
|
2022-09-19 16:49:30 +05:30
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestWorkflowMatchAndCompile(t *testing.T) {
|
|
|
|
|
t.Run("name", func(t *testing.T) {
|
|
|
|
|
matcher := &Matcher{Name: stringslice.StringSlice{Value: "sphinx"}}
|
|
|
|
|
matched := matcher.Match(&operators.Result{Matches: map[string][]string{"sphinx": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.True(t, matched, "could not match value")
|
|
|
|
|
})
|
|
|
|
|
t.Run("name-negative", func(t *testing.T) {
|
|
|
|
|
matcher := &Matcher{Name: stringslice.StringSlice{Value: "tomcat"}}
|
|
|
|
|
matched := matcher.Match(&operators.Result{Matches: map[string][]string{"apache": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.False(t, matched, "could not match value")
|
|
|
|
|
})
|
|
|
|
|
t.Run("names-or", func(t *testing.T) {
|
|
|
|
|
matcher := &Matcher{Name: stringslice.StringSlice{Value: []string{"sphinx", "elastic"}}, Condition: "or"}
|
|
|
|
|
_ = matcher.Compile()
|
|
|
|
|
matched := matcher.Match(&operators.Result{Matches: map[string][]string{"elastic": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.True(t, matched, "could not match value")
|
|
|
|
|
matched = matcher.Match(&operators.Result{Matches: map[string][]string{"sphinx": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.True(t, matched, "could not match value")
|
|
|
|
|
matched = matcher.Match(&operators.Result{Matches: map[string][]string{"random": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.False(t, matched, "could not match value")
|
|
|
|
|
})
|
|
|
|
|
t.Run("names-and", func(t *testing.T) {
|
|
|
|
|
matcher := &Matcher{Name: stringslice.StringSlice{Value: []string{"sphinx", "elastic"}}, Condition: "and"}
|
|
|
|
|
_ = matcher.Compile()
|
|
|
|
|
matched := matcher.Match(&operators.Result{Matches: map[string][]string{"elastic": {}, "sphinx": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.True(t, matched, "could not match value")
|
|
|
|
|
|
|
|
|
|
matched = matcher.Match(&operators.Result{Matches: map[string][]string{"sphinx": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.False(t, matched, "could not match value")
|
|
|
|
|
matched = matcher.Match(&operators.Result{Matches: map[string][]string{"random": {}}, Extracts: map[string][]string{}})
|
|
|
|
|
require.False(t, matched, "could not match value")
|
|
|
|
|
})
|
|
|
|
|
}
|