GoDoxy/internal/logging/accesslog/config_test.go
Yuzerion 4a8bd48ad5
Some checks are pending
Docker Image CI (socket-proxy) / build (push) Waiting to run
fix: optimize memory usage, fix agent and code refactor (#118)
* refactor: simplify io code and make utils module independent

* fix(docker): agent and socket-proxy docker event flushing with modified reverse proxy handler

* refactor: remove unused code

* refactor: remove the use of logging module in most code

* refactor: streamline domain mismatch check in certState function

* tweak: use ecdsa p-256 for autocert

* fix(tests): update health check tests for invalid host and add case for port in host

* feat(acme): custom acme directory

* refactor: code refactor and improved context and error handling

* tweak: optimize memory usage under load

* fix(oidc): restore old user matching behavior

* docs: add ChatGPT assistant to README

---------

Co-authored-by: yusing <yusing@6uo.me>
2025-05-25 09:45:57 +08:00

51 lines
2.2 KiB
Go

package accesslog_test
import (
"testing"
"github.com/yusing/go-proxy/internal/docker"
. "github.com/yusing/go-proxy/internal/logging/accesslog"
"github.com/yusing/go-proxy/internal/serialization"
expect "github.com/yusing/go-proxy/internal/utils/testing"
)
func TestNewConfig(t *testing.T) {
labels := map[string]string{
"proxy.format": "combined",
"proxy.path": "/tmp/access.log",
"proxy.filters.status_codes.values": "200-299",
"proxy.filters.method.values": "GET, POST",
"proxy.filters.headers.values": "foo=bar, baz",
"proxy.filters.headers.negative": "true",
"proxy.filters.cidr.values": "192.168.10.0/24",
"proxy.fields.headers.default": "keep",
"proxy.fields.headers.config.foo": "redact",
"proxy.fields.query.default": "drop",
"proxy.fields.query.config.foo": "keep",
"proxy.fields.cookies.default": "redact",
"proxy.fields.cookies.config.foo": "keep",
}
parsed, err := docker.ParseLabels(labels)
expect.NoError(t, err)
var config RequestLoggerConfig
err = serialization.MapUnmarshalValidate(parsed, &config)
expect.NoError(t, err)
expect.Equal(t, config.Format, FormatCombined)
expect.Equal(t, config.Path, "/tmp/access.log")
expect.Equal(t, config.Filters.StatusCodes.Values, []*StatusCodeRange{{Start: 200, End: 299}})
expect.Equal(t, len(config.Filters.Method.Values), 2)
expect.Equal(t, config.Filters.Method.Values, []HTTPMethod{"GET", "POST"})
expect.Equal(t, len(config.Filters.Headers.Values), 2)
expect.Equal(t, config.Filters.Headers.Values, []*HTTPHeader{{Key: "foo", Value: "bar"}, {Key: "baz", Value: ""}})
expect.True(t, config.Filters.Headers.Negative)
expect.Equal(t, len(config.Filters.CIDR.Values), 1)
expect.Equal(t, config.Filters.CIDR.Values[0].String(), "192.168.10.0/24")
expect.Equal(t, config.Fields.Headers.Default, FieldModeKeep)
expect.Equal(t, config.Fields.Headers.Config["foo"], FieldModeRedact)
expect.Equal(t, config.Fields.Query.Default, FieldModeDrop)
expect.Equal(t, config.Fields.Query.Config["foo"], FieldModeKeep)
expect.Equal(t, config.Fields.Cookies.Default, FieldModeRedact)
expect.Equal(t, config.Fields.Cookies.Config["foo"], FieldModeKeep)
}