From c19023c799bb7a16d078aa035bc592d0acd8d18a Mon Sep 17 00:00:00 2001 From: dmit Date: Tue, 16 Sep 2025 23:46:42 +0300 Subject: [PATCH 1/3] - test + fix for nil response - replace %w with %v for ErrHttpClient{Message} --- httpclient.go | 21 ++++++++++++--------- httpclient_test.go | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/httpclient.go b/httpclient.go index fa17903..0df8def 100644 --- a/httpclient.go +++ b/httpclient.go @@ -73,7 +73,7 @@ func GetResponse(data any, method, url, auth string, headers []Header) (*http.Re return response, ErrHttpClient{ Status: http.StatusBadRequest, Message: ErrJSON, - Body: *response, + Body: http.Response{}, } } request, err = http.NewRequest(method, url, bytes.NewBuffer(payload)) @@ -82,7 +82,7 @@ func GetResponse(data any, method, url, auth string, headers []Header) (*http.Re return response, ErrHttpClient{ Status: http.StatusBadRequest, Message: ErrRequest, - Body: *response, + Body: http.Response{}, } } request.Header.Set("Content-Type", "application/json") @@ -93,7 +93,7 @@ func GetResponse(data any, method, url, auth string, headers []Header) (*http.Re return response, ErrHttpClient{ Status: http.StatusBadRequest, Message: ErrRequest, - Body: *response, + Body: http.Response{}, } } } @@ -114,18 +114,21 @@ func GetResponse(data any, method, url, auth string, headers []Header) (*http.Re func GetJSON[T any, R any](data any, resp T, errResponse R, method, url, auth string, headers []Header) (T, R, error) { response, err := GetResponse(data, method, url, auth, headers) if err != nil { - return resp, errResponse, ErrHttpClient{ - Status: response.StatusCode, - Message: fmt.Errorf("%w", err).Error(), - Body: *response, + if response != nil { + return resp, errResponse, ErrHttpClient{ + Status: response.StatusCode, + Message: err.Error(), + Body: *response, + } } + return resp, errResponse, err } defer response.Body.Close() if response.StatusCode != http.StatusOK { if err := json.NewDecoder(response.Body).Decode(&errResponse); err != nil { return resp, errResponse, ErrHttpClient{ Status: response.StatusCode, - Message: fmt.Errorf("json decode err with error response %w", err).Error(), + Message: fmt.Errorf("json decode err with error response %v", err).Error(), Body: *response, } } @@ -138,7 +141,7 @@ func GetJSON[T any, R any](data any, resp T, errResponse R, method, url, auth st if err := json.NewDecoder(response.Body).Decode(&resp); err != nil { return resp, errResponse, ErrHttpClient{ Status: response.StatusCode, - Message: fmt.Errorf("json decode err with response %w", err).Error(), + Message: fmt.Errorf("json decode err with response %v", err).Error(), Body: *response, } } diff --git a/httpclient_test.go b/httpclient_test.go index 3242d8d..572e55f 100644 --- a/httpclient_test.go +++ b/httpclient_test.go @@ -110,3 +110,19 @@ func TestGetJSON(t *testing.T) { should.BeNil(t, errs) }) } + +type dummyStruct struct { + Value string `json:"value"` +} + +func TestGetJSON_PanicOnNilResponse(t *testing.T) { + var resp dummyStruct + var errResp dummyStruct + + _, _, err := GetJSON(nil, resp, errResp, "GET", ":", "", nil) + + if err == nil { + t.Fatal("err should not be nil") + } + +} From 154779edd4d19a37f650c4eb4fcf55fd15b2b059 Mon Sep 17 00:00:00 2001 From: sarff <30344665+sarff@users.noreply.github.com> Date: Wed, 17 Sep 2025 19:27:06 +0300 Subject: [PATCH 2/3] Update httpclient_test.go Co-authored-by: Matthew R Kasun --- httpclient_test.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/httpclient_test.go b/httpclient_test.go index 572e55f..d5cee47 100644 --- a/httpclient_test.go +++ b/httpclient_test.go @@ -121,8 +121,6 @@ func TestGetJSON_PanicOnNilResponse(t *testing.T) { _, _, err := GetJSON(nil, resp, errResp, "GET", ":", "", nil) - if err == nil { - t.Fatal("err should not be nil") - } + should.NotBeNil(t, err) } From 9fa1c5cb5fb01c2f9ba24aae057aa5465c8c4fcd Mon Sep 17 00:00:00 2001 From: sarff <30344665+sarff@users.noreply.github.com> Date: Wed, 17 Sep 2025 19:37:28 +0300 Subject: [PATCH 3/3] Update httpclient_test.go Co-authored-by: Matthew R Kasun --- httpclient_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/httpclient_test.go b/httpclient_test.go index d5cee47..fd8d666 100644 --- a/httpclient_test.go +++ b/httpclient_test.go @@ -121,6 +121,6 @@ func TestGetJSON_PanicOnNilResponse(t *testing.T) { _, _, err := GetJSON(nil, resp, errResp, "GET", ":", "", nil) - should.NotBeNil(t, err) + should.BeError(t, err) }