10 "github.com/bitly/go-simplejson"
12 "github.com/stretchr/testify/assert"
15func testBackend(responseCode int, payload string) *httptest.Server {
16 return httptest.NewServer(http.HandlerFunc(
17 func(w http.ResponseWriter, r *http.Request) {
18 w.WriteHeader(responseCode)
19 w.Write([]byte(payload))
23func TestRequest(t *testing.T) {
24 backend := testBackend(200, "{\"foo\": \"bar\"}")
27 req, _ := http.NewRequest("GET", backend.URL, nil)
28 response, err := Request(req)
29 assert.Equal(t, nil, err)
30 result, err := response.Get("foo").String()
31 assert.Equal(t, nil, err)
32 assert.Equal(t, "bar", result)
35func TestRequestFailure(t *testing.T) {
36 // Create a backend to generate a test URL, then close it to cause a
38 backend := testBackend(200, "{\"foo\": \"bar\"}")
41 req, err := http.NewRequest("GET", backend.URL, nil)
42 assert.Equal(t, nil, err)
43 resp, err := Request(req)
44 assert.Equal(t, (*simplejson.Json)(nil), resp)
45 assert.NotEqual(t, nil, err)
46 if !strings.Contains(err.Error(), "refused") {
47 t.Error("expected error when a connection fails: ", err)
51func TestHttpErrorCode(t *testing.T) {
52 backend := testBackend(404, "{\"foo\": \"bar\"}")
55 req, err := http.NewRequest("GET", backend.URL, nil)
56 assert.Equal(t, nil, err)
57 resp, err := Request(req)
58 assert.Equal(t, (*simplejson.Json)(nil), resp)
59 assert.NotEqual(t, nil, err)
62func TestJsonParsingError(t *testing.T) {
63 backend := testBackend(200, "not well-formed JSON")
66 req, err := http.NewRequest("GET", backend.URL, nil)
67 assert.Equal(t, nil, err)
68 resp, err := Request(req)
69 assert.Equal(t, (*simplejson.Json)(nil), resp)
70 assert.NotEqual(t, nil, err)
73// Parsing a URL practically never fails, so we won't cover that test case.
74func TestRequestUnparsedResponseUsingAccessTokenParameter(t *testing.T) {
75 backend := httptest.NewServer(http.HandlerFunc(
76 func(w http.ResponseWriter, r *http.Request) {
77 token := r.FormValue("access_token")
78 if r.URL.Path == "/" && token == "my_token" {
80 w.Write([]byte("some payload"))
87 response, err := RequestUnparsedResponse(
88 backend.URL+"?access_token=my_token", nil)
89 assert.Equal(t, nil, err)
90 assert.Equal(t, 200, response.StatusCode)
91 body, err := ioutil.ReadAll(response.Body)
92 assert.Equal(t, nil, err)
94 assert.Equal(t, "some payload", string(body))
97func TestRequestUnparsedResponseUsingAccessTokenParameterFailedResponse(t *testing.T) {
98 backend := testBackend(200, "some payload")
99 // Close the backend now to force a request failure.
102 response, err := RequestUnparsedResponse(
103 backend.URL+"?access_token=my_token", nil)
104 assert.NotEqual(t, nil, err)
105 assert.Equal(t, (*http.Response)(nil), response)
108func TestRequestUnparsedResponseUsingHeaders(t *testing.T) {
109 backend := httptest.NewServer(http.HandlerFunc(
110 func(w http.ResponseWriter, r *http.Request) {
111 if r.URL.Path == "/" && r.Header["Auth"][0] == "my_token" {
113 w.Write([]byte("some payload"))
118 defer backend.Close()
120 headers := make(http.Header)
121 headers.Set("Auth", "my_token")
122 response, err := RequestUnparsedResponse(backend.URL, headers)
123 assert.Equal(t, nil, err)
124 assert.Equal(t, 200, response.StatusCode)
125 body, err := ioutil.ReadAll(response.Body)
126 assert.Equal(t, nil, err)
127 response.Body.Close()
128 assert.Equal(t, "some payload", string(body))
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list