Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/protocols/dns/dns_test.go
2070 views
1
package dns
2
3
import (
4
"testing"
5
6
"github.com/stretchr/testify/require"
7
8
"github.com/projectdiscovery/nuclei/v3/pkg/model"
9
"github.com/projectdiscovery/nuclei/v3/pkg/model/types/severity"
10
"github.com/projectdiscovery/nuclei/v3/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
}
90
91