/** * 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.service.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.candlepin.auth.Access; import org.candlepin.model.Owner; import org.candlepin.model.OwnerCurator; import org.candlepin.model.Role; import org.candlepin.model.RoleCurator; import org.candlepin.model.User; import org.candlepin.model.UserCurator; import org.candlepin.service.UserServiceAdapter; import org.candlepin.test.DatabaseTestFixture; import org.candlepin.test.TestUtil; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.inject.Inject; /** * DefaultUserServiceAdapterTest */ public class DefaultUserServiceAdapterTest extends DatabaseTestFixture { @Inject private OwnerCurator ownerCurator; @Inject private RoleCurator roleCurator; @Inject private UserCurator userCurator; private DefaultUserServiceAdapter service; private Owner owner; @Before @Override public void init() throws Exception { super.init(); this.owner = ownerCurator.create(new Owner("default_owner")); this.service = new DefaultUserServiceAdapter(userCurator, roleCurator); } @Test public void validationPass() { User user = new User("test_user", "mypassword"); this.service.createUser(user); Assert.assertTrue(this.service.validateUser("test_user", "mypassword")); } @Test public void testFindAllUsers() { User user = new User("test_user", "mypassword"); this.service.createUser(user); List<User> users = this.service.listUsers(); assertTrue("The size of the list should be 1", users.size() == 1); assertEquals("test_user", users.get(0).getUsername()); } @Test public void validationBadPassword() { User user = new User("dude", "password"); this.service.createUser(user); Assert.assertFalse(this.service.validateUser("dude", "invalid")); } @Test public void validationNoUser() { Assert.assertFalse(this.service.validateUser("not_here", "candlepin")); } @Test public void validationNullsAllAround() { Assert.assertFalse(this.service.validateUser(null, null)); } @Test @Ignore("Find a way to do this with permissions") public void findOwner() { User user = new User("test_name", "password"); this.service.createUser(user); Role adminRole = createAdminRole(owner); adminRole.addUser(user); roleCurator.create(adminRole); //List<Owner> owners = this.service.getOwners("test_name"); //Assert.assertEquals(1, owners.size()); //Assert.assertEquals(owner, owners.get(0)); } @Test @Ignore("Find a way to do this with permissions") public void findOwnerFail() { //Assert.assertNull(this.service.getOwners("i_dont_exist")); } @Test @Ignore("Find a way to do this with permissions") public void ownerAdminRole() { User user = new User("regular_user", "password"); this.service.createUser(user); Assert.assertTrue( this.service.findByLogin("regular_user").getRoles().contains(Access.ALL)); } @Test @Ignore("Find a way to do this with permissions") public void superAdminRole() { Set<Owner> owners = new HashSet<Owner>(); owners.add(owner); User user = new User("super_admin", "password", true); this.service.createUser(user); Assert.assertTrue( this.service.findByLogin("super_admin").getRoles().contains(Access.ALL)); } @Test public void deletionValidationFail() { User user = new User("guy", "pass"); user = this.service.createUser(user); this.service.deleteUser(user); Assert.assertFalse(this.service.validateUser("guy", "pass")); } @Test public void findByLogin() { User u = mock(User.class); UserCurator curator = mock(UserCurator.class); RoleCurator roleCurator = mock(RoleCurator.class); UserServiceAdapter dusa = new DefaultUserServiceAdapter(curator, roleCurator); when(curator.findByLogin(anyString())).thenReturn(u); User foo = dusa.findByLogin("foo"); assertNotNull(foo); assertEquals(foo, u); } @Test public void addUserToRole() { Role adminRole = createAdminRole(owner); roleCurator.create(adminRole); User user = new User("testuser", "password"); service.createUser(user); service.addUserToRole(adminRole, user); adminRole = service.getRole(adminRole.getId()); assertEquals(1, adminRole.getUsers().size()); } @Test public void deleteUserRemovesUserFromRoles() { Role adminRole = createAdminRole(owner); roleCurator.create(adminRole); User user = new User("testuser", "password"); service.createUser(user); service.addUserToRole(adminRole, user); service.deleteUser(user); adminRole = service.getRole(adminRole.getId()); assertEquals(0, adminRole.getUsers().size()); } @Test public void testUpdating() { User user = TestUtil.createUser(null, null, true); user = this.userCurator.create(user); user.setUsername("JarJar"); user.setHashedPassword("Binks"); user.setSuperAdmin(false); User updated = service.updateUser(user); assertEquals("JarJar", updated.getUsername()); assertEquals("Binks", updated.getHashedPassword()); assertFalse(updated.isSuperAdmin()); } }