Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/fuzz/component/headers_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 TestHeaderComponent(t *testing.T) {
12
req, err := retryablehttp.NewRequest(http.MethodGet, "https://example.com", nil)
13
if err != nil {
14
t.Fatal(err)
15
}
16
req.Header.Set("User-Agent", "test-agent")
17
18
header := NewHeader()
19
_, err = header.Parse(req)
20
if err != nil {
21
t.Fatal(err)
22
}
23
24
var keys []string
25
var values []string
26
_ = header.Iterate(func(key string, value interface{}) error {
27
keys = append(keys, key)
28
switch v := value.(type) {
29
case string:
30
values = append(values, v)
31
case []string:
32
values = append(values, v...)
33
}
34
return nil
35
})
36
37
require.Equal(t, []string{"User-Agent"}, keys, "unexpected keys")
38
require.Equal(t, []string{"test-agent"}, values, "unexpected values")
39
40
err = header.SetValue("User-Agent", "new-agent")
41
if err != nil {
42
t.Fatal(err)
43
}
44
45
rebuilt, err := header.Rebuild()
46
if err != nil {
47
t.Fatal(err)
48
}
49
50
require.Equal(t, "new-agent", rebuilt.Header.Get("User-Agent"), "unexpected header value")
51
}
52
53