1
0
mirror of https://github.com/interviewstreet/go-jira.git synced 2024-12-10 10:10:10 +02:00

Merge pull request #6 from matrix-solutions/development

Close response, only v was given
This commit is contained in:
Andy Grunwald 2016-05-26 22:30:46 +02:00
commit 04e71ea77c
2 changed files with 28 additions and 2 deletions

View File

@ -97,8 +97,6 @@ func (c *Client) Do(req *http.Request, v interface{}) (*http.Response, error) {
return nil, err
}
defer resp.Body.Close()
err = CheckResponse(resp)
if err != nil {
// Even though there was an error, we still return the response
@ -107,6 +105,8 @@ func (c *Client) Do(req *http.Request, v interface{}) (*http.Response, error) {
}
if v != nil {
// Open a NewDecoder and defer closing the reader only if there is a provided interface to decode to
defer resp.Body.Close()
err = json.NewDecoder(resp.Body).Decode(v)
}

View File

@ -215,6 +215,32 @@ func TestDo(t *testing.T) {
}
}
func TestDo_HTTPResponse(t *testing.T) {
setup()
defer teardown()
type foo struct {
A string
}
testMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if m := "GET"; m != r.Method {
t.Errorf("Request method = %v, want %v", r.Method, m)
}
fmt.Fprint(w, `{"A":"a"}`)
})
req, _ := testClient.NewRequest("GET", "/", nil)
res, _ := testClient.Do(req, nil)
_, err := ioutil.ReadAll(res.Body)
if err != nil {
t.Errorf("Error on parsing HTTP Response = %v", err.Error())
} else if res.StatusCode != 200 {
t.Errorf("Response code = %v, want %v", res.StatusCode, 200)
}
}
func TestDo_HTTPError(t *testing.T) {
setup()
defer teardown()