github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/http/error_transport_test.go (about) 1 package http_test 2 3 import ( 4 "bytes" 5 "fmt" 6 "io" 7 "net/http" 8 "testing" 9 10 httputil "github.com/kyma-incubator/compass/components/director/pkg/http" 11 "github.com/kyma-incubator/compass/components/director/pkg/http/httpfakes" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestErrorHandlerTransport_RoundTripReturnsAnErrorOnBadRequest(t *testing.T) { 16 const failedResponseBody = "failBody" 17 18 transport := &httpfakes.FakeHTTPRoundTripper{} 19 transport.RoundTripReturns(&http.Response{ 20 StatusCode: http.StatusBadRequest, 21 Body: io.NopCloser(bytes.NewBufferString(failedResponseBody)), 22 }, nil) 23 24 errTransport := httputil.NewErrorHandlerTransport(transport) 25 resp, err := errTransport.RoundTrip(&http.Request{}) 26 27 require.Nil(t, resp) 28 require.Error(t, err) 29 require.Contains(t, err.Error(), fmt.Sprintf("statusCode: %d Body: %s", http.StatusBadRequest, failedResponseBody)) 30 } 31 32 func TestErrorHandlerTransport_RoundTripReturnsAValidResponseOnSuccessRequest(t *testing.T) { 33 transport := &httpfakes.FakeHTTPRoundTripper{} 34 transport.RoundTripReturns(&http.Response{ 35 StatusCode: http.StatusOK, 36 Body: io.NopCloser(&bytes.Buffer{}), 37 }, nil) 38 39 errTransport := httputil.NewErrorHandlerTransport(transport) 40 resp, err := errTransport.RoundTrip(&http.Request{}) 41 42 require.NotNil(t, resp) 43 require.NoError(t, err) 44 45 bodyBytes, err := io.ReadAll(resp.Body) 46 require.NoError(t, err) 47 48 bodyString := string(bodyBytes) 49 require.Equal(t, http.StatusOK, resp.StatusCode) 50 require.Empty(t, bodyString) 51 }