/**
* Copyright (c) 2009 - 2012 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package org.candlepin.auth;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.candlepin.auth.permissions.OwnerPermission;
import org.candlepin.auth.permissions.Permission;
import org.candlepin.model.Owner;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
/**
* UserPrincipalTest
*/
public class UserPrincipalTest {
private Owner owner;
private OwnerPermission ownerPerm;
private UserPrincipal user;
@Before
public void init() {
owner = mock(Owner.class);
ownerPerm = mock(OwnerPermission.class);
user = new UserPrincipal("icup", null, true);
}
@Test
public void usernameMatches() {
assertEquals("icup", user.getUsername());
assertEquals(user.getUsername(), user.getPrincipalName());
}
@Test
public void defaultsToAdmin() {
assertTrue(user.hasFullAccess());
}
@Test
public void shouldNotBeAnAdmin() {
UserPrincipal up = new UserPrincipal("notadmin", null, false);
assertFalse(up.hasFullAccess());
}
@Test
public void accessOwnerGivenPermission() {
when(owner.getId()).thenReturn("1");
when(owner.getKey()).thenReturn("owner1");
when(ownerPerm.getOwner()).thenReturn(owner);
List<Permission> ops = new ArrayList<Permission>();
ops.add(ownerPerm);
UserPrincipal up = new UserPrincipal("admin", ops, false);
List<Owner> owners = up.getOwners();
assertNotNull(owners);
assertSame(owner, owners.get(0));
}
@Test
public void accessOwnerKeysGivenPermission() {
when(owner.getId()).thenReturn("1");
when(owner.getKey()).thenReturn("owner1");
when(ownerPerm.getOwner()).thenReturn(owner);
List<Permission> ops = new ArrayList<Permission>();
ops.add(ownerPerm);
UserPrincipal up = new UserPrincipal("admin", ops, false);
List<String> keys = up.getOwnerKeys();
assertNotNull(keys);
assertEquals("owner1", keys.get(0));
}
@Test
public void accessOwnerIdsGivenPermission() {
when(owner.getId()).thenReturn("1");
when(owner.getKey()).thenReturn("owner1");
when(ownerPerm.getOwner()).thenReturn(owner);
List<Permission> ops = new ArrayList<Permission>();
ops.add(ownerPerm);
UserPrincipal up = new UserPrincipal("admin", ops, false);
List<String> ids = up.getOwnerIds();
assertNotNull(ids);
assertEquals("1", ids.get(0));
}
@Test
public void permsShouldNotAffectOwners() {
List<Permission> perms = new ArrayList<Permission>();
perms.add(mock(Permission.class));
UserPrincipal up = new UserPrincipal("admin", perms, false);
assertTrue(up.getOwners().isEmpty());
}
@Test
public void equalsNull() {
assertFalse(user.equals(null));
}
@Test
public void equalsOtherObject() {
assertFalse(user.equals(new Object()));
}
@Test
public void equalsAnotherConsumerPrincipal() {
UserPrincipal up = new UserPrincipal("icup", null, true);
assertTrue(user.equals(up));
}
@Test
public void equalsDifferentConsumer() {
UserPrincipal up = new UserPrincipal("admin", null, true);
assertFalse(user.equals(up));
}
}