d000cc5c63142794f4da9cbc8e0e7ea08f38761d
[aaa.git] / aaa-shiro / impl / src / test / java / org / opendaylight / aaa / shiro / tokenauthrealm / auth / ClaimBuilderTest.java
1 /*
2  * Copyright (c) 2014, 2017 Hewlett-Packard Development Company, L.P. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.aaa.shiro.tokenauthrealm.auth;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertNotEquals;
14 import static org.junit.Assert.assertTrue;
15
16 import java.util.Arrays;
17 import java.util.HashSet;
18 import org.junit.Test;
19 import org.opendaylight.aaa.api.Claim;
20
21 /**
22  * ClaimBuilder test suite.
23  * @author liemmn
24  *
25  */
26 public class ClaimBuilderTest {
27     @Test
28     public void testBuildWithAll() {
29         Claim c1 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
30                 .setUserId("1234").addRole("foo").addRole("foo2")
31                 .addRoles(new HashSet<>(Arrays.asList("foo", "bar"))).build();
32         assertEquals("dlux", c1.clientId());
33         assertEquals("pepsi", c1.domain());
34         assertEquals("john", c1.user());
35         assertEquals("1234", c1.userId());
36         assertTrue(c1.roles().contains("foo"));
37         assertTrue(c1.roles().contains("foo2"));
38         assertTrue(c1.roles().contains("bar"));
39         assertEquals(3, c1.roles().size());
40         Claim c2 = new ClaimBuilder(c1).build();
41         assertEquals(c1, c2);
42     }
43
44     @Test
45     public void testBuildWithRequired() {
46         Claim c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
47         assertEquals("john", c1.user());
48         assertEquals("1234", c1.userId());
49         assertTrue(c1.roles().contains("foo"));
50         assertEquals(1, c1.roles().size());
51         assertEquals("", c1.domain());
52         assertEquals("", c1.clientId());
53     }
54
55     @Test
56     public void testBuildWithEmptyOptional() {
57         Claim c1 = new ClaimBuilder().setDomain("  ").setClientId("  ").setUser("john")
58                 .setUserId("1234").addRole("foo").build();
59         assertEquals("", c1.domain());
60         assertEquals("", c1.clientId());
61         assertEquals("john", c1.user());
62         assertEquals("1234", c1.userId());
63         assertTrue(c1.roles().contains("foo"));
64         assertEquals(1, c1.roles().size());
65     }
66
67     @Test
68     public void testBuildWithNullOptional() {
69         Claim c1 = new ClaimBuilder().setDomain(null).setClientId(null).setUser("john")
70                 .setUserId("1234").addRole("foo").build();
71         assertEquals("", c1.domain());
72         assertEquals("", c1.clientId());
73         assertEquals("john", c1.user());
74         assertEquals("1234", c1.userId());
75         assertTrue(c1.roles().contains("foo"));
76         assertEquals(1, c1.roles().size());
77     }
78
79     @Test(expected = IllegalStateException.class)
80     public void testBuildWithDefault() {
81         ClaimBuilder c1 = new ClaimBuilder();
82         c1.build();
83     }
84
85     @Test(expected = IllegalStateException.class)
86     public void testBuildWithoutUser() {
87         ClaimBuilder c1 = new ClaimBuilder().setUserId("1234").addRole("foo");
88         c1.build();
89     }
90
91     @Test(expected = IllegalStateException.class)
92     public void testBuildWithNullUser() {
93         ClaimBuilder c1 = new ClaimBuilder().setUser(null).setUserId("1234").addRole("foo");
94         c1.build();
95     }
96
97     @Test(expected = IllegalStateException.class)
98     public void testBuildWithEmptyUser() {
99         ClaimBuilder c1 = new ClaimBuilder().setUser("  ").setUserId("1234").addRole("foo");
100         c1.build();
101     }
102
103     @Test(expected = IllegalStateException.class)
104     public void testBuildWithoutUserId() {
105         ClaimBuilder c1 = new ClaimBuilder().setUser("john").addRole("foo");
106         c1.build();
107     }
108
109     @Test(expected = IllegalStateException.class)
110     public void testBuildWithNullUserId() {
111         ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId(null).addRole("foo");
112         c1.build();
113     }
114
115     @Test(expected = IllegalStateException.class)
116     public void testBuildWithEmptyUserId() {
117         ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("  ").addRole("foo");
118         c1.build();
119     }
120
121     @Test(expected = IllegalStateException.class)
122     public void testBuildWithoutRole() {
123         ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("1234");
124         c1.build();
125     }
126
127     @Test(expected = IllegalStateException.class)
128     public void testBuildWithNullRole() {
129         ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole(null);
130         c1.build();
131     }
132
133     @Test(expected = IllegalStateException.class)
134     public void testBuildWithEmptyRole() {
135         ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("  ");
136         c1.build();
137     }
138
139     @Test
140     public void testEquals() {
141         Claim c1 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
142                 .setUserId("1234").addRole("foo").build();
143         assertTrue(c1.equals(c1));
144         Claim c2 = new ClaimBuilder(c1).addRole("foo").build();
145         assertTrue(c1.equals(c2));
146         assertTrue(c2.equals(c1));
147         Claim c3 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
148                 .setUserId("1234").addRole("foo").build();
149         assertTrue(c1.equals(c3));
150         assertTrue(c3.equals(c2));
151         assertTrue(c1.equals(c2));
152     }
153
154     @Test
155     public void testNotEquals() {
156         Claim c1 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
157                 .setUserId("1234").addRole("foo").build();
158         assertFalse(c1.equals(null));
159         assertFalse(c1.equals("wrong object"));
160         Claim c2 = new ClaimBuilder(c1).addRoles(new HashSet<>(Arrays.asList("foo", "bar")))
161                 .build();
162         assertEquals(2, c2.roles().size());
163         assertFalse(c1.equals(c2));
164         assertFalse(c2.equals(c1));
165         Claim c3 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
166                 .setUserId("1234").addRole("foo").build();
167         assertFalse(c1.equals(c2));
168         assertTrue(c1.equals(c3));
169         assertFalse(c2.equals(c3));
170         Claim c5 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
171         assertFalse(c1.equals(c5));
172         assertFalse(c5.equals(c1));
173     }
174
175     @Test
176     public void testHash() {
177         Claim c1 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
178                 .setUserId("1234").addRole("foo").build();
179         assertEquals(c1.hashCode(), c1.hashCode());
180         Claim c2 = new ClaimBuilder(c1).addRole("foo").build();
181         assertTrue(c1.equals(c2));
182         assertEquals(c1.hashCode(), c2.hashCode());
183         Claim c3 = new ClaimBuilder(c1).addRoles(new HashSet<>(Arrays.asList("foo", "bar")))
184                 .build();
185         assertFalse(c1.equals(c3));
186         assertNotEquals(c1.hashCode(), c3.hashCode());
187         Claim c4 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john")
188                 .setUserId("1234").addRole("foo").build();
189         assertTrue(c1.equals(c4));
190         assertEquals(c1.hashCode(), c4.hashCode());
191         assertEquals(c2.hashCode(), c4.hashCode());
192         Claim c5 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
193         assertFalse(c1.equals(c5));
194         assertNotEquals(c1.hashCode(), c5.hashCode());
195     }
196
197     @Test
198     public void testToString() {
199         Claim c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
200         assertEquals("clientId:,userId:1234,userName:john,domain:,roles:[foo]", c1.toString());
201         c1 = new ClaimBuilder(c1).setClientId("dlux").setDomain("pepsi").build();
202         assertEquals("clientId:dlux,userId:1234,userName:john,domain:pepsi,roles:[foo]",
203                 c1.toString());
204         c1 = new ClaimBuilder(c1).addRole("bar").build();
205         assertEquals("clientId:dlux,userId:1234,userName:john,domain:pepsi,roles:[foo, bar]",
206                 c1.toString());
207     }
208 }