[jboss-cvs] JBossAS SVN: r64294 - in projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test: security and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jul 26 02:27:34 EDT 2007


Author: anil.saldhana at jboss.com
Date: 2007-07-26 02:27:33 -0400 (Thu, 26 Jul 2007)
New Revision: 64294

Added:
   projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/
   projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/
   projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java
Log:
 config test

Added: projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java
===================================================================
--- projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java	                        (rev 0)
+++ projects/security/security-jboss-sx/trunk/src/tests/org/jboss/test/security/config/SecurityConfigurationUnitTestCase.java	2007-07-26 06:27:33 UTC (rev 64294)
@@ -0,0 +1,266 @@
+/*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2007, 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.security.config;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import javax.security.auth.login.AppConfigurationEntry;
+ 
+import org.jboss.security.audit.config.AuditProviderEntry;
+import org.jboss.security.auth.container.config.AuthModuleEntry;
+import org.jboss.security.auth.login.BaseAuthenticationInfo;
+import org.jboss.security.auth.login.LoginConfigObjectModelFactory;
+import org.jboss.security.auth.login.LoginModuleStackHolder;
+import org.jboss.security.auth.spi.UsersObjectModelFactory;
+import org.jboss.security.authorization.config.AuthorizationModuleEntry;
+import org.jboss.security.authorization.config.SecurityConfigObjectModelFactory;
+import org.jboss.security.config.ApplicationPolicy;
+import org.jboss.security.config.AuditInfo;
+import org.jboss.security.config.AuthorizationInfo;
+import org.jboss.security.config.IdentityTrustInfo;
+import org.jboss.security.config.MappingInfo;
+import org.jboss.security.config.PolicyConfig;
+import org.jboss.security.identitytrust.config.IdentityTrustModuleEntry;
+import org.jboss.security.mapping.config.MappingModuleEntry;
+import org.jboss.xb.binding.Unmarshaller; 
+import org.jboss.xb.binding.UnmarshallerFactory;
+
+import junit.framework.TestCase;
+
+//$Id$
+
+/**
+ *  Security Configuration Unit Test Case
+ *  @author Anil.Saldhana at redhat.com
+ *  @since  Jul 25, 2007 
+ *  @version $Revision$
+ */
+public class SecurityConfigurationUnitTestCase extends TestCase
+{
+   private String schemaFile = "schema/security-config_5_0.xsd";
+   private String xmlFile = "config/securityConfig5.xml";
+   
+   private PolicyConfig config = null;
+   
+   protected void setUp() throws Exception
+   {
+      ClassLoader tcl = Thread.currentThread().getContextClassLoader();
+      
+      LoginConfigObjectModelFactory lcomf = new SecurityConfigObjectModelFactory();
+      UsersObjectModelFactory uomf = new UsersObjectModelFactory();
+      URL xmlFileURL = tcl.getResource(xmlFile);
+      assertNotNull("XML File URL is not null", xmlFileURL);
+      InputStreamReader xmlReader = loadURL(xmlFileURL);
+      Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+      unmarshaller.mapFactoryToNamespace(uomf, "http://www.jboss.org/j2ee/schemas/XMLLoginModule");
+      unmarshaller.setSchemaValidation(true);
+      unmarshaller.setNamespaceAware(true);
+      unmarshaller.setFeature(Unmarshaller.SCHEMA_VALIDATION, Boolean.TRUE);
+      Object root = null;
+      config = (PolicyConfig) unmarshaller.unmarshal(xmlReader, lcomf, root);
+      assertNotNull("PolicyConfig is not null", config);
+   }
+    
+   
+   public void testValidateJAASConfiguration()
+   {
+      ApplicationPolicy jaasConfig = config.get("conf-jaas");
+      BaseAuthenticationInfo authInfo = jaasConfig.getAuthenticationInfo();
+      List entries = authInfo.getModuleEntries();
+      assertEquals("Number of entries = 2", 2, entries.size());
+      
+      //First Entry
+      Object entry = entries.get(0);
+      assertTrue("Entry instanceof AppConfigurationEntry", 
+            entry instanceof AppConfigurationEntry); 
+      AppConfigurationEntry ace = (AppConfigurationEntry)entry; 
+      assertEquals("LM Name","org.jboss.test.TestLoginModule" ,ace.getLoginModuleName());
+      assertEquals("Required", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
+            ace.getControlFlag());
+      Map aceOptions = ace.getOptions();
+      assertEquals("Number of options = 3", 3, aceOptions.size());
+      assertEquals("name=1.1", "1.1", aceOptions.get("name"));
+      assertEquals("succeed=true", "true", aceOptions.get("succeed"));
+      assertEquals("throwEx=false", "false", aceOptions.get("throwEx"));
+      
+      //Second Entry
+      entry = entries.get(1);
+      assertTrue("Entry instanceof AppConfigurationEntry", 
+            entry instanceof AppConfigurationEntry); 
+      ace = (AppConfigurationEntry)entry; 
+      assertEquals("LM Name","org.jboss.test.TestLoginModule2" ,ace.getLoginModuleName());
+      assertEquals("Required", AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL,
+            ace.getControlFlag());
+      aceOptions = ace.getOptions();
+      assertEquals("Number of options = 4", 4, aceOptions.size());
+      assertEquals("name=1.2", "1.2", aceOptions.get("name"));
+      assertEquals("succeed=false", "false", aceOptions.get("succeed"));
+      assertEquals("throwEx=true", "true", aceOptions.get("throwEx"));
+      assertEquals("dummy=d", "d", aceOptions.get("dummy"));
+      
+   }
+   
+   public void testValidateJASPIConfiguration()
+   {
+      ApplicationPolicy jaspiConfig = config.get("conf-jaspi");
+      BaseAuthenticationInfo authInfo = jaspiConfig.getAuthenticationInfo();
+      List entries = authInfo.getModuleEntries();
+      assertEquals("Number of entries = 2", 2, entries.size());
+      
+      //First Entry
+      Object entry = entries.get(0);
+      assertTrue("Entry instanceof AppConfigurationEntry", 
+            entry instanceof AuthModuleEntry); 
+      AuthModuleEntry ace = (AuthModuleEntry)entry; 
+      assertEquals("LM Name","TestAuthModule" ,ace.getAuthModuleName());
+      assertEquals("Required", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
+            ace.getControlFlag());
+      Map aceOptions = ace.getOptions();
+      assertEquals("Number of options = 3", 3, aceOptions.size());
+      assertEquals("usersProperties=u", "u", aceOptions.get("usersProperties"));
+      assertEquals("rolesProperties=r", "r", aceOptions.get("rolesProperties"));
+      assertEquals("unauthenticatedIdentity=anonymous", 
+            "anonymous", aceOptions.get("unauthenticatedIdentity"));
+      
+      //Second Entry
+      entry = entries.get(1);
+      assertTrue("Entry instanceof AppConfigurationEntry", 
+            entry instanceof AuthModuleEntry); 
+      ace = (AuthModuleEntry)entry; 
+      assertEquals("LM Name","TestAuthModule2" ,ace.getAuthModuleName());
+      assertEquals("Required", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
+            ace.getControlFlag());
+      aceOptions = ace.getOptions();
+      assertEquals("Number of options = 0", 0, aceOptions.size()); 
+      LoginModuleStackHolder lmsh = ace.getLoginModuleStackHolder();
+      assertEquals("lm-stack", "lm-stack", lmsh.getName());
+      AppConfigurationEntry[] appEntries = lmsh.getAppConfigurationEntry();
+      assertEquals("App Entries in LMSH=1",1,appEntries.length);
+      
+      Object appEntry = appEntries[0];
+      assertTrue("Entry instanceof AppConfigurationEntry", 
+            appEntry instanceof AppConfigurationEntry); 
+      AppConfigurationEntry appace = (AppConfigurationEntry)appEntry; 
+      assertEquals("LM Name","org.jboss.security.auth.spi.UsersRolesLoginModule" ,
+            appace.getLoginModuleName());
+      assertEquals("Optional", AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL,
+            appace.getControlFlag());
+      Map appaceOptions = appace.getOptions();
+      assertEquals("Number of options = 3", 3, appaceOptions.size());
+      assertEquals("usersProperties=u", "u", appaceOptions.get("usersProperties"));
+      assertEquals("rolesProperties=r", "r", appaceOptions.get("rolesProperties"));
+      assertEquals("unauthenticatedIdentity=anonymous", 
+            "anonymous", appaceOptions.get("unauthenticatedIdentity")); 
+   }
+   
+   public void testValidateCompleteConfiguration()
+   {
+      ApplicationPolicy completeConfig = config.get("conf-complete");
+      BaseAuthenticationInfo authInfo = completeConfig.getAuthenticationInfo();
+      List entries = authInfo.getModuleEntries();
+      assertEquals("Number of entries = 1", 1, entries.size());
+      
+      //First Entry
+      Object entry = entries.get(0);
+      assertTrue("Entry instanceof AppConfigurationEntry", 
+            entry instanceof AppConfigurationEntry); 
+      AppConfigurationEntry ace = (AppConfigurationEntry)entry; 
+      assertEquals("LM Name","org.jboss.test.TestLoginModule" ,ace.getLoginModuleName());
+      assertEquals("Required", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
+            ace.getControlFlag());
+      Map aceOptions = ace.getOptions();
+      assertEquals("Number of options = 3", 3, aceOptions.size());
+      assertEquals("name=1.1", "1.1", aceOptions.get("name"));
+      assertEquals("succeed=true", "true", aceOptions.get("succeed"));
+      assertEquals("throwEx=false", "false", aceOptions.get("throwEx"));
+      
+      //Authorization
+      AuthorizationInfo authzInfo = completeConfig.getAuthorizationInfo();
+      assertNotNull("AuthorizationInfo is not null", authzInfo);
+      AuthorizationModuleEntry[] authzEntries = authzInfo.getAuthorizationModuleEntry();
+      assertEquals("Length of authorization entries = 1", 1, authzEntries.length);
+      AuthorizationModuleEntry authzEntry = authzEntries[0];
+      assertEquals("TestPolicyModule","org.jboss.test.TestPolicyModule",
+            authzEntry.getPolicyModuleName());
+      assertEquals("Required", AuthorizationModuleEntry.ControlFlag.REQUIRED,
+            authzEntry.getControlFlag());
+      Map authzoptions = authzEntry.getOptions();
+      assertEquals("Number of options = 2", 2, authzoptions.size());
+      assertEquals("name=authz", "authz", authzoptions.get("name"));
+      assertEquals("succeed=true", "true", authzoptions.get("succeed")); 
+      
+      //Role Mapping
+      MappingInfo mappingInfo = completeConfig.getRoleMappingInfo();
+      assertNotNull("MappingInfo is not null", mappingInfo);
+      MappingModuleEntry[] mmearr = mappingInfo.getMappingModuleEntry();
+      assertEquals("Mapping entry length=1", 1, mmearr.length);
+      MappingModuleEntry mme = mmearr[0];
+      assertEquals("TestMappingModule","org.jboss.test.TestMappingModule",
+            mme.getMappingModuleName()); 
+      Map mmOptions = mme.getOptions();
+      assertEquals("Number of options = 2", 2, mmOptions.size());
+      assertEquals("name=rolemap", "rolemap", mmOptions.get("name"));
+      assertEquals("succeed=true", "true", mmOptions.get("succeed")); 
+      
+      //Audit 
+      AuditInfo ai = completeConfig.getAuditInfo();
+      assertNotNull("AuditInfo", ai); 
+      AuditProviderEntry[] apelist = ai.getAuditProviderEntry();
+      assertEquals("Audit entry length=1", 1, apelist.length);
+      AuditProviderEntry ape = apelist[0];
+      assertEquals("TestMappingModule","org.jboss.test.TestMappingModule",
+            mme.getMappingModuleName()); 
+      Map auditOptions = ape.getOptions();
+      assertEquals("Number of options = 2", 2, auditOptions.size());
+      assertEquals("name=auditprovider", "auditprovider", auditOptions.get("name"));
+      assertEquals("succeed=false", "false", auditOptions.get("succeed"));
+      
+      //Identity Trust
+      IdentityTrustInfo iti = completeConfig.getIdentityTrustInfo();
+      assertNotNull("IdentityTrustInfo", iti);
+      IdentityTrustModuleEntry[] itilist = iti.getIdentityTrustModuleEntry();
+      assertEquals("IdentityTrustModuleEntry length=1", 1, itilist.length);
+      IdentityTrustModuleEntry itie = itilist[0];
+      assertEquals("TestMappingModule","org.jboss.test.TestMappingModule",
+            mme.getMappingModuleName()); 
+      Map itieOptions = itie.getOptions();
+      assertEquals("Number of options = 3", 3, itieOptions.size());
+      assertEquals("name=trustprovider", "trustprovider", itieOptions.get("name"));
+      assertEquals("succeed=true", "true", itieOptions.get("succeed"));
+      assertEquals("dummy=dr", "dr", itieOptions.get("dummy"));
+   } 
+   
+   private InputStreamReader loadURL(URL configURL)
+   throws IOException
+   {
+      InputStream is = configURL.openStream();
+      if (is == null)
+         throw new IOException("Failed to obtain InputStream from url: " + configURL);
+      InputStreamReader xmlReader = new InputStreamReader(is);
+      return xmlReader;
+   }
+}




More information about the jboss-cvs-commits mailing list