pomerium/internal/log/headers_test.go
Caleb Doxsey 638d9f3d6c
proxy: add support for logging http request headers (#4388)
* config: add customization options for logging

* config: validate log fields

* proxy: add support for logging http request headers

* log subset of headers

* fix test name

* dont use log.HTTPHeaders for access logs

* canonicalize http/2 headers
2023-07-25 09:46:42 -06:00

63 lines
1.2 KiB
Go

package log
import (
"bytes"
"strings"
"testing"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
)
func TestHTTPHeaders(t *testing.T) {
t.Parallel()
type A = []string
type M = map[string]string
t.Run("all", func(t *testing.T) {
t.Parallel()
var buf bytes.Buffer
log := zerolog.New(&buf)
evt := log.Info()
evt = HTTPHeaders(evt, A{"headers"}, M{
"a": "1",
"b": "2",
"c": "3",
})
evt.Send()
assert.Equal(t, `{"level":"info","headers":{"A":"1","B":"2","C":"3"}}`, strings.TrimSpace(buf.String()))
})
t.Run("none", func(t *testing.T) {
t.Parallel()
var buf bytes.Buffer
log := zerolog.New(&buf)
evt := log.Info()
evt = HTTPHeaders(evt, A{"a", "b", "c"}, M{
"a": "1",
"b": "2",
"c": "3",
})
evt.Send()
assert.Equal(t, `{"level":"info"}`, strings.TrimSpace(buf.String()))
})
t.Run("two", func(t *testing.T) {
t.Parallel()
var buf bytes.Buffer
log := zerolog.New(&buf)
evt := log.Info()
evt = HTTPHeaders(evt, A{"headers.a", "headers.C"}, M{
"a": "1",
"b": "2",
"c": "3",
})
evt.Send()
assert.Equal(t, `{"level":"info","headers":{"A":"1","C":"3"}}`, strings.TrimSpace(buf.String()))
})
}