Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/fuzz/component/query_test.go
2070 views
1
package component
2
3
import (
4
"net/http"
5
"testing"
6
7
"github.com/projectdiscovery/retryablehttp-go"
8
"github.com/stretchr/testify/require"
9
)
10
11
func TestQueryComponent(t *testing.T) {
12
req, err := retryablehttp.NewRequest(http.MethodGet, "https://example.com?foo=bar", nil)
13
if err != nil {
14
t.Fatal(err)
15
}
16
17
query := NewQuery()
18
_, err = query.Parse(req)
19
if err != nil {
20
t.Fatal(err)
21
}
22
23
var keys []string
24
var values []string
25
_ = query.Iterate(func(key string, value interface{}) error {
26
keys = append(keys, key)
27
values = append(values, value.(string))
28
return nil
29
})
30
31
require.Equal(t, []string{"foo"}, keys, "unexpected keys")
32
require.Equal(t, []string{"bar"}, values, "unexpected values")
33
34
err = query.SetValue("foo", "baz")
35
if err != nil {
36
t.Fatal(err)
37
}
38
39
rebuilt, err := query.Rebuild()
40
if err != nil {
41
t.Fatal(err)
42
}
43
44
require.Equal(t, "foo=baz", rebuilt.RawQuery, "unexpected query string")
45
require.Equal(t, "https://example.com?foo=baz", rebuilt.String(), "unexpected url")
46
}
47
48