Skip to content

Commit 0583b14

Browse files
committed
Add rate limiting filter IP test
1 parent d95116b commit 0583b14

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.example.filter;
2+
3+
import org.example.http.HttpResponseBuilder;
4+
import org.example.httpparser.HttpRequest;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.extension.ExtendWith;
7+
import org.mockito.Mock;
8+
import org.mockito.junit.jupiter.MockitoExtension;
9+
10+
import java.util.HashMap;
11+
import java.util.Map;
12+
13+
import static org.example.filter.RateLimitingFilter.resolveClientIp;
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
import static org.mockito.Mockito.when;
16+
17+
@ExtendWith(MockitoExtension.class)
18+
class RateLimitingFilterIpTest {
19+
20+
@Mock HttpRequest request;
21+
@Mock HttpResponseBuilder response;
22+
23+
@Test
24+
void shouldUseXForwarded_WhenPresent(){
25+
26+
Map<String, String> headers = new HashMap<>();
27+
headers.put("X-Forwarded-For", "203.0.113.195");
28+
29+
when(request.getHeaders()).thenReturn(headers);
30+
when(request.getAttribute("clientIp")).thenReturn("127.0.0.1");
31+
32+
String finalIp = resolveClientIp(request, response);
33+
34+
assertEquals("203.0.113.195", finalIp);
35+
}
36+
37+
@Test
38+
void shouldFallbackToAttribute_WhenXForwardedForIsNotPresent(){
39+
40+
when(request.getAttribute("clientIp")).thenReturn(Map.of());
41+
when(request.getAttribute("clientIp")).thenReturn("10.0.0.5");
42+
43+
String finalIp = resolveClientIp(request, response);
44+
45+
assertEquals("10.0.0.5", finalIp);
46+
}
47+
}

0 commit comments

Comments
 (0)