-
Notifications
You must be signed in to change notification settings - Fork 1
/
bxog_test.go
131 lines (115 loc) · 3.86 KB
/
bxog_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
125
126
127
128
129
130
131
package bxog
// Test
// Check the operation of the different modes of the multiplexer Bxog
//
// ░░░░██▄
// ░░░██▀ ▐
// ▌░███▄ ▐
// ▌▐███░▀▄███▄▄▄██▄▄
// ▌█████▌░░▌░░░░░░▌
// ▌▀▀▀▌▐█░░▌░░░░░░▌
// ▌▀▀▀▌▐█░░▌░░░░░░▌
// ▌░░░▌░█▄ ▌░░░░░░▌
//
// 2016 Eduard Sesigin. Contacts: <claygod@yandex.ru>
import (
"net/http"
"net/http/httptest"
"testing"
)
func TestRouting(t *testing.T) {
req, _ := http.NewRequest("GET", "/b/12345", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/a/:par", func(rw http.ResponseWriter, req *http.Request) { req.Method = "ERR" }).Method("GET")
muxx.Test()
muxx.ServeHTTP(res, req)
if req.Method == "ERR" {
t.Error("handler should not be called")
}
}
func TestError404(t *testing.T) {
req, _ := http.NewRequest("GET", "/b/12345", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/a/:par", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(777) }).Method("GET")
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code == 777 {
t.Errorf("expecting error code 404, got %v", res.Code)
}
}
func TestRoutingMethod(t *testing.T) {
req, _ := http.NewRequest("POST", "/a/12345", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/a/:par", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(777) }).Method("GET")
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code == 777 {
t.Error("response to a wrong method")
}
}
// Test if the mux don't handle by prefix (static)
func TestRoutingPathStatic(t *testing.T) {
req, _ := http.NewRequest("POST", "/a/b", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/a", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(777) }).Method("GET")
muxx.Add("/a/b", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(778) }).Method("GET")
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code == 777 {
t.Error("response with the wrong path")
}
}
// Test if the mux don't handle by prefix (dinamic)
func TestRoutingPathDinamic(t *testing.T) {
req, _ := http.NewRequest("POST", "/a/b", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/a", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(777) }).Method("GET")
muxx.Add("/a/:par", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(778) }).Method("GET")
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code == 777 {
t.Error("response with the wrong path")
}
}
func TestDefaultMethodGet(t *testing.T) {
req, _ := http.NewRequest("GET", "/abc", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/ab", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(700) })
muxx.Add("/abc", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(701) })
muxx.Add("/abcd", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(702) })
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code != 701 {
t.Error("It does not work the method of default GET")
}
}
// Test route "/"
func TestRouteSlash(t *testing.T) {
req, _ := http.NewRequest("GET", "/", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(777) })
muxx.Add("/abc", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(700) })
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code != 777 {
t.Error("Error route '/'")
}
}
func TestSlashEnd(t *testing.T) {
req, _ := http.NewRequest("GET", "/abc/", nil)
res := httptest.NewRecorder()
muxx := New()
muxx.Add("/abc", func(rw http.ResponseWriter, req *http.Request) { rw.WriteHeader(777) })
muxx.Test()
muxx.ServeHTTP(res, req)
if res.Code == 777 {
t.Error("Slash removing doesn't work !")
}
}