/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jboss.jsfunit.analysis.util; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import junit.framework.TestCase; import org.jboss.jsfunit.analysis.StreamProvider; import org.jboss.jsfunit.analysis.StringStreamProvider; import org.jboss.jsfunit.analysis.Utilities; import org.jboss.jsfunit.analysis.util.ConfigUtils.ConfigItemType; import org.w3c.dom.Document; /** * A ConfigUtilsTest. * * @author <a href="adrian@jboss.com">Adrian Brock</a> * @version $Revision: 1.1 $ */ public class ConfigUtilsTest extends TestCase { private static final String DEFAULT_CONFIGFILE_CORRECT = "<render-kit>" + "<renderer><component-family/><renderer-type>testComp</renderer-type>" + "<renderer-class>FooComp</renderer-class></renderer>" + "</render-kit>"; private static final String MY_CONFIGFILE_CORRECT = "<render-kit>" + "<render-kit-id>myRenderKit</render-kit-id><render-kit-class>Foo</render-kit-class>" + "<renderer><component-family/><renderer-type>testComp</renderer-type>" + "<renderer-class>FooComp</renderer-class></renderer>" + "</render-kit>"; private List<String> dummyPaths = null; private Document emptyConfigFile = null; private Document defaultConfigFile = null; private Document myConfigFile = null; protected void setUp() throws Exception { super.setUp(); dummyPaths = new ArrayList<String>(); dummyPaths.add((String) (Utilities.STUBBED_RESOURCEPATH.toArray()[0])); emptyConfigFile = getDomDocument(new ByteArrayInputStream(Utilities.getFacesConfig("").getBytes())); defaultConfigFile = getDomDocument(new ByteArrayInputStream(Utilities.getFacesConfig(DEFAULT_CONFIGFILE_CORRECT).getBytes())); myConfigFile = getDomDocument(new ByteArrayInputStream(Utilities.getFacesConfig(MY_CONFIGFILE_CORRECT).getBytes())); } protected void tearDown() throws Exception { super.tearDown(); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#isConfigured(org.jboss.jsfunit.analysis.util.ConfigUtils.ConfigItemType, java.lang.String, boolean)}. */ public void testIsConfigured() { ConfigUtils configUtils = new ConfigUtils(); configUtils.setConfigFilePaths(dummyPaths); StreamProvider streamProvider = new StringStreamProvider(Utilities.getFacesConfig(MY_CONFIGFILE_CORRECT)); configUtils.setStreamProvider(streamProvider); assertTrue(configUtils.isConfigured(ConfigItemType.RENDER_KIT, "myRenderKit", false)); configUtils.setConfigFilePaths(new ArrayList<String>()); assertTrue(configUtils.isConfigured(ConfigItemType.RENDER_KIT, "myRenderKit", false)); assertFalse(configUtils.isConfigured(ConfigItemType.RENDER_KIT, "myClassPathRenderKit", false)); assertTrue(configUtils.isConfigured(ConfigItemType.RENDER_KIT, "myClassPathRenderKit", true)); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#isConfiguredConfigItemType(org.jboss.jsfunit.analysis.util.ConfigUtils.ConfigItemType, java.lang.String, org.w3c.dom.Document, java.lang.String)}. */ public void testIsConfiguredConfigItemType() { assertFalse(new ConfigUtils().isConfiguredConfigItemType(ConfigItemType.RENDER_KIT, "notFound", myConfigFile, "my")); assertTrue(new ConfigUtils().isConfiguredConfigItemType(ConfigItemType.RENDER_KIT, "myRenderKit", myConfigFile, "my")); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#extractRenderkitIdsDefined(org.w3c.dom.Document, java.lang.String)}. */ public void testExtractRenderkitIdsDefined() { List<String> renderKitIdsEmpty = new ConfigUtils().extractRenderkitIdsDefined(emptyConfigFile, "empty"); assertNotNull(renderKitIdsEmpty); assertEquals(0, renderKitIdsEmpty.size()); List<String> renderKitIdsDefault = new ConfigUtils().extractRenderkitIdsDefined(defaultConfigFile, "default"); assertNotNull(renderKitIdsDefault); assertEquals(1, renderKitIdsDefault.size()); assertEquals("default", renderKitIdsDefault.get(0)); List<String> renderKitIds = new ConfigUtils().extractRenderkitIdsDefined(myConfigFile, "my"); assertNotNull(renderKitIds); assertEquals(1, renderKitIds.size()); assertEquals("myRenderKit", renderKitIds.get(0)); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#getConfigFilePaths()}. */ public void testGetConfigFilePaths() { ConfigUtils configUtils = new ConfigUtils(); List<String> configFilePaths = configUtils.getConfigFilePaths(); assertNotNull(configFilePaths); assertTrue(configFilePaths.isEmpty()); assertEquals(0,configFilePaths.size()); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#setConfigFilePaths(java.util.List)}. */ public void testSetConfigFilePaths() { ConfigUtils configUtils = new ConfigUtils(); configUtils.setConfigFilePaths(dummyPaths); List<String> configFilePaths = configUtils.getConfigFilePaths(); assertNotNull(configFilePaths); assertSame(dummyPaths, configFilePaths); assertFalse(configFilePaths.isEmpty()); assertEquals(1,configFilePaths.size()); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#getConfigFileDoms()}. */ public void testGetConfigFileDoms() { ConfigUtils configUtils = new ConfigUtils(); Map<String, Document> configFileDoms =configUtils.getConfigFileDoms(); assertNotNull(configFileDoms); assertTrue(configFileDoms.isEmpty()); assertEquals(0,configFileDoms.size()); } /** * Test method for {@link org.jboss.jsfunit.analysis.util.ConfigUtils#setConfigFileDoms(java.util.Map)}. */ public void testSetConfigFileDoms() { Map<String, Document> configFileDoms = new HashMap<String, Document>(); configFileDoms.put("Dummy", defaultConfigFile); ConfigUtils configUtils = new ConfigUtils(); configUtils.setConfigFileDoms(configFileDoms); Map<String, Document> configFileDomsReturnded =configUtils.getConfigFileDoms(); assertNotNull(configFileDomsReturnded); assertFalse(configFileDomsReturnded.isEmpty()); assertEquals(1,configFileDomsReturnded.size()); assertSame(configFileDoms,configFileDomsReturnded); } public void testNullStreamProvider() { ConfigUtils configUtils = new ConfigUtils(); Object streamProvider = configUtils.getStreamProvider(); assertNotNull("ConfigUtils does not provide default StreamProvider", streamProvider); assertTrue("ConfigUtils does not provide default StreamProvider of correct implementation", (streamProvider instanceof StreamProvider)); } public void testStreamProviderAccessors() { String facesConfig = Utilities.getFacesConfig(""); StreamProvider streamProvider = new StringStreamProvider(facesConfig); ConfigUtils testCase = new ConfigUtils(); testCase.setStreamProvider(streamProvider); StreamProvider streamProviderReturned = testCase.getStreamProvider(); assertNotNull("ConfigUtils does not returned passed StreamProvider", streamProviderReturned); assertSame("ConfigUtils does not returned passed StreamProvider", streamProvider, streamProviderReturned); } private Document getDomDocument(InputStream file) { DocumentBuilder builder = ParserUtils.getDocumentBuilder(); Document document = null; try { document = builder.parse(file); } catch (Exception e) { throw new RuntimeException("Could not parse document \n" + file.toString(), e); } return document; } }