| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- //go:build unit
- package handler
- import (
- "errors"
- "fmt"
- "io"
- "net/http"
- "strings"
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestLogRequestBodyReadFailureClassifiesWithoutPayload(t *testing.T) {
- log, logs := newObservedLogger(t)
- req, err := http.NewRequest(http.MethodPost, "/v1/responses", strings.NewReader("secret-payload-marker"))
- require.NoError(t, err)
- req.Header.Set("Content-Encoding", "gzip")
- req.ContentLength = 21
- logRequestBodyReadFailure(log, req, errors.New(`decode Content-Encoding "gzip": unexpected EOF secret-payload-marker`))
- entries := logs.All()
- require.Len(t, entries, 1)
- require.Equal(t, "read request body failed", entries[0].Message)
- fields := entries[0].ContextMap()
- require.Equal(t, "decode_content_encoding", fields["error_kind"])
- require.Equal(t, "gzip", fields["content_encoding"])
- require.EqualValues(t, 21, fields["content_length"])
- require.NotContains(t, entries[0].Message+fmt.Sprint(fields), "secret-payload-marker")
- }
- func TestRequestBodyReadErrorKind(t *testing.T) {
- require.Equal(t, "unsupported_content_encoding", requestBodyReadErrorKind(errors.New(`decode Content-Encoding "br": unsupported Content-Encoding`)))
- require.Equal(t, "truncated_body", requestBodyReadErrorKind(io.ErrUnexpectedEOF))
- require.Equal(t, "max_bytes", requestBodyReadErrorKind(&http.MaxBytesError{Limit: 10}))
- require.Equal(t, "other", requestContentEncodingCategory("private-payload-marker"))
- }
|