1   package com.atlassian.security.auth.trustedapps;
2   
3   import junit.framework.TestCase;
4   
5   import java.util.Iterator;
6   
7   /**
8    *
9    * @since v2.2
10   */
11  public class TestRequestConditions extends TestCase
12  {
13      public void testBuilder()
14      {
15          final RequestConditions rules = RequestConditions
16                  .builder()
17                  .setCertificateTimeout(10L)
18                  .addIPPattern("192.168.0.*")
19                  .build();
20  
21          assertEquals(10L, rules.getCertificateTimeout());
22  
23          final Iterator patterns = rules.getIPPatterns().iterator();
24          assertEquals("192.168.0.*", patterns.next());
25          assertFalse(patterns.hasNext());
26  
27          assertFalse(rules.getURLPatterns().iterator().hasNext());
28  
29          final IPMatcher ipMatcher = rules.getIPMatcher();
30          assertTrue(ipMatcher.match("192.168.0.1"));
31          assertTrue(ipMatcher.match("192.168.0.255"));
32          assertFalse(ipMatcher.match("10.10.10.1"));
33  
34          final URLMatcher urlMatcher = rules.getURLMatcher();
35          assertTrue(urlMatcher.match("/"));
36          assertTrue(urlMatcher.match("/foo/bar"));
37      }
38  
39      public void testBuilderWithIPv4CIDR()
40      {
41          final RequestConditions rules = RequestConditions
42          .builder()
43          .addIPPattern("192.168.2.0/24")
44          .build();
45  
46          final IPMatcher ipMatcher = rules.getIPMatcher();
47          assertTrue(ipMatcher.match("192.168.2.100"));
48      }
49  
50      public void testBuilderWithIPv6CIDR()
51      {
52          final RequestConditions rules = RequestConditions
53          .builder()
54          .addIPPattern("0:0:0:3::/64")
55          .build();
56  
57          final IPMatcher ipMatcher = rules.getIPMatcher();
58          assertTrue(ipMatcher.match("0:0:0:3::1"));
59      }
60  
61      public void testInputValidation()
62      {
63          assertInvalid("");
64          assertInvalid("192");
65          assertInvalid("192.168.0");
66          assertInvalid("256.0.0.0");
67          assertInvalid("1.2.3.4.5");
68          assertInvalid("foo");
69          assertInvalid("*");
70  
71          try
72          {
73              RequestConditions
74                  .builder()
75                      .setCertificateTimeout(-1L);
76              fail();
77          }
78          catch (IllegalArgumentException e) {}
79      }
80  
81      private void assertInvalid(String ipPattern)
82      {
83          try
84          {
85              RequestConditions
86                  .builder()
87                  .addIPPattern(ipPattern);
88              fail();
89          }
90          catch (IPAddressFormatException e) {}
91      }
92  }