github.com/rudderlabs/rudder-go-kit@v0.30.0/httputil/client_test.go (about) 1 package httputil_test 2 3 import ( 4 "net/http" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/rudderlabs/rudder-go-kit/httputil" 10 ) 11 12 func TestGetRequestIP(t *testing.T) { 13 testCases := []struct { 14 name string 15 headerValue string 16 remoteAddr string 17 expectedResult string 18 }{ 19 { 20 name: "X-Forwarded-For provided", 21 headerValue: "192.168.0.1, 192.168.0.2", 22 remoteAddr: "192.168.0.3:8080", 23 expectedResult: "192.168.0.1", 24 }, 25 { 26 name: "X-Forwarded-For empty, RemoteAddr provided", 27 headerValue: "", 28 remoteAddr: "192.168.0.4:8080", 29 expectedResult: "192.168.0.4", 30 }, 31 { 32 name: "X-Forwarded-For and RemoteAddr both empty", 33 headerValue: "", 34 remoteAddr: "", 35 expectedResult: "", 36 }, 37 } 38 39 for _, testCase := range testCases { 40 t.Run(testCase.name, func(t *testing.T) { 41 req := &http.Request{ 42 Header: http.Header{"X-Forwarded-For": {testCase.headerValue}}, 43 RemoteAddr: testCase.remoteAddr, 44 } 45 require.Equal(t, testCase.expectedResult, httputil.GetRequestIP(req)) 46 }) 47 } 48 }