forked from simonmittag/j8a
-
Notifications
You must be signed in to change notification settings - Fork 0
/
responses_test.go
135 lines (113 loc) · 3.26 KB
/
responses_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
package jabba
import (
"bytes"
"io/ioutil"
"net/http"
"net/http/httptest"
"strings"
"testing"
)
//this testHandler binds the mock HTTP server to proxyHandler.
type AboutHttpHandler struct{}
func (t AboutHttpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
aboutHandler(w, r)
}
func TestAboutHandlerContentEncodingIdentity(t *testing.T) {
Runner = mockRuntime()
server := httptest.NewServer(&AboutHttpHandler{})
defer server.Close()
c := &http.Client{}
req, _ := http.NewRequest("GET", server.URL, nil)
req.Header.Set("Accept-Encoding", "identity")
resp, err := c.Do(req)
if err != nil {
t.Fatal(err)
}
gotBody, _ := ioutil.ReadAll(resp.Body)
if c := bytes.Compare(gotBody[0:2], gzipMagicBytes); c == 0 {
t.Errorf("body should not have gzip response magic bytes but does: %v", gotBody[0:2])
}
want := "identity"
got := resp.Header["Content-Encoding"][0]
if got != want {
t.Errorf("response does have correct Content-Encoding header, want %v, got %v", want, got)
}
}
func TestAboutHandlerContentEncodingNotSpecified(t *testing.T) {
Runner = mockRuntime()
server := httptest.NewServer(&AboutHttpHandler{})
defer server.Close()
c := &http.Client{
Transport: &http.Transport{
DisableCompression: true,
},
}
req, _ := http.NewRequest("GET", server.URL, nil)
req.Header.Del("Accept-Encoding")
resp, err := c.Do(req)
if err != nil {
t.Fatal(err)
}
gotBody, _ := ioutil.ReadAll(resp.Body)
if c := bytes.Compare(gotBody[0:2], gzipMagicBytes); c == 0 {
t.Errorf("body should not have gzip response magic bytes but does: %v", gotBody[0:2])
}
want := "identity"
got := resp.Header["Content-Encoding"][0]
if got != want {
t.Errorf("response does have correct Content-Encoding header, want %v, got %v", want, got)
}
}
func TestAboutHandlerContentEncodingGzip(t *testing.T) {
Runner = mockRuntime()
server := httptest.NewServer(&AboutHttpHandler{})
defer server.Close()
c := &http.Client{}
req, _ := http.NewRequest("GET", server.URL, nil)
req.Header.Set("Accept-Encoding", "gzip")
resp, err := c.Do(req)
if err != nil {
t.Fatal(err)
}
gotBody, _ := ioutil.ReadAll(resp.Body)
if c := bytes.Compare(gotBody[0:2], gzipMagicBytes); c != 0 {
t.Errorf("body should not have gzip response magic bytes but does: %v", gotBody[0:2])
}
want := "gzip"
got := resp.Header["Content-Encoding"][0]
if got != want {
t.Errorf("response does have correct Content-Encoding header, want %v, got %v", want, got)
}
}
func TestStatusCodeResponse_FromCode(t *testing.T) {
res301 := new(StatusCodeResponse)
res301.withCode(301)
want := "moved permanently"
got := res301.Message
if got != want {
t.Errorf("invalid status code response, want %v, got %v", want, got)
}
}
func TestStatusCodeResponse_AsString(t *testing.T) {
res := StatusCodeResponse{
AboutResponse: AboutResponse{
Version: "1",
},
Code: 0,
Message: "msg",
XRequestID: "xri",
}
str := res.AsString()
if !strings.Contains(str, "Jabba") {
t.Errorf("about response Jabba not included")
}
if !strings.Contains(str, "0") {
t.Errorf("about response Code not included")
}
if !strings.Contains(str, "msg") {
t.Errorf("about response Message not included")
}
if !strings.Contains(str, "xri") {
t.Errorf("about response XRequestID not included")
}
}