Skip to content

Commit 55716a9

Browse files
authored
Merge pull request #40 from securenative/dev
Add ip extraction tests
2 parents d78a527 + b8e2d25 commit 55716a9

File tree

1 file changed

+291
-0
lines changed

1 file changed

+291
-0
lines changed

src/test/java/com/securenative/utils/RequestUtilsTest.java

Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,295 @@ public void ExtractRequestWithProxyHeadersMultipleIPV4()
6464

6565
assertThat(clientIp.equals("141.246.115.116"));
6666
}
67+
68+
@Test
69+
@DisplayName("extract ip using x-forwarded-for header ipv6")
70+
public void ExtractIpUsingXForwardedForHeader()
71+
{
72+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
73+
74+
MockHttpServletRequest request = new MockHttpServletRequest();
75+
request.setServerName("www.securenative.com");
76+
request.addHeader("x-forwarded-for", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
77+
78+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
79+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
80+
81+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
82+
}
83+
84+
@Test
85+
@DisplayName("extract ip using x-forwarded-for header multiple ipv4")
86+
public void ExtractMultipleIpUsingXForwardedForHeader()
87+
{
88+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
89+
90+
MockHttpServletRequest request = new MockHttpServletRequest();
91+
request.setServerName("www.securenative.com");
92+
request.addHeader("x-forwarded-for", "141.246.115.116, 203.0.113.1, 12.34.56.3");
93+
94+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
95+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
96+
97+
assertThat(clientIp.equals("141.246.115.116"));
98+
}
99+
100+
@Test
101+
@DisplayName("extract ip using x-client-ip header ipv6")
102+
public void ExtractIpUsingXClientIpHeader()
103+
{
104+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
105+
106+
MockHttpServletRequest request = new MockHttpServletRequest();
107+
request.setServerName("www.securenative.com");
108+
request.addHeader("x-client-ip", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
109+
110+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
111+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
112+
113+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
114+
}
115+
116+
@Test
117+
@DisplayName("extract ip using x-client-ip header multiple ipv4")
118+
public void ExtractMultipleIpUsingXClientIpHeader()
119+
{
120+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
121+
122+
MockHttpServletRequest request = new MockHttpServletRequest();
123+
request.setServerName("www.securenative.com");
124+
request.addHeader("x-client-ip", "141.246.115.116, 203.0.113.1, 12.34.56.3");
125+
126+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
127+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
128+
129+
assertThat(clientIp.equals("141.246.115.116"));
130+
}
131+
132+
@Test
133+
@DisplayName("extract ip using x-real-ip header ipv6")
134+
public void ExtractIpUsingXRealIpHeader()
135+
{
136+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
137+
138+
MockHttpServletRequest request = new MockHttpServletRequest();
139+
request.setServerName("www.securenative.com");
140+
request.addHeader("x-real-ip", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
141+
142+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
143+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
144+
145+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
146+
}
147+
148+
@Test
149+
@DisplayName("extract ip using x-real-ip header multiple ipv4")
150+
public void ExtractMultipleIpUsingXRealIpHeader()
151+
{
152+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
153+
154+
MockHttpServletRequest request = new MockHttpServletRequest();
155+
request.setServerName("www.securenative.com");
156+
request.addHeader("x-real-ip", "141.246.115.116, 203.0.113.1, 12.34.56.3");
157+
158+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
159+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
160+
161+
assertThat(clientIp.equals("141.246.115.116"));
162+
}
163+
164+
@Test
165+
@DisplayName("extract ip using x-forwarded header ipv6")
166+
public void ExtractIpUsingXForwardedHeader()
167+
{
168+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
169+
170+
MockHttpServletRequest request = new MockHttpServletRequest();
171+
request.setServerName("www.securenative.com");
172+
request.addHeader("x-forwarded", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
173+
174+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
175+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
176+
177+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
178+
}
179+
180+
@Test
181+
@DisplayName("extract ip using x-forwarded header multiple ipv4")
182+
public void ExtractMultipleIpUsingXForwardedHeader()
183+
{
184+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
185+
186+
MockHttpServletRequest request = new MockHttpServletRequest();
187+
request.setServerName("www.securenative.com");
188+
request.addHeader("x-forwarded", "141.246.115.116, 203.0.113.1, 12.34.56.3");
189+
190+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
191+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
192+
193+
assertThat(clientIp.equals("141.246.115.116"));
194+
}
195+
196+
@Test
197+
@DisplayName("extract ip using x-cluster-client-ip header ipv6")
198+
public void ExtractIpUsingXClusterClientIpHeader()
199+
{
200+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
201+
202+
MockHttpServletRequest request = new MockHttpServletRequest();
203+
request.setServerName("www.securenative.com");
204+
request.addHeader("x-cluster-client-ip", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
205+
206+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
207+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
208+
209+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
210+
}
211+
212+
@Test
213+
@DisplayName("extract ip using x-cluster-client-ip header multiple ipv4")
214+
public void ExtractMultipleIpUsingXClusterClientIpHeader()
215+
{
216+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
217+
218+
MockHttpServletRequest request = new MockHttpServletRequest();
219+
request.setServerName("www.securenative.com");
220+
request.addHeader("x-cluster-client-ip", "141.246.115.116, 203.0.113.1, 12.34.56.3");
221+
222+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
223+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
224+
225+
assertThat(clientIp.equals("141.246.115.116"));
226+
}
227+
228+
@Test
229+
@DisplayName("extract ip using forwarded-for header ipv6")
230+
public void ExtractIpUsingForwardedForHeader()
231+
{
232+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
233+
234+
MockHttpServletRequest request = new MockHttpServletRequest();
235+
request.setServerName("www.securenative.com");
236+
request.addHeader("forwarded-for", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
237+
238+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
239+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
240+
241+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
242+
}
243+
244+
@Test
245+
@DisplayName("extract ip using forwarded-for header multiple ipv4")
246+
public void ExtractMultipleIpUsingForwardedForHeader()
247+
{
248+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
249+
250+
MockHttpServletRequest request = new MockHttpServletRequest();
251+
request.setServerName("www.securenative.com");
252+
request.addHeader("forwarded-for", "141.246.115.116, 203.0.113.1, 12.34.56.3");
253+
254+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
255+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
256+
257+
assertThat(clientIp.equals("141.246.115.116"));
258+
}
259+
260+
@Test
261+
@DisplayName("extract ip using forwarded header ipv6")
262+
public void ExtractIpUsingForwardedHeader()
263+
{
264+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
265+
266+
MockHttpServletRequest request = new MockHttpServletRequest();
267+
request.setServerName("www.securenative.com");
268+
request.addHeader("forwarded", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
269+
270+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
271+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
272+
273+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
274+
}
275+
276+
@Test
277+
@DisplayName("extract ip using forwarded header multiple ipv4")
278+
public void ExtractMultipleIpUsingForwardedHeader()
279+
{
280+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
281+
282+
MockHttpServletRequest request = new MockHttpServletRequest();
283+
request.setServerName("www.securenative.com");
284+
request.addHeader("forwarded", "141.246.115.116, 203.0.113.1, 12.34.56.3");
285+
286+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
287+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
288+
289+
assertThat(clientIp.equals("141.246.115.116"));
290+
}
291+
292+
@Test
293+
@DisplayName("extract ip using via header ipv6")
294+
public void ExtractIpUsingViaHeader()
295+
{
296+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
297+
298+
MockHttpServletRequest request = new MockHttpServletRequest();
299+
request.setServerName("www.securenative.com");
300+
request.addHeader("via", "f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d");
301+
302+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
303+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
304+
305+
assertThat(clientIp.equals("f71f:5bf9:25ff:1883:a8c4:eeff:7b80:aa2d"));
306+
}
307+
308+
@Test
309+
@DisplayName("extract ip using via header multiple ipv4")
310+
public void ExtractMultipleIpUsingViaHeader()
311+
{
312+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
313+
314+
MockHttpServletRequest request = new MockHttpServletRequest();
315+
request.setServerName("www.securenative.com");
316+
request.addHeader("via", "141.246.115.116, 203.0.113.1, 12.34.56.3");
317+
318+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
319+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
320+
321+
assertThat(clientIp.equals("141.246.115.116"));
322+
}
323+
324+
@Test
325+
@DisplayName("extract ip using priority with x forwarded for")
326+
public void ExtractIpUsingPriorityWithXForwardedFor()
327+
{
328+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
329+
330+
MockHttpServletRequest request = new MockHttpServletRequest();
331+
request.setServerName("www.securenative.com");
332+
request.addHeader("x-forwarded-for", "203.0.113.1");
333+
request.addHeader("x-real-ip", "198.51.100.101");
334+
request.addHeader("x-client-ip", "198.51.100.102");
335+
336+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
337+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
338+
339+
assertThat(clientIp.equals("203.0.113.1"));
340+
}
341+
342+
@Test
343+
@DisplayName("extract ip using priority without x forwarded for")
344+
public void ExtractIpUsingPriorityWithoutXForwardedFor()
345+
{
346+
SecureNativeOptions options = SecureNativeConfigurationBuilder.defaultConfigBuilder().build();
347+
348+
MockHttpServletRequest request = new MockHttpServletRequest();
349+
request.setServerName("www.securenative.com");
350+
request.addHeader("x-real-ip", "198.51.100.101");
351+
request.addHeader("x-client-ip", "203.0.113.1, 141.246.115.116, 12.34.56.3");
352+
353+
Map<String, String> headers = RequestUtils.getHeadersFromRequest(request);
354+
String clientIp = RequestUtils.getClientIpFromRequest(request, headers, options);
355+
356+
assertThat(clientIp.equals("203.0.113.1"));
357+
}
67358
}

0 commit comments

Comments
 (0)