2 * Copyright (c) 2014, 2017 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.shiro.tokenauthrealm.auth;
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;
18 import org.junit.Test;
19 import org.opendaylight.aaa.api.Claim;
22 * ClaimBuilder test suite.
26 public class ClaimBuilderTest {
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();
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")
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());
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());
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")
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));
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")))
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));
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")))
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());
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]",
204 c1 = new ClaimBuilder(c1).addRole("bar").build();
205 assertEquals("clientId:dlux,userId:1234,userName:john,domain:pepsi,roles:[foo, bar]",