Unverified Commit 978b7eaa authored by TzlilSwimmer123's avatar TzlilSwimmer123 Committed by GitHub
Browse files

fix: http client return response body and status code if error is bigger then 500 (#527)

Co-authored-by: default avatarTzlil Swimmer <tzlilswimmer@Tzlils-MacBook-Pro.local>
parent 5095edd7
Showing with 10 additions and 8 deletions
+10 -8
......@@ -546,7 +546,7 @@ func test_requestEvaluationPrerunData_network_error(offlineMode string, expected
}{
status: http.StatusInternalServerError,
body: nil,
error: errors.New("connection refused"),
error: errors.New("network error"),
},
},
expected: struct {
......@@ -705,7 +705,7 @@ func test_sendEvaluationResult_network_error(offlineMode string, expectedRespons
}{
status: http.StatusInternalServerError,
body: nil,
error: errors.New("connection refused"),
error: errors.New("network error"),
},
},
expected: struct {
......
......@@ -100,8 +100,6 @@ type EvaluationPrerunDataResponse struct {
IsPolicyAsCodeMode bool `json:"isPolicyAsCodeMode"`
}
const badRequestStatusCode = 400
func (c *CliClient) RequestEvaluationPrerunData(tokenId string) (*EvaluationPrerunDataResponse, error) {
if c.networkValidator.IsLocalMode() {
return &EvaluationPrerunDataResponse{}, nil
......@@ -109,7 +107,7 @@ func (c *CliClient) RequestEvaluationPrerunData(tokenId string) (*EvaluationPrer
res, err := c.httpClient.Request(http.MethodGet, "/cli/evaluation/tokens/"+tokenId+"/prerun", nil, nil)
if err != nil && (res.StatusCode >= badRequestStatusCode || res.Body == nil) {
if err != nil {
networkErr := c.networkValidator.IdentifyNetworkError(err.Error())
if networkErr != nil {
return &EvaluationPrerunDataResponse{}, networkErr
......
......@@ -71,6 +71,11 @@ func (c *Client) Request(method string, resourceURI string, body interface{}, he
return responseBody, err
}
if response.StatusCode > 500 {
responseBody.StatusCode = response.StatusCode
return responseBody, fmt.Errorf("network error")
}
if response.StatusCode > 399 {
var errorJson map[string]interface{}
err = json.Unmarshal(b, &errorJson)
......
......@@ -2,7 +2,6 @@ package networkValidator
import (
"errors"
"strings"
)
type NetworkValidator struct {
......@@ -22,7 +21,7 @@ func (nv *NetworkValidator) SetOfflineMode(offlineMode string) {
}
func (nv *NetworkValidator) IdentifyNetworkError(errStr string) error {
if strings.Contains(errStr, "connection refused") || strings.Contains(errStr, "ECONNREFUSED") {
if errStr == "network error" {
if nv.offlineMode == "fail" {
return errors.New("Failed since internet connection refused, you can use the following command to set your config to run offline:\ndatree config set offline local")
}
......
......@@ -38,7 +38,7 @@ func TestNetworkValidatorOtherError(t *testing.T) {
func test_identifyNetworkError_network_error(validator *NetworkValidator, offlineMode string) error {
validator.SetOfflineMode(offlineMode)
return validator.IdentifyNetworkError("ECONNREFUSED")
return validator.IdentifyNetworkError("network error")
}
func test_identifyNetworkError_other_error(validator *NetworkValidator, offlineMode string) error {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment