package httpclient import ( "errors" "io" "net/http" "strings" "testing" ) func TestReadResponseBodyDoesNotAcceptValidPrefixTruncation(t *testing.T) { for _, length := range []int64{-1, 9} { resp := &http.Response{ContentLength: length, Body: io.NopCloser(strings.NewReader("{} "))} if _, err := ReadResponseBody(resp, 8); !errors.Is(err, ErrResponseTooLarge) { t.Fatalf("length=%d got %v", length, err) } } resp := &http.Response{ContentLength: -1, Body: io.NopCloser(strings.NewReader("{} "))} if b, err := ReadResponseBody(resp, 8); err != nil || len(b) != 8 { t.Fatalf("exact limit failed: %q %v", b, err) } }