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 testInputValidation()
40      {
41          assertInvalid("");
42          assertInvalid("192");
43          assertInvalid("192.168.0");
44          assertInvalid("256.0.0.0");
45          assertInvalid("1.2.3.4.5");
46          assertInvalid("foo");
47          assertInvalid("*");
48  
49          try
50          {
51              RequestConditions
52                  .builder()
53                      .setCertificateTimeout(-1L);
54              fail();
55          }
56          catch (IllegalArgumentException e) {}
57      }
58  
59      private void assertInvalid(String ipPattern)
60      {
61          try
62          {
63              RequestConditions
64                  .builder()
65                  .addIPPattern(ipPattern);
66              fail();
67          }
68          catch (IPAddressFormatException e) {}
69      }
70  }