/* * JBoss, Home of Professional Open Source * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jboss.messaging.tests.unit.core.security.impl; import java.util.HashSet; import junit.framework.TestCase; import org.jboss.messaging.core.security.CheckType; import org.jboss.messaging.core.security.Role; import org.jboss.messaging.core.security.impl.JBMSecurityManagerImpl; /** * tests JBMSecurityManagerImpl * * @author <a href="ataylor@redhat.com">Andy Taylor</a> */ public class JBMSecurityManagerImplTest extends TestCase { private JBMSecurityManagerImpl securityManager; protected void setUp() throws Exception { securityManager = new JBMSecurityManagerImpl(true); } protected void tearDown() throws Exception { securityManager = null; } public void testDefaultSecurity() { assertTrue(securityManager.validateUser(null, null)); assertTrue(securityManager.validateUser("guest", "guest")); HashSet<Role> roles = new HashSet<Role>(); roles.add(new Role("guest", true, true, true)); assertTrue(securityManager.validateUserAndRole(null, null, roles, CheckType.CREATE)); assertTrue(securityManager.validateUserAndRole(null, null, roles, CheckType.WRITE)); assertTrue(securityManager.validateUserAndRole(null, null, roles, CheckType.READ)); roles = new HashSet<Role>(); roles.add(new Role("guest", true, true, false)); assertFalse(securityManager.validateUserAndRole(null, null, roles, CheckType.CREATE)); assertTrue(securityManager.validateUserAndRole(null, null, roles, CheckType.WRITE)); assertTrue(securityManager.validateUserAndRole(null, null, roles, CheckType.READ)); roles = new HashSet<Role>(); roles.add(new Role("guest", true, false, false)); assertFalse(securityManager.validateUserAndRole(null, null, roles, CheckType.CREATE)); assertFalse(securityManager.validateUserAndRole(null, null, roles, CheckType.WRITE)); assertTrue(securityManager.validateUserAndRole(null, null, roles, CheckType.READ)); roles = new HashSet<Role>(); roles.add(new Role("guest", false, false, false)); assertFalse(securityManager.validateUserAndRole(null, null, roles, CheckType.CREATE)); assertFalse(securityManager.validateUserAndRole(null, null, roles, CheckType.WRITE)); assertFalse(securityManager.validateUserAndRole(null, null, roles, CheckType.READ)); } public void testAddingUsers() { securityManager.addUser("newuser1", "newpassword1"); assertTrue(securityManager.validateUser("newuser1", "newpassword1")); assertFalse(securityManager.validateUser("newuser1", "guest")); assertFalse(securityManager.validateUser("newuser1", null)); try { securityManager.addUser("newuser2", null); fail("password cannot be null"); } catch (IllegalArgumentException e) { //pass } try { securityManager.addUser(null, "newpassword2"); fail("password cannot be null"); } catch (IllegalArgumentException e) { //pass } } public void testRemovingUsers() { securityManager.addUser("newuser1", "newpassword1"); assertTrue(securityManager.validateUser("newuser1", "newpassword1")); securityManager.removeUser("newuser1"); assertFalse(securityManager.validateUser("newuser1", "newpassword1")); } public void testRemovingInvalidUsers() { securityManager.addUser("newuser1", "newpassword1"); assertTrue(securityManager.validateUser("newuser1", "newpassword1")); securityManager.removeUser("nonuser"); assertTrue(securityManager.validateUser("newuser1", "newpassword1")); } public void testAddingRoles() { securityManager.addUser("newuser1", "newpassword1"); securityManager.addRole("newuser1", "role1"); securityManager.addRole("newuser1", "role2"); securityManager.addRole("newuser1", "role3"); securityManager.addRole("newuser1", "role4"); HashSet<Role> roles = new HashSet<Role>(); roles.add(new Role("role1", true, true, true)); assertTrue(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role2", true, true, true)); assertTrue(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role3", true, true, true)); assertTrue(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role4", true, true, true)); assertTrue(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role5", true, true, true)); assertFalse(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); } public void testRemovingRoles() { securityManager.addUser("newuser1", "newpassword1"); securityManager.addRole("newuser1", "role1"); securityManager.addRole("newuser1", "role2"); securityManager.addRole("newuser1", "role3"); securityManager.addRole("newuser1", "role4"); securityManager.removeRole("newuser1", "role2"); securityManager.removeRole("newuser1", "role4"); HashSet<Role> roles = new HashSet<Role>(); roles.add(new Role("role1", true, true, true)); assertTrue(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role2", true, true, true)); assertFalse(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role3", true, true, true)); assertTrue(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role4", true, true, true)); assertFalse(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); roles = new HashSet<Role>(); roles.add(new Role("role5", true, true, true)); assertFalse(securityManager.validateUserAndRole("newuser1", "newpassword1", roles, CheckType.WRITE)); } }