-
Notifications
You must be signed in to change notification settings - Fork 1
/
request_test.go
82 lines (69 loc) · 1.63 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
package request_test
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"testing"
"github.com/sirupsen/logrus"
"github.com/gorilla/mux"
)
type mockWriter struct{}
func (mw *mockWriter) Header() http.Header {
res := make(http.Header)
return res
}
func (mw *mockWriter) Write(data []byte) (int, error) {
//fmt.Printf("Buffer: %s\n", data)
return len(data), nil
}
func (mw *mockWriter) WriteHeader(statusCode int) {
//fmt.Printf("Status code: %d\n", statusCode)
}
func testRequest() (err error) {
handler := func(w http.ResponseWriter, r *http.Request) {}
logrus.SetLevel(logrus.ErrorLevel)
request.Setup(logrus.StandardLogger(), false, request.DefaultBodySize,
nil, nil)
router := mux.NewRouter()
router.HandleFunc("/test/uri", handler)
u, err := url.Parse("http://localhost/test/uri")
if err != nil {
return
}
someBody := "Some body"
w := &mockWriter{}
buf := ioutil.NopCloser(bytes.NewBufferString(someBody))
r := &http.Request{
Body: buf,
ContentLength: int64(len(someBody)),
Host: "localhost",
Method: "GET",
Proto: "HTTP",
ProtoMajor: 1,
ProtoMinor: 1,
RemoteAddr: "localhost:12345",
RequestURI: "/test/uri",
URL: u,
}
apiReq := request.New(w, r)
body := apiReq.GetBody()
if string(body) != someBody {
err = fmt.Errorf("unexpected body: %s, expected: %s", string(body), someBody)
}
apiReq.FinishNoContent()
return
}
func TestRequest(t *testing.T) {
if err := testRequest(); err != nil {
t.Fatal(err)
}
}
func BenchmarkRequest(b *testing.B) {
for i := 0; i < b.N; i++ {
if err := testRequest(); err != nil {
b.Fatal(err)
}
}
}