package middleware import ( "net" "testing" "github.com/yusing/go-proxy/internal/types" . "github.com/yusing/go-proxy/internal/utils/testing" ) func TestSetRealIP(t *testing.T) { opts := OptionsRaw{ "header": "X-Real-IP", "from": []string{ "127.0.0.0/8", "192.168.0.0/16", "172.16.0.0/12", }, "recursive": true, } optExpected := &realIPOpts{ Header: "X-Real-IP", From: []*types.CIDR{ { IP: net.ParseIP("127.0.0.0"), Mask: net.IPv4Mask(255, 0, 0, 0), }, { IP: net.ParseIP("192.168.0.0"), Mask: net.IPv4Mask(255, 255, 0, 0), }, { IP: net.ParseIP("172.16.0.0"), Mask: net.IPv4Mask(255, 240, 0, 0), }, }, Recursive: true, } t.Run("set_options", func(t *testing.T) { ri, err := RealIP.m.WithOptionsClone(opts) ExpectNoError(t, err.Error()) // ExpectEqual(t, ri.impl.(*realIP).Header, optExpected.Header) // ExpectDeepEqual(t, ri.impl.(*realIP).From, optExpected.From) // ExpectEqual(t, ri.impl.(*realIP).Recursive, optExpected.Recursive) ExpectDeepEqual(t, ri.impl.(*realIP).realIPOpts, optExpected) }) // t.Run("request_headers", func(t *testing.T) { // result, err := newMiddlewareTest(ModifyRequest.m, &testArgs{ // middlewareOpt: opts, // }) // ExpectNoError(t, err.Error()) // ExpectEqual(t, result.RequestHeaders.Get("User-Agent"), "go-proxy/v0.5.0") // ExpectTrue(t, slices.Contains(result.RequestHeaders.Values("Accept-Encoding"), "test-value")) // ExpectEqual(t, result.RequestHeaders.Get("Accept"), "") // }) }