@@ -32,11 +32,21 @@ func TestFromRequest(t *testing.T) {
32
32
req : createRequest ("45.0.0.40" , "x-client-ip" , "45.9.248.40" ),
33
33
expectedIP : net .ParseIP ("45.9.248.40" ),
34
34
},
35
+ {
36
+ name : "returns the value of x-client-ip" ,
37
+ req : createRequest ("45.0.0.40" , "x-client-ip" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
38
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
39
+ },
35
40
{
36
41
name : "returns the first value of x-forwarded-for" ,
37
42
req : createRequest ("45.0.0.40" , "x-forwarded-for" , "129.78.138.66, 129.78.64.103, 129.78.64.105" ),
38
43
expectedIP : net .ParseIP ("129.78.138.66" ),
39
44
},
45
+ {
46
+ name : "returns the first value of x-forwarded-for with ipv6" ,
47
+ req : createRequest ("45.0.0.40" , "x-forwarded-for" , "2001:0db8:0123:4567:89ab:cdef:1234:5678, 129.78.64.103, 129.78.64.105" ),
48
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
49
+ },
40
50
{
41
51
name : "returns the first valid IP value of x-forwarded-for" ,
42
52
req : createRequest ("45.0.0.40" , "x-forwarded-for" , "unknown, 129.78.64.103, 129.78.64.105" ),
@@ -47,41 +57,81 @@ func TestFromRequest(t *testing.T) {
47
57
req : createRequest ("45.0.0.40" , "x-forwarded-for" , "129.78.138.66:12345, 129.78.64.103, 129.78.64.105" ),
48
58
expectedIP : net .ParseIP ("129.78.138.66" ),
49
59
},
60
+ {
61
+ name : "returns the correct IP value of x-forwarded-for with port" ,
62
+ req : createRequest ("45.0.0.40" , "x-forwarded-for" , "[2001:0db8:0123:4567:89ab:cdef:1234:5678]:12345, 129.78.64.103, 129.78.64.105" ),
63
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
64
+ },
50
65
{
51
66
name : "returns the value of cf-connecting-ip" ,
52
67
req : createRequest ("45.0.0.40" , "cf-connecting-ip" , "45.9.248.40" ),
53
68
expectedIP : net .ParseIP ("45.9.248.40" ),
54
69
},
70
+ {
71
+ name : "returns the ipv6 value of cf-connecting-ip" ,
72
+ req : createRequest ("45.0.0.40" , "cf-connecting-ip" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
73
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
74
+ },
55
75
{
56
76
name : "returns the value of fastly-client-ip" ,
57
77
req : createRequest ("45.0.0.40" , "fastly-client-ip" , "45.9.248.40" ),
58
78
expectedIP : net .ParseIP ("45.9.248.40" ),
59
79
},
80
+ {
81
+ name : "returns the ipv6 value of fastly-client-ip" ,
82
+ req : createRequest ("45.0.0.40" , "fastly-client-ip" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
83
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
84
+ },
60
85
{
61
86
name : "returns the value of true-client-ip" ,
62
87
req : createRequest ("45.0.0.40" , "true-client-ip" , "45.9.248.40" ),
63
88
expectedIP : net .ParseIP ("45.9.248.40" ),
64
89
},
90
+ {
91
+ name : "returns the ipv6 value of true-client-ip" ,
92
+ req : createRequest ("45.0.0.40" , "true-client-ip" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
93
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
94
+ },
65
95
{
66
96
name : "returns the value of x-real-ip" ,
67
97
req : createRequest ("45.0.0.40" , "x-real-ip" , "45.9.248.40" ),
68
98
expectedIP : net .ParseIP ("45.9.248.40" ),
69
99
},
100
+ {
101
+ name : "returns the ipv6 value of x-real-ip" ,
102
+ req : createRequest ("45.0.0.40" , "x-real-ip" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
103
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
104
+ },
70
105
{
71
106
name : "returns the value of x-cluster-client-ip" ,
72
107
req : createRequest ("45.0.0.40" , "x-cluster-client-ip" , "45.9.248.40" ),
73
108
expectedIP : net .ParseIP ("45.9.248.40" ),
74
109
},
110
+ {
111
+ name : "returns the ipv6 value of x-cluster-client-ip" ,
112
+ req : createRequest ("45.0.0.40" , "x-cluster-client-ip" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
113
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
114
+ },
75
115
{
76
116
name : "returns the value of x-forwarded" ,
77
117
req : createRequest ("45.0.0.40" , "x-forwarded" , "45.9.248.40" ),
78
118
expectedIP : net .ParseIP ("45.9.248.40" ),
79
119
},
120
+ {
121
+ name : "returns the ipv6 value of x-forwarded" ,
122
+ req : createRequest ("45.0.0.40" , "x-forwarded" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
123
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
124
+ },
80
125
{
81
126
name : "returns the value of forwarded-for" ,
82
127
req : createRequest ("45.0.0.40" , "forwarded-for" , "45.9.248.40" ),
83
128
expectedIP : net .ParseIP ("45.9.248.40" ),
84
129
},
130
+ {
131
+ name : "returns the ipv6 value of forwarded-for" ,
132
+ req : createRequest ("45.0.0.40" , "forwarded-for" , "2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
133
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
134
+ },
85
135
{
86
136
name : "returns the correct value of request.RemoteAddr when it contains the port" ,
87
137
req : createRequest ("45.0.0.40:8080" ),
@@ -92,6 +142,16 @@ func TestFromRequest(t *testing.T) {
92
142
req : createRequest ("45.0.0.40" ),
93
143
expectedIP : net .ParseIP ("45.0.0.40" ),
94
144
},
145
+ {
146
+ name : "returns the correct ipv6 value of request.RemoteAddr when it contains the port" ,
147
+ req : createRequest ("[2001:0db8:0123:4567:89ab:cdef:1234:5678]:8080" ),
148
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
149
+ },
150
+ {
151
+ name : "returns the correct ipv6 value of request.RemoteAddr when it doesn't contain the port" ,
152
+ req : createRequest ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
153
+ expectedIP : net .ParseIP ("2001:0db8:0123:4567:89ab:cdef:1234:5678" ),
154
+ },
95
155
{
96
156
name : "returns nil when no valid IP was found" ,
97
157
req : createRequest ("" ),
@@ -105,7 +165,7 @@ func TestFromRequest(t *testing.T) {
105
165
t .Parallel ()
106
166
ip := FromRequest (tt .req )
107
167
if ! reflect .DeepEqual (tt .expectedIP , ip ) {
108
- t .Errorf ("expected %s to equal %s" , tt .expectedIP , ip )
168
+ t .Errorf ("expected %s to equal %s" , ip , tt .expectedIP )
109
169
}
110
170
})
111
171
}
0 commit comments