-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils_test.go
124 lines (113 loc) · 3.07 KB
/
utils_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package main
import (
"strings"
"testing"
"github.com/onsi/gomega"
)
func Test_parseHeaderLine(t *testing.T) {
g := gomega.NewWithT(t)
t.Parallel()
testCases := []struct {
Input string
ExpName string
ExpValue string
}{
{"", "", ""},
{"a", "A", ""},
{"a:b", "A", "b"},
{" a : b ", "A", "b"},
// Normalize name
{"Content-Type", "Content-Type", ""},
{"Content-Type:", "Content-Type", ""},
{"Content-Type: ", "Content-Type", ""},
{"cONTENT-tYPE", "Content-Type", ""},
{" content-type ", "Content-Type", ""},
{" content-type : ", "Content-Type", ""},
// Others
{"Content-Length: one-two-three", "Content-Length", "one-two-three"},
{"Content-length: oNe-tWo-tHrEe ", "Content-Length", "oNe-tWo-tHrEe"},
{"Content-LENGTH:one ", "Content-Length", "one"},
{"cONTENT-lENGTH: ONE-two-thREE ", "Content-Length", "ONE-two-thREE"},
{" content-length : one - tWo - thRee ", "Content-Length", "one - tWo - thRee"},
}
type h struct{ Name, Value string }
for _, tc := range testCases {
name, value := parseHeaderLine(tc.Input)
g.Expect(h{name, value}).To(gomega.Equal(h{tc.ExpName, tc.ExpValue}), tc.Input)
}
}
func Test_printPayload(t *testing.T) {
g := gomega.NewWithT(t)
t.Parallel()
testCases := []struct {
CaseName string
Input []byte
MaxSize int
Output string
CroppedBytes int
}{
{CaseName: "empty"},
{CaseName: "empty, 10", MaxSize: 10},
// Single line
{
CaseName: "single line, ASCII, 100",
Input: []byte("single line"),
MaxSize: 100,
Output: "single line",
},
{
CaseName: "single line, ASCII, 10",
Input: []byte("single line"),
MaxSize: 10,
Output: "single lin",
CroppedBytes: 1,
},
{
CaseName: "single line, ASCII, 1",
Input: []byte("single line"),
MaxSize: 1,
Output: "s",
CroppedBytes: 10,
},
{
CaseName: "single line, ASCII, 0",
Input: []byte("single line"),
MaxSize: 0,
Output: "",
CroppedBytes: 11,
},
{
CaseName: "single line, BIN, 100",
Input: []byte("\x01single\x00line"),
MaxSize: 100,
Output: "00000000 01 73 69 6e 67 6c 65 00 6c 69 6e 65 |.single.line|\n",
},
{
CaseName: "single line, BIN, 10",
Input: []byte("\x01single\x00line"),
MaxSize: 10,
Output: "00000000 01 73 69 6e 67 6c 65 00 6c 69 |.single.li|\n",
CroppedBytes: 2,
},
{
CaseName: "single line, BIN, 1",
Input: []byte("\x01single\x00line"),
MaxSize: 1,
Output: "00000000 01 |.|\n",
CroppedBytes: 11,
},
{
CaseName: "single line, BIN, 0",
Input: []byte("\x01single\x00line"),
MaxSize: 0,
Output: "",
CroppedBytes: 12,
},
}
for _, tc := range testCases {
var b strings.Builder
n := printPayload(&b, tc.Input, tc.MaxSize)
g.Expect(b.String()).To(gomega.Equal(tc.Output), tc.CaseName)
g.Expect(n).To(gomega.Equal(tc.CroppedBytes), tc.CaseName)
}
}