mirror of
https://github.com/interviewstreet/go-jira.git
synced 2025-01-05 22:53:53 +02:00
Bug fix - reading http body produces error because the body is already read
This commit is contained in:
parent
559b76c3ef
commit
8e67015ef3
4
jira.go
4
jira.go
@ -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)
|
||||
}
|
||||
|
||||
|
27
jira_test.go
27
jira_test.go
@ -215,6 +215,33 @@ 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)
|
||||
body := new(foo)
|
||||
res, _ := testClient.Do(req, body)
|
||||
_, 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()
|
||||
|
Loading…
Reference in New Issue
Block a user