2 * Copyright (c) 2014, 2015 Hewlett-Packard Development Company, L.P. and others. All rights reserved.
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
9 package org.opendaylight.aaa;
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;
16 import java.util.Arrays;
17 import java.util.HashSet;
19 import org.junit.Test;
20 import org.opendaylight.aaa.api.Claim;
27 public class ClaimBuilderTest {
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();
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());
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());
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());
79 @Test(expected=IllegalStateException.class)
80 public void testBuildWithDefault() {
81 ClaimBuilder c1 = new ClaimBuilder();
85 @Test(expected=IllegalStateException.class)
86 public void testBuildWithoutUser() {
87 ClaimBuilder c1 = new ClaimBuilder().setUserId("1234").addRole("foo");
91 @Test(expected=IllegalStateException.class)
92 public void testBuildWithNullUser() {
93 ClaimBuilder c1 = new ClaimBuilder().setUser(null).setUserId("1234").addRole("foo");
97 @Test(expected=IllegalStateException.class)
98 public void testBuildWithEmptyUser() {
99 ClaimBuilder c1 = new ClaimBuilder().setUser(" ").setUserId("1234").addRole("foo");
103 @Test(expected=IllegalStateException.class)
104 public void testBuildWithoutUserId() {
105 ClaimBuilder c1 = new ClaimBuilder().setUser("john").addRole("foo");
109 @Test(expected=IllegalStateException.class)
110 public void testBuildWithNullUserId() {
111 ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId(null).addRole("foo");
115 @Test(expected=IllegalStateException.class)
116 public void testBuildWithEmptyUserId() {
117 ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId(" ").addRole("foo");
121 @Test(expected=IllegalStateException.class)
122 public void testBuildWithoutRole() {
123 ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("1234");
127 @Test(expected=IllegalStateException.class)
128 public void testBuildWithNullRole() {
129 ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole(null);
133 @Test(expected=IllegalStateException.class)
134 public void testBuildWithEmptyRole() {
135 ClaimBuilder c1 = new ClaimBuilder().setUser("john").setUserId("1234").addRole(" ");
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));
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));
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());
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());