internal/http/request.go: replace GetReason() with GetReasonFromBody()

Update tests to inject the required JSON error body with reason.
This commit is contained in:
pancho horrillo
2019-11-19 21:14:20 +01:00
parent e7619238ae
commit 81c677c3be
4 changed files with 15 additions and 7 deletions
+3 -2
View File
@@ -43,12 +43,13 @@ func TestRemoveRouteErrorNonExistent(t *testing.T) {
defer gock.Off() defer gock.Off()
gock.New("http://localhost:8080"). gock.New("http://localhost:8080").
Delete("/routes/ROUTE_BAD"). Delete("/routes/ROUTE_BAD").
Reply(http.StatusNotFound) Reply(http.StatusNotFound).
BodyString(`{"reason": "Route Not Found"}`)
err := RemoveRoute("http://localhost:8080", "ROUTE_BAD") err := RemoveRoute("http://localhost:8080", "ROUTE_BAD")
if err == nil { if err == nil {
t.Errorf("Error not reported for nonexistent route") t.Errorf("Error not reported for nonexistent route")
} else if err.Error() != "Not Found" { } else if err.Error() != "Route Not Found" {
t.Errorf(`Error mismatch: got %q, want "Not Found"`, err) t.Errorf(`Error mismatch: got %q, want "Not Found"`, err)
} }
+4 -3
View File
@@ -52,7 +52,8 @@ func TestSetDataErrIfBadHandlerID(t *testing.T) {
defer gock.Off() defer gock.Off()
gock.New("http://localhost:8080"). gock.New("http://localhost:8080").
Put("/HANDLER_BAD/response/status/code"). Put("/HANDLER_BAD/response/status/code").
Reply(http.StatusNotFound) Reply(http.StatusNotFound).
BodyString(`{"reason": "Handler ID Not Found"}`)
if err := client.SetData( if err := client.SetData(
"http://localhost:8080", "http://localhost:8080",
@@ -61,8 +62,8 @@ func TestSetDataErrIfBadHandlerID(t *testing.T) {
strings.NewReader("200"), strings.NewReader("200"),
); err == nil { ); err == nil {
t.Error("Expected error not present") t.Error("Expected error not present")
} else if err.Error() != "Not Found" { } else if err.Error() != "Handler ID Not Found" {
t.Errorf(`Error mismatch: expected "Not Found", got %q`, err) t.Errorf(`Error mismatch: expected "Handler ID Not Found", got %q`, err)
} }
if !gock.IsDone() { if !gock.IsDone() {
+5 -1
View File
@@ -66,7 +66,11 @@ func Request(method string, url string, contentType string, r io.Reader, w io.Wr
defer res.Body.Close() defer res.Body.Close()
if res.StatusCode < 200 || res.StatusCode >= 300 { if res.StatusCode < 200 || res.StatusCode >= 300 {
return errors.New(GetReason(res)) reason, err := GetReasonFromBody(res)
if err != nil {
return err
}
return errors.New(reason)
} }
if w == nil { if w == nil {
+3 -1
View File
@@ -72,7 +72,9 @@ func TestReturnHTTPErrorAsIs(t *testing.T) {
func TestReturnHTTPReasonAsErrorWhenUnsuccessful(t *testing.T) { func TestReturnHTTPReasonAsErrorWhenUnsuccessful(t *testing.T) {
defer gock.Off() defer gock.Off()
gock.New("http://localhost").Reply(http.StatusTeapot) gock.New("http://localhost").
Reply(http.StatusTeapot).
BodyString(`{"reason": "I'm a teapot"}`)
err := Request("GET", "http://localhost", "", nil, nil) err := Request("GET", "http://localhost", "", nil, nil)
if err == nil || err.Error() != http.StatusText(http.StatusTeapot) { if err == nil || err.Error() != http.StatusText(http.StatusTeapot) {