Package org.jboss.test.metadata.web

Source Code of org.jboss.test.metadata.web.JBossWebApp24UnitTestCase

/*
* JBoss, Home of Professional Open Source.
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file 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.metadata.web;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.jboss.annotation.javaee.Descriptions;
import org.jboss.metadata.common.jboss.LoaderRepositoryMetaData;
import org.jboss.metadata.javaee.jboss.RunAsIdentityMetaData;
import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
import org.jboss.metadata.javaee.spec.EJBReferenceType;
import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationUsageType;
import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.javaee.spec.ResourceAuthorityType;
import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
import org.jboss.metadata.javaee.spec.RunAsMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleRefMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
import org.jboss.metadata.web.jboss.ClassLoadingMetaData;
import org.jboss.metadata.web.jboss.JBoss4xDTDWebMetaData;
import org.jboss.metadata.web.jboss.JBossServletMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.metadata.web.spec.WebMetaData;
import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest;


/**
* A JBossWebApp24UnitTestCase.
*
* @author <a href="alex@jboss.com">Alexey Loubyansky</a>
* @version $Revision: 1.1 $
*/
public class JBossWebApp24UnitTestCase extends AbstractJavaEEEverythingTest
{
   public JBossWebApp24UnitTestCase(String name)
   {
      super(name);
   }

   public void testClassLoading() throws Exception
   {
      //enableTrace("org.jboss.xb.builder");
      JBossWebMetaData jbossWeb = unmarshal();
      ClassLoadingMetaData classLoading = jbossWeb.getClassLoading();
      assertNotNull(classLoading);
      assertTrue(classLoading.isJava2ClassLoadingCompliance());
      LoaderRepositoryMetaData loaderRepository = classLoading.getLoaderRepository();
      assertNotNull(loaderRepository);
      assertEquals("jbossws.jbws1581:domain=jaxws-jbws1581.war", loaderRepository.getName());
   }

   public void testRunAsPrincipal()
      throws Exception
   {
      JBossWebMetaData jbossWeb = unmarshal();
      assertEquals("4.0", jbossWeb.getVersion());
      assertEquals("java:/jaas/jbosstest-web", jbossWeb.getSecurityDomain());
      ResourceReferenceMetaData dsRef = jbossWeb.getResourceReferenceByName("jdbc/DefaultDS");
      assertEquals("java:/DefaultDS", dsRef.getMappedName());
   }
   public void testMergedRunAsPrincipal()
      throws Exception
   {
      WebMetaData webMD = unmarshal("WebApp24_testRunAsPrincipal.xml", WebMetaData.class, null);
      JBossWebMetaData jbossWebMD = unmarshal("JBossWebApp24_testRunAsPrincipal.xml", JBossWebMetaData.class, null);
      JBossWebMetaData jbossWeb = new JBossWebMetaData();
      jbossWeb.merge(jbossWebMD, webMD);

      assertEquals("4.0", jbossWeb.getVersion());
      assertEquals("java:/jaas/jbosstest-web", jbossWeb.getSecurityDomain());
      assertEquals(5, jbossWeb.getResourceReferences().size());
      // jdbc/DefaultDS
      ResourceReferenceMetaData dsRef = jbossWeb.getResourceReferenceByName("jdbc/DefaultDS");
      assertEquals("jdbc/DefaultDS", dsRef.getResourceRefName());
      assertEquals("The default DS", dsRef.getDescriptions().value()[0].value());
      assertEquals("java:/DefaultDS", dsRef.getMappedName());
      assertEquals("javax.sql.DataSource", dsRef.getType());
      assertEquals(ResourceAuthorityType.Container, dsRef.getResAuth());
      // mail/DefaultMail
      ResourceReferenceMetaData mailRef = jbossWeb.getResourceReferenceByName("mail/DefaultMail");
      assertEquals("mail/DefaultMail", mailRef.getResourceRefName());
      assertEquals("Default Mail", mailRef.getDescriptions().value()[0].value());
      assertEquals("java:/Mail", mailRef.getMappedName());
      assertEquals("javax.mail.Session", mailRef.getType());
      assertEquals(ResourceAuthorityType.Container, mailRef.getResAuth());
      // url/JBossHome
      ResourceReferenceMetaData jbossUrlRef = jbossWeb.getResourceReferenceByName("url/JBossHome");
      assertEquals("url/JBossHome", jbossUrlRef.getResourceRefName());
      assertEquals("JBoss Home Page", jbossUrlRef.getDescriptions().value()[0].value());
      assertEquals("http://www.jboss.org", jbossUrlRef.getResUrl());
      assertEquals("java.net.URL", jbossUrlRef.getType());
      assertEquals(ResourceAuthorityType.Container, jbossUrlRef.getResAuth());
      // url/IndirectURL
      ResourceReferenceMetaData indirectUrlRef = jbossWeb.getResourceReferenceByName("url/IndirectURL");
      assertEquals("url/IndirectURL", indirectUrlRef.getResourceRefName());
      assertEquals("SomeWebSite HomePage", indirectUrlRef.getDescriptions().value()[0].value());
      assertEquals("java:SomeWebSite", indirectUrlRef.getMappedName());
      assertEquals("java.net.URL", indirectUrlRef.getType());
      assertEquals(ResourceAuthorityType.Container, indirectUrlRef.getResAuth());

      assertEquals(2, jbossWeb.getResourceEnvironmentReferences().size());
      ResourceEnvironmentReferenceMetaData resenv1 = jbossWeb.getResourceEnvironmentReferenceByName("res1/aQueue");
      assertEquals("resenv1", resenv1.getId());
      assertEquals("res1/aQueue", resenv1.getResourceEnvRefName());
      assertEquals("A 1st test of the resource-env-ref tag", resenv1.getDescriptions().value()[0].value());
      assertEquals("javax.jms.Queue", resenv1.getType());
      assertEquals("queue/mdbtest", resenv1.getJndiName());
      assertEquals("queue/mdbtest", resenv1.getMappedName());
      ResourceEnvironmentReferenceMetaData resenv2 = jbossWeb.getResourceEnvironmentReferenceByName("res2/aQueue");
      assertEquals("resenv2", resenv2.getId());
      assertEquals("res2/aQueue", resenv2.getResourceEnvRefName());
      assertEquals("A 2nd test of the resource-env-ref tag", resenv2.getDescriptions().value()[0].value());
      assertEquals("javax.jms.Queue", resenv2.getType());
      assertEquals("queue/mdbtest", resenv2.getJndiName());
      assertEquals("queue/mdbtest", resenv2.getMappedName());

      SecurityRolesMetaData secRoles = jbossWeb.getSecurityRoles();
      assertEquals(6, secRoles.size());
      SecurityRoleMetaData role1 = secRoles.get("AuthorizedUser");
      assertNotNull(role1);
      assertEquals("security-role1", role1.getId());
      assertEquals("AuthorizedUser", role1.getRoleName());
      assertEquals("An AuthorizedUser is one with a valid username and password", getDescription(role1.getDescriptions()));
      assertEquals(null, role1.getPrincipals());
      SecurityRoleMetaData role2 = secRoles.get("ServletUserRole");
      assertEquals("security-role2", role2.getId());
      assertEquals("ServletUserRole", role2.getRoleName());
      assertEquals("A role used by the UserInRoleServlet", getDescription(role2.getDescriptions()));
      assertEquals(null, role2.getPrincipals());
      SecurityRoleMetaData role3 = secRoles.get("InternalUser");
      assertEquals("security-role3", role3.getId());
      assertEquals("InternalUser", role3.getRoleName());
      assertEquals("InternalUser is private app role", getDescription(role3.getDescriptions()));
      assertEquals(null, role3.getPrincipals());
      SecurityRoleMetaData role4 = secRoles.get("ExtraRole1");
      assertEquals("security-role4", role4.getId());
      assertEquals("ExtraRole1", role4.getRoleName());
      assertEquals("ExtraRole1 is an extra role added to a run-as principal", getDescription(role4.getDescriptions()));
      assertEquals(set("UnsecureRunAsServletWithPrincipalNameAndRolesPrincipal"), role4.getPrincipals());
      SecurityRoleMetaData role5 = secRoles.get("ExtraRole2");
      assertEquals("security-role5", role5.getId());
      assertEquals("ExtraRole2", role5.getRoleName());
      assertEquals("ExtraRole2 is an extra role added to a run-as principal", getDescription(role5.getDescriptions()));
      assertEquals(set("ExtraRole2Principal1", "ExtraRole2Principal2"), role5.getPrincipals());
      SecurityRoleMetaData role6 = secRoles.get("NonExistentRole");
      assertEquals("security-role6", role6.getId());
      assertEquals("NonExistentRole", role6.getRoleName());
      assertEquals("Role that does not exist", getDescription(role6.getDescriptions()));
      assertEquals(null, role6.getPrincipals());

      assertEquals(7, jbossWeb.getEnvironmentEntries().size());
      EnvironmentEntryMetaData env1 = jbossWeb.getEnvironmentEntryByName("Ints/i0");
      assertEquals("Ints/i0", env1.getEnvEntryName());
      assertEquals("java.lang.Integer", env1.getType());
      assertEquals("0", env1.getValue());
      EnvironmentEntryMetaData env7 = jbossWeb.getEnvironmentEntryByName("ejb/catalog/CatalogDAOClass");
      assertEquals("env7", env7.getId());
      assertEquals("ejb/catalog/CatalogDAOClass", env7.getEnvEntryName());
      assertEquals("An entry with a class name", getDescription(env7.getDescriptions()));
      assertEquals("java.lang.String", env7.getType());
      assertEquals("com.sun.model.dao.CatalogDAOImpl", env7.getValue());

      assertEquals(13, jbossWeb.getEjbReferences().size());
      // ejb/bean0
      EJBReferenceMetaData ejb1 = jbossWeb.getEjbReferenceByName("ejb/bean0");
      assertEquals("ejb1", ejb1.getId());
      assertEquals("ejb/bean0", ejb1.getEjbRefName());
      assertEquals(EJBReferenceType.Session, ejb1.getEjbRefType());
      assertEquals("org.jboss.test.web.interfaces.StatelessSessionHome", ejb1.getHome());
      assertEquals("org.jboss.test.web.interfaces.StatelessSession", ejb1.getRemote());
      assertEquals("ENCBean0", ejb1.getLink());
      assertEquals(null, ejb1.getJndiName());
      // ejb/bean1
      EJBReferenceMetaData ejb4 = jbossWeb.getEjbReferenceByName("ejb/bean3");
      assertEquals("ejb4", ejb4.getId());
      assertEquals("ejb/bean3", ejb4.getEjbRefName());
      assertEquals(EJBReferenceType.Session, ejb4.getEjbRefType());
      assertEquals("org.jboss.test.web.interfaces.StatelessSessionHome", ejb4.getHome());
      assertEquals("org.jboss.test.web.interfaces.StatelessSession", ejb4.getRemote());
      assertEquals(null, ejb4.getLink());
      assertEquals("jbosstest/ejbs/UnsecuredEJB", ejb4.getJndiName());
      assertEquals("jbosstest/ejbs/UnsecuredEJB", ejb4.getMappedName());
      jbossWeb.getEjbReferenceByName("ejb/RelativeBean");

      assertEquals(8, jbossWeb.getEjbLocalReferences().size());
      EJBLocalReferenceMetaData local3 = jbossWeb.getEjbLocalReferenceByName("ejb/local/bean3");
      assertEquals("local3", local3.getId());
      assertEquals("ejb/local/bean3", local3.getEjbRefName());
      assertEquals(EJBReferenceType.Session, local3.getEjbRefType());
      assertEquals("org.jboss.test.web.interfaces.StatelessSessionLocalHome", local3.getLocalHome());
      assertEquals("org.jboss.test.web.interfaces.StatelessSessionLocal", local3.getLocal());
      assertEquals(null, local3.getLink());
      assertEquals("jbosstest/ejbs/local/ENCBean1", local3.getJndiName());
      assertEquals("jbosstest/ejbs/local/ENCBean1", local3.getMappedName());
      // ejb/UnsecureRunAsServletWithPrincipalNameAndRolesTarget
      EJBLocalReferenceMetaData local8 = jbossWeb.getEjbLocalReferenceByName("ejb/UnsecureRunAsServletWithPrincipalNameAndRolesTarget");
      assertEquals("local8", local8.getId());
      assertEquals("ejb/UnsecureRunAsServletWithPrincipalNameAndRolesTarget", local8.getEjbRefName());
      assertEquals(EJBReferenceType.Session, local8.getEjbRefType());
      assertEquals("org.jboss.test.web.interfaces.RunAsTargetLocalHome", local8.getLocalHome());
      assertEquals("org.jboss.test.web.interfaces.RunAsTargetLocal", local8.getLocal());
      assertEquals("UnsecureRunAsServletWithPrincipalNameAndRolesTarget", local8.getLink());
      assertEquals(null, local8.getJndiName());

      // mdr/ConsumesLink
      assertEquals(3, jbossWeb.getMessageDestinationReferences().size());
      MessageDestinationReferenceMetaData mref1 = jbossWeb.getMessageDestinationReferenceByName("mdr/ConsumesLink");
      assertEquals("msgref1", mref1.getId());
      assertEquals("mdr/ConsumesLink", mref1.getMessageDestinationRefName());
      assertEquals("javax.jms.Queue", mref1.getType());
      assertEquals(MessageDestinationUsageType.Consumes, mref1.getMessageDestinationUsage());
      assertEquals("TestQueue", mref1.getLink());
      // mdr/ConsumesProducesJNDIName
      MessageDestinationReferenceMetaData mref3 = jbossWeb.getMessageDestinationReferenceByName("mdr/ConsumesProducesJNDIName");
      assertEquals("msgref3", mref3.getId());
      assertEquals("mdr/ConsumesProducesJNDIName", mref3.getMessageDestinationRefName());
      assertEquals("javax.jms.Queue", mref3.getType());
      assertEquals(MessageDestinationUsageType.ConsumesProduces, mref3.getMessageDestinationUsage());
      assertEquals(null, mref3.getLink());
      assertEquals("queue/A", mref3.getJndiName());
      assertEquals("queue/A", mref3.getMappedName());

      assertEquals(2, jbossWeb.getMessageDestinations().size());
      MessageDestinationMetaData msgdest1 = jbossWeb.getMessageDestination("TestQueue");
      assertEquals("msgdest1", msgdest1.getId());
      assertEquals("A TestQueue destination", msgdest1.getDescriptionGroup().getDescription());
      assertEquals("TestQueue", msgdest1.getMessageDestinationName());
      assertEquals("queue/testQueue", msgdest1.getJndiName());
      assertEquals("queue/testQueue", msgdest1.getMappedName());
      MessageDestinationMetaData msgdest2 = jbossWeb.getMessageDestination("TestTopic");
      assertEquals("msgdest2", msgdest2.getId());
      assertEquals("A TestTopic destination", msgdest2.getDescriptionGroup().getDescription());
      assertEquals("TestTopic", msgdest2.getMessageDestinationName());
      assertEquals("topic/testTopic", msgdest2.getJndiName());
      assertEquals("topic/testTopic", msgdest2.getMappedName());

      // servlets
      assertEquals(30, jbossWeb.getServlets().size());
      JBossServletMetaData servlet1 = jbossWeb.getServletByName("APIServlet");
      assertNotNull(servlet1);
      assertEquals("servlet1", servlet1.getId());
      assertEquals("org.jboss.test.web.servlets.APIServlet", servlet1.getServletClass());
      JBossServletMetaData servlet2 = jbossWeb.getServletByName("ClasspathServlet");
      assertNotNull(servlet2);
      assertEquals("servlet2", servlet2.getId());
      assertEquals("org.jboss.test.web.servlets.ClasspathServlet", servlet2.getServletClass());
      assertEquals(1, servlet2.getLoadOnStartup());
      // servlet10
      JBossServletMetaData servlet10 = jbossWeb.getServletByName("EJBOnStartupServlet");
      assertNotNull(servlet10);
      assertEquals("servlet10", servlet10.getId());
      assertEquals("EJBOnStartupServlet", servlet10.getServletName());
      assertEquals("org.jboss.test.web.servlets.EJBOnStartupServlet", servlet10.getServletClass());
      assertEquals(1, servlet10.getLoadOnStartup());
      List<ParamValueMetaData> s10params = servlet10.getInitParam();
      assertEquals(1, s10params.size());
      ParamValueMetaData s10p0 = s10params.get(0);
      assertEquals("failOnError", s10p0.getParamName());
      assertEquals("false", s10p0.getParamValue());
      // servlet19
      JBossServletMetaData servlet19 = jbossWeb.getServletByName("UnsecureRunAsServletWithPrincipalNameAndRoles");
      assertNotNull(servlet19);
      assertEquals("servlet19", servlet19.getId());
      assertEquals("UnsecureRunAsServletWithPrincipalNameAndRoles", servlet19.getServletName());
      assertEquals("org.jboss.test.web.servlets.UnsecureRunAsServlet", servlet19.getServletClass());
      List<ParamValueMetaData> s19params = servlet19.getInitParam();
      assertEquals(1, s19params.size());
      ParamValueMetaData s19p0 = s19params.get(0);
      assertEquals("ejbName", s19p0.getParamName());
      assertEquals("ejb/UnsecureRunAsServletWithPrincipalNameAndRolesTarget", s19p0.getParamValue());
      RunAsMetaData s19RunAs = servlet19.getRunAs();
      assertEquals("Assume an InternalUser role to access a private EJB", getDescription(s19RunAs.getDescriptions()));
      assertEquals("InternalUser", s19RunAs.getRoleName());
      assertEquals("UnsecureRunAsServletWithPrincipalNameAndRolesPrincipal", servlet19.getRunAsPrincipal());
      RunAsIdentityMetaData s19RunAsID = jbossWeb.getRunAsIdentity("UnsecureRunAsServletWithPrincipalNameAndRoles");
      assertEquals("UnsecureRunAsServletWithPrincipalNameAndRolesPrincipal", s19RunAsID.getPrincipalName());
      Set<String> s19RunAsPrincipalRoles = jbossWeb.getSecurityRoles().getSecurityRoleNamesByPrincipal("UnsecureRunAsServletWithPrincipalNameAndRolesPrincipal");
      assertEquals(set("ExtraRole1"), s19RunAsPrincipalRoles);
      assertEquals(set("ExtraRole1", "InternalUser"), s19RunAsID.getRunAsRoles());
      assertEquals(true, s19RunAsID.doesUserHaveRole("ExtraRole1"));
      assertEquals(true, s19RunAsID.doesUserHaveRole("InternalUser"));
      // servlet20
      JBossServletMetaData servlet20 = jbossWeb.getServletByName("UnsecureRunAsJsp");
      assertNotNull(servlet20);
      assertEquals("servlet20", servlet20.getId());
      assertEquals("UnsecureRunAsJsp", servlet20.getServletName());
      assertEquals(null, servlet20.getServletClass());
      assertEquals("/runAs.jsp", servlet20.getJspFile());
      RunAsMetaData s20RunAs = servlet20.getRunAs();
      assertEquals("Assume an InternalUser role to access a private EJB", getDescription(s19RunAs.getDescriptions()));
      assertEquals("InternalUser", s20RunAs.getRoleName());
      assertEquals(null, servlet20.getRunAsPrincipal());
      RunAsIdentityMetaData s20RunAsID = jbossWeb.getRunAsIdentity("UnsecureRunAsJsp");
      assertEquals("anonymous", s20RunAsID.getPrincipalName());
      assertEquals(set("InternalUser"), s20RunAsID.getRunAsRoles());
      assertEquals(true, s20RunAsID.doesUserHaveRole("InternalUser"));
      // servlet27
      JBossServletMetaData servlet27 = jbossWeb.getServletByName("UserInRoleServlet");
      assertEquals("servlet27", servlet27.getId());
      assertEquals("UserInRoleServlet", servlet27.getServletName());
      assertEquals("org.jboss.test.web.servlets.UserInRoleServlet", servlet27.getServletClass());
      List<ParamValueMetaData> s27params = servlet27.getInitParam();
      assertEquals(2, s27params.size());
      ParamValueMetaData s27p0 = s27params.get(0);
      assertEquals("expectedUserRoles", s27p0.getParamName());
      assertEquals("AuthorizedUser,ServletUser", s27p0.getParamValue());
      ParamValueMetaData s27p1 = s27params.get(1);
      assertEquals("unexpectedUserRoles", s27p1.getParamName());
      assertEquals("Anonymous", s27p1.getParamValue());
      SecurityRoleRefsMetaData s27RoleRefs = servlet27.getSecurityRoleRefs();
      assertEquals(1, s27RoleRefs.size());
      SecurityRoleRefMetaData s27ServletUser = s27RoleRefs.get("ServletUser");
      assertEquals("ServletUser", s27ServletUser.getRoleName());
      assertEquals("ServletUserRole", s27ServletUser.getRoleLink());
   }

   protected JBossWebMetaData unmarshal() throws Exception
   {
      return unmarshal(JBoss4xDTDWebMetaData.class);
   }
  
   protected String getDescription(Descriptions descriptions)
   {
      String desc = null;
      if(descriptions != null)
         desc = descriptions.value()[0].value();
      return desc;
   }
  
   protected Set<String> set(String...strings)
   {
      HashSet<String> set = new HashSet<String>();
      for(String s : strings)
         set.add(s);
      return set;
   }
}
TOP

Related Classes of org.jboss.test.metadata.web.JBossWebApp24UnitTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.