MCPcopy Index your code
hub / github.com/cloudflare/cloudflared / TestSerializeHeaders

Function TestSerializeHeaders

connection/header_test.go:12–58  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestSerializeHeaders(t *testing.T) {
13 request, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
14 require.NoError(t, err)
15
16 mockHeaders := http.Header{
17 "Mock-Header-One": {"Mock header one value", "three"},
18 "Mock-Header-Two-Long": {"Mock header two value\nlong"},
19 ":;": {":;", ";:"},
20 ":": {":"},
21 ";": {";"},
22 ";;": {";;"},
23 "Empty values": {"", ""},
24 "": {"Empty key"},
25 "control\tcharacter\b\n": {"value\n\b\t"},
26 ";\v:": {":\v;"},
27 }
28
29 for header, values := range mockHeaders {
30 for _, value := range values {
31 // Note that Golang's http library is opinionated;
32 // at this point every header name will be title-cased in order to comply with the HTTP RFC
33 // This means our proxy is not completely transparent when it comes to proxying headers
34 request.Header.Add(header, value)
35 }
36 }
37
38 serializedHeaders := SerializeHeaders(request.Header)
39
40 // Sanity check: the headers serialized to something that's not an empty string
41 require.NotEqual(t, "", serializedHeaders)
42
43 // Deserialize back, and ensure we get the same set of headers
44 deserializedHeaders, err := DeserializeHeaders(serializedHeaders)
45 require.NoError(t, err)
46
47 require.Len(t, deserializedHeaders, 13)
48 expectedHeaders := headerToReqHeader(mockHeaders)
49
50 sort.Sort(ByName(deserializedHeaders))
51 sort.Sort(ByName(expectedHeaders))
52
53 require.True(
54 t,
55 reflect.DeepEqual(expectedHeaders, deserializedHeaders),
56 "got = %#v, want = %#v\n", deserializedHeaders, expectedHeaders,
57 )
58}
59
60type ByName []HTTPHeader
61

Callers

nothing calls this directly

Calls 6

SerializeHeadersFunction · 0.85
DeserializeHeadersFunction · 0.85
headerToReqHeaderFunction · 0.85
ByNameTypeAlias · 0.85
LenMethod · 0.80
AddMethod · 0.65

Tested by

no test coverage detected