Path: blob/dev/pkg/protocols/http/request_generator_test.go
2070 views
package http12import (3"testing"45"github.com/stretchr/testify/require"67"github.com/projectdiscovery/nuclei/v3/pkg/catalog/disk"8"github.com/projectdiscovery/nuclei/v3/pkg/protocols/common/generators"9"github.com/projectdiscovery/nuclei/v3/pkg/types"10)1112func TestRequestGeneratorPaths(t *testing.T) {13req := &Request{14Path: []string{"{{BaseURL}}/test", "{{BaseURL}}/test.php"},15}16generator := req.newGenerator(false)17var payloads []string18for {19raw, _, ok := generator.nextValue()20if !ok {21break22}23payloads = append(payloads, raw)24}25require.Equal(t, req.Path, payloads, "Could not get correct paths")26}2728func TestRequestGeneratorClusterBombSingle(t *testing.T) {29var err error3031req := &Request{32Payloads: map[string]interface{}{"username": []string{"admin", "tomcat", "manager"}, "password": []string{"password", "test", "secret"}},33AttackType: generators.AttackTypeHolder{Value: generators.ClusterBombAttack},34Raw: []string{`GET /{{username}}:{{password}} HTTP/1.1`},35}36catalogInstance := disk.NewCatalog("")37req.generator, err = generators.New(req.Payloads, req.AttackType.Value, "", catalogInstance, "", types.DefaultOptions())38require.Nil(t, err, "could not create generator")3940generator := req.newGenerator(false)41var payloads []map[string]interface{}42for {43_, data, ok := generator.nextValue()44if !ok {45break46}47payloads = append(payloads, data)48}49require.Equal(t, 9, len(payloads), "Could not get correct number of payloads")50}5152func TestRequestGeneratorClusterBombMultipleRaw(t *testing.T) {53var err error5455req := &Request{56Payloads: map[string]interface{}{"username": []string{"admin", "tomcat", "manager"}, "password": []string{"password", "test", "secret"}},57AttackType: generators.AttackTypeHolder{Value: generators.ClusterBombAttack},58Raw: []string{`GET /{{username}}:{{password}} HTTP/1.1`, `GET /{{username}}@{{password}} HTTP/1.1`},59}60catalogInstance := disk.NewCatalog("")61req.generator, err = generators.New(req.Payloads, req.AttackType.Value, "", catalogInstance, "", types.DefaultOptions())62require.Nil(t, err, "could not create generator")6364generator := req.newGenerator(false)65var payloads []map[string]interface{}66for {67_, data, ok := generator.nextValue()68if !ok {69break70}71payloads = append(payloads, data)72}73require.Equal(t, 18, len(payloads), "Could not get correct number of payloads")74}757677