/
net_test.go
58 lines (45 loc) · 1.48 KB
/
net_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
package goib
import (
"fmt"
"net/http"
"net/http/httptest"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func Test_doGet_canary(t *testing.T) {
testSvr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
fmt.Fprintln(w, "I leik milk!!1")
}))
defer testSvr.Close()
a := NewAPI().(*api)
resp, err := a.doGet(testSvr.URL)
assert.Nil(t, err)
assert.Equal(t, []byte("I leik milk!!1\n"), resp)
}
func Test_doGet_errorResponse(t *testing.T) {
testSvr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
http.Error(w, "I'm a teapot!", http.StatusTeapot)
}))
defer testSvr.Close()
a := NewAPI().(*api)
_, err := a.doGet(testSvr.URL)
assert.NotNil(t, err)
assert.Equal(t, "IB returned an error: 418 I'm a teapot: "+testSvr.URL, err.Error())
}
func Test_doGet_timeout(t *testing.T) {
oldTimeout := netClient.Timeout
netClient.Timeout = time.Millisecond
testSvr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
time.Sleep(time.Millisecond * 2)
fmt.Fprintln(w, "I leik milk!!1")
}))
defer testSvr.Close()
a := NewAPI().(*api)
_, err := a.doGet(testSvr.URL)
assert.NotNil(t, err)
assert.Equal(t, fmt.Sprintf("Get %s: net/http: request canceled (Client.Timeout exceeded while awaiting headers)", testSvr.URL), err.Error())
netClient.Timeout = oldTimeout
}