2023-01-17 13:01:20 +05:30
|
|
|
package templates
|
2023-01-17 18:20:05 +05:30
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/protocols/dns"
|
|
|
|
|
"github.com/projectdiscovery/nuclei/v2/pkg/protocols/http"
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestClusterTemplates(t *testing.T) {
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
templates map[string]*Template
|
|
|
|
|
expected [][]*Template
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "http-cluster-get",
|
|
|
|
|
templates: map[string]*Template{
|
|
|
|
|
"first.yaml": {RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}"}}}},
|
|
|
|
|
"second.yaml": {RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}"}}}},
|
|
|
|
|
},
|
|
|
|
|
expected: [][]*Template{{
|
|
|
|
|
{RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}"}}}},
|
|
|
|
|
{RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}"}}}},
|
|
|
|
|
}},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "no-http-cluster",
|
|
|
|
|
templates: map[string]*Template{
|
|
|
|
|
"first.yaml": {RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}/random"}}}},
|
|
|
|
|
"second.yaml": {RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}/another"}}}},
|
|
|
|
|
},
|
|
|
|
|
expected: [][]*Template{
|
|
|
|
|
{{RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}/random"}}}}},
|
|
|
|
|
{{RequestsHTTP: []*http.Request{{Path: []string{"{{BaseURL}}/another"}}}}},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "dns-cluster",
|
|
|
|
|
templates: map[string]*Template{
|
|
|
|
|
"first.yaml": {RequestsDNS: []*dns.Request{{Name: "{{Hostname}}"}}},
|
|
|
|
|
"second.yaml": {RequestsDNS: []*dns.Request{{Name: "{{Hostname}}"}}},
|
|
|
|
|
},
|
|
|
|
|
expected: [][]*Template{{
|
|
|
|
|
{RequestsDNS: []*dns.Request{{Name: "{{Hostname}}"}}},
|
|
|
|
|
{RequestsDNS: []*dns.Request{{Name: "{{Hostname}}"}}},
|
|
|
|
|
}},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, test := range tests {
|
|
|
|
|
t.Run(test.name, func(t *testing.T) {
|
|
|
|
|
returned := Cluster(test.templates)
|
|
|
|
|
require.ElementsMatch(t, returned, test.expected, "could not get cluster results")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|