-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwriter_test.go
154 lines (122 loc) · 3.64 KB
/
writer_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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package yod
import (
"io/ioutil"
"net/http"
"net/http/httptest"
"testing"
)
func TestWriterOK(t *testing.T) {
recoder := httptest.NewRecorder()
w := Writer{
w: recoder,
}
err := w.OK("ok")
if err != nil {
t.Error("It should not error", err)
return
}
resp := recoder.Result()
body, _ := ioutil.ReadAll(resp.Body)
if string(body) != "ok" {
t.Error("It should write plain text ok but was", string(body))
}
if recoder.Code != http.StatusOK {
t.Error("It should write status code as http ok but was", recoder.Code)
}
}
func TestWriterOKWithOtherTypeShouldError(t *testing.T) {
recoder := httptest.NewRecorder()
w := Writer{
w: recoder,
}
err := w.OK(map[string]string{"status": "ok"})
if err != nil {
t.Error("It should not error")
return
}
resp := recoder.Result()
body, _ := ioutil.ReadAll(resp.Body)
if string(body) != writerNotSupportDataType {
t.Errorf("It should write plain text %q but was %q\n", writerNotSupportDataType, string(body))
}
if recoder.Code != http.StatusInternalServerError {
t.Error("It should write status code as http internal server error but was", recoder.Code)
}
}
func TestWriterInternalServerError(t *testing.T) {
recoder := httptest.NewRecorder()
w := Writer{
w: recoder,
}
err := w.InternalServerError("internal server error")
if err != nil {
t.Error("It should not error", err)
return
}
resp := recoder.Result()
body, _ := ioutil.ReadAll(resp.Body)
if string(body) != "internal server error" {
t.Error("It should write plain text ok but was", string(body))
}
if recoder.Code != http.StatusInternalServerError {
t.Error("It should write status code as http ok but was", recoder.Code)
}
}
func TestWriterInternalServerErrorWithOtherTypeShouldError(t *testing.T) {
recoder := httptest.NewRecorder()
w := Writer{
w: recoder,
}
err := w.InternalServerError(map[string]string{"status": "internal server error"})
if err != nil {
t.Error("It should not error")
return
}
resp := recoder.Result()
body, _ := ioutil.ReadAll(resp.Body)
if string(body) != writerNotSupportDataType {
t.Errorf("It should write plain text %q but was %q\n", writerNotSupportDataType, string(body))
}
if recoder.Code != http.StatusInternalServerError {
t.Error("It should write status code as http internal server error but was", recoder.Code)
}
}
func TestWriterInformationalExceptOnltStringType(t *testing.T) {
recoder := httptest.NewRecorder()
w := Writer{
w: recoder,
}
w.Informational(http.StatusContinue, "continue")
resp := recoder.Result()
body, _ := ioutil.ReadAll(resp.Body)
if string(body) != "continue" {
t.Errorf("It should write plain text %q but was %q\n", "continue", string(body))
}
if recoder.Code != http.StatusContinue {
t.Errorf("It should write status code as %d error but was %d\n", http.StatusContinue, recoder.Code)
}
recoder2 := httptest.NewRecorder()
w2 := Writer{
w: recoder2,
}
w2.Informational(http.StatusContinue, map[string]string{"status": "other type"})
resp2 := recoder2.Result()
body, _ = ioutil.ReadAll(resp2.Body)
if string(body) != writerNotSupportDataType {
t.Errorf("It should write plain text %q but was %q\n", writerNotSupportDataType, string(body))
}
if recoder2.Code != http.StatusInternalServerError {
t.Error("It should write status code as http internal server error but was", recoder.Code)
}
recoder3 := httptest.NewRecorder()
w3 := Writer{
w: recoder3,
}
err := w3.Informational(http.StatusOK, "continue")
if err == nil {
t.Error("it should error when status code is not relate with method Informational")
}
if err.Error() != statusIsWrong {
t.Errorf("error should be %q but was %q\n", statusIsWrong, err.Error())
}
}