-
Notifications
You must be signed in to change notification settings - Fork 3
/
request_test.go
123 lines (118 loc) · 3.47 KB
/
request_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
package bricklinkapi
import (
"net/http"
"testing"
)
func TestGenerateBaseURL(t *testing.T) {
testCases := []struct {
desc string
method string
uri string
params []string
expS string
}{
{desc: "testing URI without params",
method: "GET",
uri: "https://foo.com",
params: []string{},
expS: "GET&https%3A%2F%2Ffoo.com"}, // without trailing &
{desc: "testing URI with params",
method: "GET",
uri: "https://foo.com",
params: []string{
"token=abcd",
"secret=1234",
},
expS: "GET&https%3A%2F%2Ffoo.com&secret%3D1234%26token%3Dabcd"}, // params are sorted
}
for _, tc := range testCases {
req, _ := http.NewRequest(tc.method, tc.uri, nil)
result := generateBaseURL(req, tc.params)
if result != tc.expS {
t.Errorf("\n%v, want: %v, got: %v\n", tc.desc, tc.expS, result)
}
}
}
func TestGenerateSignature(t *testing.T) {
testCases := []struct {
desc string
base string
consumerSecret string
tokenSecret string
expS string
}{
{desc: "testing simple test string",
base: "foobar",
consumerSecret: "foo",
tokenSecret: "bar",
expS: "uTIVP8RyuDOKi71kmTPV3t8%2BIfw%3D"},
{desc: "testing simple uri",
base: "GET&GET&https%3A%2F%2Ffoo.com",
consumerSecret: "abcd",
tokenSecret: "1234",
expS: "0wM5ydwpQqPq0%2FOgU%2FVHLzmAroM%3D"},
{desc: "testing simple uri with parameter",
base: "GET&GET&https%3A%2F%2Ffoo.com&foo%3Dbar",
consumerSecret: "abcd",
tokenSecret: "1234",
expS: "ipi8jiHZZl7T8GxkATgpxCJI5Nk%3D"},
}
for _, tc := range testCases {
result := generateSignature(tc.base, tc.consumerSecret, tc.tokenSecret)
if result != tc.expS {
t.Errorf("\n%v, want: %v, got: %v\n", tc.desc, tc.expS, result)
}
}
}
func TestEncode(t *testing.T) {
testCases := []struct {
desc string
s string
expS string
}{
{desc: "testing", s: "A", expS: "A"},
{desc: "testing", s: "1", expS: "1"},
{desc: "testing", s: "foo", expS: "foo"},
{desc: "testing", s: "foo bar", expS: "foo%20bar"},
{desc: "testing", s: "foo=bar", expS: "foo%3Dbar"},
{desc: "testing", s: "foo+bar", expS: "foo%2Bbar"},
{desc: "testing", s: "https://foo.com", expS: "https%3A%2F%2Ffoo.com"},
}
for _, tc := range testCases {
result := encode(tc.s)
if result != tc.expS {
t.Errorf("%v \"%v\", want: %v, got: %v\n", tc.desc, tc.s, tc.expS, result)
}
}
}
func TestEncodable(t *testing.T) {
testCases := []struct {
desc string
b string
exp bool
}{
{desc: "testing letter", b: "A", exp: false},
{desc: "testing letter", b: "M", exp: false},
{desc: "testing letter", b: "Z", exp: false},
{desc: "testing letter", b: "a", exp: false},
{desc: "testing letter", b: "m", exp: false},
{desc: "testing letter", b: "z", exp: false},
{desc: "testing digit", b: "0", exp: false},
{desc: "testing digit", b: "4", exp: false},
{desc: "testing digit", b: "9", exp: false},
{desc: "testing sign", b: "-", exp: false},
{desc: "testing sign", b: ".", exp: false},
{desc: "testing sign", b: "_", exp: false},
{desc: "testing sign", b: "~", exp: false},
{desc: "testing sign", b: "+", exp: true},
{desc: "testing sign", b: "&", exp: true},
{desc: "testing sign", b: "=", exp: true},
{desc: "testing sign", b: "/", exp: true},
}
for _, tc := range testCases {
result := encodable(tc.b[0])
if result != tc.exp {
t.Errorf("%v \"%v\", want: %v, got: %v\n", tc.desc, tc.b, tc.exp, result)
}
}
}