4feee7aa531b3029024b0d6e930dd1e9cfce32da
[aaa.git] / aaa-authn / src / test / java / org / opendaylight / aaa / ClaimBuilderTest.java
1 /*
2  * Copyright (c) 2014, 2015 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;
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
19 import org.junit.Test;
20 import org.opendaylight.aaa.api.Claim;
21
22 /**
23  *
24  * @author liemmn
25  *
26  */
27 public class ClaimBuilderTest {
28     @Test
29     public void testBuildWithAll() {
30         Claim c1 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john").setUserId("1234")
31             .addRole("foo").addRole("foo2").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").setUserId("1234")
58             .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").setUserId("1234")
70             .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").setUserId("1234")
142             .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").setUserId("1234")
148             .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").setUserId("1234")
157             .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"))).build();
161         assertEquals(2, c2.roles().size());
162         assertFalse(c1.equals(c2));
163         assertFalse(c2.equals(c1));
164         Claim c3 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john").setUserId("1234")
165             .addRole("foo").build();
166         assertFalse(c1.equals(c2));
167         assertTrue(c1.equals(c3));
168         assertFalse(c2.equals(c3));
169         Claim c5 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
170         assertFalse(c1.equals(c5));
171         assertFalse(c5.equals(c1));
172     }
173
174     @Test
175     public void testHash() {
176         Claim c1 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john").setUserId("1234")
177             .addRole("foo").build();
178         assertEquals(c1.hashCode(), c1.hashCode());
179         Claim c2 = new ClaimBuilder(c1).addRole("foo").build();
180         assertTrue(c1.equals(c2));
181         assertEquals(c1.hashCode(), c2.hashCode());
182         Claim c3 = new ClaimBuilder(c1).addRoles(new HashSet<>(Arrays.asList("foo", "bar"))).build();
183         assertFalse(c1.equals(c3));
184         assertNotEquals(c1.hashCode(), c3.hashCode());
185         Claim c4 = new ClaimBuilder().setClientId("dlux").setDomain("pepsi").setUser("john").setUserId("1234")
186             .addRole("foo").build();
187         assertTrue(c1.equals(c4));
188         assertEquals(c1.hashCode(), c4.hashCode());
189         assertEquals(c2.hashCode(), c4.hashCode());
190         Claim c5 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
191         assertFalse(c1.equals(c5));
192         assertNotEquals(c1.hashCode(), c5.hashCode());
193     }
194
195     @Test
196     public void testToString() {
197         Claim c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole("foo").build();
198         assertEquals("clientId:,userId:1234,userName:john,domain:,roles:[foo]", c1.toString());
199         c1 = new ClaimBuilder(c1).setClientId("dlux").setDomain("pepsi").build();
200         assertEquals("clientId:dlux,userId:1234,userName:john,domain:pepsi,roles:[foo]", c1.toString());
201         c1 = new ClaimBuilder(c1).addRole("bar").build();
202         assertEquals("clientId:dlux,userId:1234,userName:john,domain:pepsi,roles:[foo, bar]", c1.toString());
203     }
204 }