github.com/projectdiscovery/nuclei/v2@v2.9.15/pkg/protocols/http/http_test.go (about) 1 package http 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/projectdiscovery/nuclei/v2/pkg/model" 9 "github.com/projectdiscovery/nuclei/v2/pkg/model/types/severity" 10 "github.com/projectdiscovery/nuclei/v2/pkg/protocols/common/generators" 11 "github.com/projectdiscovery/nuclei/v2/pkg/testutils" 12 ) 13 14 func TestHTTPCompile(t *testing.T) { 15 options := testutils.DefaultOptions 16 options.CustomHeaders = []string{"User-Agent: test", "Hello: World"} 17 18 testutils.Init(options) 19 templateID := "testing-http" 20 request := &Request{ 21 Name: "testing", 22 Payloads: map[string]interface{}{ 23 "username": []string{"admin"}, 24 "password": []string{"admin", "guest", "password", "test", "12345", "123456"}, 25 }, 26 AttackType: generators.AttackTypeHolder{Value: generators.ClusterBombAttack}, 27 Raw: []string{`GET /manager/html HTTP/1.1 28 Host: {{Hostname}} 29 User-Agent: Nuclei - Open-source project (github.com/projectdiscovery/nuclei) 30 Connection: close 31 Authorization: Basic {{username + ':' + password}} 32 Accept-Encoding: gzip`}, 33 } 34 executerOpts := testutils.NewMockExecuterOptions(options, &testutils.TemplateInfo{ 35 ID: templateID, 36 Info: model.Info{SeverityHolder: severity.Holder{Severity: severity.Low}, Name: "test"}, 37 }) 38 err := request.Compile(executerOpts) 39 require.Nil(t, err, "could not compile http request") 40 require.Equal(t, 6, request.Requests(), "could not get correct number of requests") 41 require.Equal(t, map[string]string{"User-Agent": "test", "Hello": "World"}, request.customHeaders, "could not get correct custom headers") 42 }