github.com/projectdiscovery/nuclei/v2@v2.9.15/pkg/protocols/dns/dns_test.go (about) 1 package dns 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/testutils" 11 ) 12 13 func TestDNSCompileMake(t *testing.T) { 14 options := testutils.DefaultOptions 15 16 recursion := false 17 testutils.Init(options) 18 const templateID = "testing-dns" 19 request := &Request{ 20 RequestType: DNSRequestTypeHolder{DNSRequestType: A}, 21 Class: "INET", 22 Retries: 5, 23 ID: templateID, 24 Recursion: &recursion, 25 Name: "{{FQDN}}", 26 } 27 executerOpts := testutils.NewMockExecuterOptions(options, &testutils.TemplateInfo{ 28 ID: templateID, 29 Info: model.Info{SeverityHolder: severity.Holder{Severity: severity.Low}, Name: "test"}, 30 }) 31 err := request.Compile(executerOpts) 32 require.Nil(t, err, "could not compile dns request") 33 34 req, err := request.Make("one.one.one.one", map[string]interface{}{"FQDN": "one.one.one.one"}) 35 require.Nil(t, err, "could not make dns request") 36 require.Equal(t, "one.one.one.one.", req.Question[0].Name, "could not get correct dns question") 37 } 38 39 func TestDNSRequests(t *testing.T) { 40 options := testutils.DefaultOptions 41 42 recursion := false 43 testutils.Init(options) 44 const templateID = "testing-dns" 45 46 t.Run("dns-regular", func(t *testing.T) { 47 48 request := &Request{ 49 RequestType: DNSRequestTypeHolder{DNSRequestType: A}, 50 Class: "INET", 51 Retries: 5, 52 ID: templateID, 53 Recursion: &recursion, 54 Name: "{{FQDN}}", 55 } 56 executerOpts := testutils.NewMockExecuterOptions(options, &testutils.TemplateInfo{ 57 ID: templateID, 58 Info: model.Info{SeverityHolder: severity.Holder{Severity: severity.Low}, Name: "test"}, 59 }) 60 err := request.Compile(executerOpts) 61 require.Nil(t, err, "could not compile dns request") 62 63 reqCount := request.Requests() 64 require.Equal(t, 1, reqCount, "could not get correct dns request count") 65 }) 66 67 // test payload requests count is correct 68 t.Run("dns-payload", func(t *testing.T) { 69 70 request := &Request{ 71 RequestType: DNSRequestTypeHolder{DNSRequestType: A}, 72 Class: "INET", 73 Retries: 5, 74 ID: templateID, 75 Recursion: &recursion, 76 Name: "{{subdomain}}.{{FQDN}}", 77 Payloads: map[string]interface{}{"subdomain": []string{"a", "b", "c"}}, 78 } 79 executerOpts := testutils.NewMockExecuterOptions(options, &testutils.TemplateInfo{ 80 ID: templateID, 81 Info: model.Info{SeverityHolder: severity.Holder{Severity: severity.Low}, Name: "test"}, 82 }) 83 err := request.Compile(executerOpts) 84 require.Nil(t, err, "could not compile dns request") 85 86 reqCount := request.Requests() 87 require.Equal(t, 3, reqCount, "could not get correct dns request count") 88 }) 89 }