1 package com.atlassian.security.auth.trustedapps;
2
3 import junit.framework.TestCase;
4
5 import java.util.Iterator;
6
7
8
9
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 }