/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * 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.test.securitycontext; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.List; import javax.security.auth.Subject; import org.jboss.security.AuthenticationManager; import org.jboss.security.AuthorizationManager; import org.jboss.security.ISecurityManagement; import org.jboss.security.SecurityContext; import org.jboss.security.SecurityContextFactory; import org.jboss.security.audit.AuditManager; import org.jboss.security.config.SecurityConfiguration; import org.jboss.security.identity.RoleGroup; import org.jboss.security.identity.plugins.SimpleRole; import org.jboss.security.identity.plugins.SimpleRoleGroup; import org.jboss.security.identitytrust.IdentityTrustManager; import org.jboss.security.mapping.MappingContext; import org.jboss.security.mapping.providers.DeploymentRolesMappingProvider; import org.jboss.security.plugins.JBossSecurityContext; import org.jboss.security.plugins.JBossSecurityContextUtil; /** * Test the Security Context * @author <a href="mailto:Anil.Saldhana@jboss.org">Anil Saldhana</a> * @since Dec 26, 2006 * @version $Revision$ */ public class SecurityContextTestCase extends SecurityContextBaseTest { public void setUp() { SecurityConfiguration.addApplicationPolicy(createApplicationPolicy(securityDomain)); } public void testSecurityDomain() { assertEquals("Security Domain == other", getSC(securityDomain).getSecurityDomain() ,securityDomain); } public void testSubjectInfo() { Subject sub = new Subject(); JBossSecurityContext sc = getSC(securityDomain); assertNotNull("SubjectInfo is not null", sc.getSubjectInfo()); sc.getUtil().createSubjectInfo(principal, cred, sub); assertEquals("Subject is equal",sc.getSubjectInfo().getAuthenticatedSubject(),sub); assertEquals("Principal is equal",sc.getUtil().getUserPrincipal(),principal); assertEquals("Credential is equal",sc.getUtil().getCredential(),cred); } public void testMappingContext() { JBossSecurityContext sc = getSC(securityDomain); ISecurityManagement ism = sc.getSecurityManagement(); assertNotNull("Security Management is not null", ism); MappingContext<RoleGroup> mc = sc.getMappingManager().getMappingContext("role"); assertNotNull("Mapping Context is not null", mc); List<?> modules = mc.getModules(); assertNotNull("Mapping modules not null", modules); assertEquals("Module size == 1", modules.size(),1); assertTrue("Deployment Roles Provider is present", modules.get(0) instanceof DeploymentRolesMappingProvider); } public void testSecurityContextFactory() throws Exception { SecurityContext sc = SecurityContextFactory.createSecurityContext(securityDomain); assertTrue("Instance of JBossSecurityContext", sc instanceof JBossSecurityContext); assertTrue("Instance of JBossSecurityContextUtil", sc.getUtil() instanceof JBossSecurityContextUtil); //Create an instance of TestSecurityContext sc = SecurityContextFactory.createSecurityContext(securityDomain, TestSecurityContext.class.getName()); assertTrue("Instance of TestSecurityContext", sc instanceof TestSecurityContext); } public void testManagersFromJBossSecurityContext() throws Exception { JBossSecurityContext sc = this.getSC("other"); ISecurityManagement ism = sc.getSecurityManagement(); assertNotNull("Security Management is not null", ism); AuthenticationManager authManager = sc.getAuthenticationManager(); assertNotNull("AuthenticationManager is not null", authManager); AuthorizationManager authorizationMgr = sc.getAuthorizationManager(); assertNotNull("AuthorizationManager is not null", authorizationMgr); AuditManager auditManager = sc.getAuditManager(); assertNotNull("AuditManager is not null", auditManager); IdentityTrustManager itm = sc.getIdentityTrustManager(); assertNotNull("IdentityTrustManager is not null", itm); } public void testRoles() { JBossSecurityContext sc = this.getSC("other"); SimpleRoleGroup roleGroup = new SimpleRoleGroup("Roles"); roleGroup.addRole(new SimpleRole("testRole")); sc.getUtil().setRoles(roleGroup); //Retrieve the roles RoleGroup scRoles = sc.getUtil().getRoles(); assertNotNull(scRoles); assertTrue(scRoles.containsAll(new SimpleRole("testRole"))); } //Validates JBossSecurityContext is serializable public void testJBossSecurityContextSerialization() throws Exception { JBossSecurityContext jsc = new JBossSecurityContext("other"); // Serialize to a byte array ByteArrayOutputStream bos = new ByteArrayOutputStream() ; ObjectOutputStream out = new ObjectOutputStream(bos) ; out.writeObject(jsc); out.close(); //Deserialize from a byte array JBossSecurityContext otherSC = null; ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray())); otherSC = (JBossSecurityContext) in.readObject(); in.close(); assertNotNull("The deserialized security context is not null:", otherSC); assertEquals("other", otherSC.getSecurityDomain()); } }