Package org.jboss.portletbridge.util

Source Code of org.jboss.portletbridge.util.FacesConfigTest

/**
*
*/
package org.jboss.portletbridge.util;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Enumeration;
import java.util.Map;
import java.util.Vector;

import javax.faces.webapp.FacesServlet;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;

import junit.framework.TestCase;

import org.apache.shale.test.mock.MockServletContext;
import org.jboss.portletbridge.MockPortletContext;
import org.xml.sax.SAXException;

/**
* @author asmirnov
*
*/
public class FacesConfigTest extends TestCase {

  /* (non-Javadoc)
   * @see junit.framework.TestCase#setUp()
   */
  protected void setUp() throws Exception {
    super.setUp();
  }

  /* (non-Javadoc)
   * @see junit.framework.TestCase#tearDown()
   */
  protected void tearDown() throws Exception {
    super.tearDown();
  }

  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#parse(javax.portlet.PortletContext)}.
   */
  public void testParsePortletContext() {
    FacesConfig config = new FacesConfig();
    MockPortletContext context = new MockPortletContext(new MockServletContext(){
      @Override
      public InputStream getResourceAsStream(String path) {
        return this.getClass().getResourceAsStream("/test"+path);
      }
     
      @Override
      public String getInitParameter(String name) {
        if(FacesServlet.CONFIG_FILES_ATTR.equals(name)){
          return "/WEB-INF/a-faces-config.xml ,/WEB-INF/b-faces-config.xml";
        }
        return super.getInitParameter(name);
      }
    });
    config.parse(context);
    assertEquals(6, config.getExcludedAttributes().size());
  }

  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#parseDefault(javax.portlet.PortletContext)}.
   */
  public void testParseDefault() throws Exception {
    FacesConfig config = new FacesConfig();
    MockPortletContext context = new MockPortletContext(new MockServletContext(){
      @Override
      public InputStream getResourceAsStream(String path) {
        return this.getClass().getResourceAsStream("/test"+path);
      }
     
      @Override
      public String getInitParameter(String name) {
        if(FacesServlet.CONFIG_FILES_ATTR.equals(name)){
          return "/WEB-INF/a-faces-config.xml ,/WEB-INF/b-faces-config.xml";
        }
        return super.getInitParameter(name);
      }
    });
    config.parseDefault(context);
    assertEquals(2, config.getExcludedAttributes().size());
  }

  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#parseOptional(javax.portlet.PortletContext)}.
   */
  public void testParseOptional() throws Exception {
    FacesConfig config = new FacesConfig();
    MockPortletContext context = new MockPortletContext(new MockServletContext(){
      @Override
      public InputStream getResourceAsStream(String path) {
        return this.getClass().getResourceAsStream("/test"+path);
      }
     
      @Override
      public String getInitParameter(String name) {
        if(FacesServlet.CONFIG_FILES_ATTR.equals(name)){
          return "/WEB-INF/a-faces-config.xml ,/WEB-INF/b-faces-config.xml";
        }
        return super.getInitParameter(name);
      }
    });
    config.parseOptional(context);
    assertEquals(4, config.getExcludedAttributes().size());
  }

  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#parseClasspath(javax.portlet.PortletContext)}.
   * @throws Exception
   */
  public void testParseClasspath() throws Exception {
    ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
    try{
    ClassLoader classLoader = this.getClass().getClassLoader();
    ClassLoader classLoaderWrapper = new ClassLoader(classLoader){
     
      @Override
      public Enumeration<URL> getResources(String name)
          throws IOException {
        if("META-INF/faces-config.xml".equals(name)){
          Vector<URL> configs = new Vector<URL>(2);
          configs.add(getResource("test/WEB-INF/a-faces-config.xml"));
          configs.add(getResource("test/WEB-INF/b-faces-config.xml"));
          return configs.elements();
        }
        return super.getResources(name);
      }
    };
    Thread.currentThread().setContextClassLoader(classLoaderWrapper);
    FacesConfig config = new FacesConfig();
    MockPortletContext context = new MockPortletContext(new MockServletContext());
    config.parseClasspath(context);
    assertEquals(4, config.getExcludedAttributes().size());
    } finally {
      Thread.currentThread().setContextClassLoader(contextClassLoader);
    }
   
  }

  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#parse(java.io.InputStream)}.
   * @throws ParsingException
   */
  public void testParseInputStream() throws Exception {
    InputStream facesConfigResource = this.getClass().getResourceAsStream("/test/WEB-INF/faces-config.xml");
    FacesConfig config = new FacesConfig();
    config.parse(facesConfigResource);
    assertEquals(2, config.getExcludedAttributes().size());
    assertTrue(config.getExcludedAttributes().contains("foo.bar"));
    assertTrue(config.getExcludedAttributes().contains("foo.baz.*"));
  }

  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#parse(java.io.InputStream)}.
   * @throws ParsingException
   */
  public void testPublicParameters() throws Exception {
    InputStream facesConfigResource = this.getClass().getResourceAsStream("/test/WEB-INF/faces-config-params.xml");
    FacesConfig config = new FacesConfig();
    config.parse(facesConfigResource);
    Map<String, String> mapping = config.getParameterMapping();
    assertEquals(3, mapping.size());
    assertEquals("UserBean.lastName", mapping.get("name"));
    assertEquals("AnotherUser.name", mapping.get("AnotherPortlet:name"));
  }
  /**
   * Test method for {@link org.jboss.portletbridge.util.FacesConfig#getParser()}.
   * @throws SAXException
   * @throws ParserConfigurationException
   */
  public void testGetParser() throws Exception {
    FacesConfig config = new FacesConfig();
    SAXParser parser = config.getParser();
    assertNotSame(parser, config.getParser());
  }

}
TOP

Related Classes of org.jboss.portletbridge.util.FacesConfigTest

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.