View Javadoc
1   /*
2    * Licensed under the GPL License. You may not use this file except in compliance with the License.
3    * You may obtain a copy of the License at
4    *
5    *   https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
6    *
7    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
8    * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
9    * PURPOSE.
10   */
11  package psiprobe.model;
12  
13  import static org.junit.jupiter.api.Assertions.assertEquals;
14  import static org.junit.jupiter.api.Assertions.assertFalse;
15  import static org.junit.jupiter.api.Assertions.assertTrue;
16  
17  import com.codebox.bean.JavaBeanTester;
18  
19  import org.junit.jupiter.api.Test;
20  import org.springframework.mock.web.MockHttpServletRequest;
21  
22  /**
23   * The Class IpInfoTest.
24   */
25  class IpInfoTest {
26  
27    /**
28     * Javabean tester.
29     */
30    @Test
31    void javabeanTester() {
32      JavaBeanTester.builder(IpInfo.class).loadData().test();
33    }
34  
35    @Test
36    void testBuilderWithDirectConnection() {
37      MockHttpServletRequest request = new MockHttpServletRequest();
38      request.setRemoteAddr("192.168.1.1");
39      // No X-Forwarded-For header
40  
41      IpInfo info = new IpInfo().builder(request);
42      assertEquals("192.168.1.1", info.getAddress());
43      assertFalse(info.isForwarded());
44    }
45  
46    @Test
47    void testBuilderWithForwardedHeader() {
48      MockHttpServletRequest request = new MockHttpServletRequest();
49      request.setRemoteAddr("10.0.0.1");
50      request.addHeader("X-Forwarded-For", "203.0.113.5, 10.0.0.1");
51  
52      IpInfo info = new IpInfo().builder(request);
53      assertEquals("203.0.113.5", info.getAddress());
54      assertTrue(info.isForwarded());
55    }
56  
57    @Test
58    void testGetClientAddressWithoutHeader() {
59      MockHttpServletRequest request = new MockHttpServletRequest();
60      request.setRemoteAddr("172.16.0.1");
61  
62      String addr = IpInfo.getClientAddress(request);
63      assertEquals("172.16.0.1", addr);
64    }
65  
66    @Test
67    void testGetClientAddressWithForwardedHeader() {
68      MockHttpServletRequest request = new MockHttpServletRequest();
69      request.setRemoteAddr("10.0.0.1");
70      request.addHeader("X-Forwarded-For", "1.2.3.4");
71  
72      String addr = IpInfo.getClientAddress(request);
73      assertEquals("1.2.3.4", addr);
74    }
75  
76    @Test
77    void testToString() {
78      IpInfo info = new IpInfo();
79      info.setAddress("10.10.10.10");
80      assertEquals("10.10.10.10", info.toString());
81    }
82  }