1   /*
2    * $Id: XmlTransformerNamespaceHandlerTestCase.java 11631 2008-04-22 14:51:32Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.module.xml.config;
12  
13  import org.mule.api.MuleException;
14  import org.mule.api.transformer.Transformer;
15  import org.mule.module.xml.transformer.AbstractXmlTransformer;
16  import org.mule.module.xml.transformer.DomDocumentToXml;
17  import org.mule.module.xml.transformer.JXPathExtractor;
18  import org.mule.module.xml.transformer.ObjectToXml;
19  import org.mule.module.xml.transformer.XmlToDomDocument;
20  import org.mule.module.xml.transformer.XmlToObject;
21  import org.mule.module.xml.transformer.XsltTransformer;
22  import org.mule.tck.FunctionalTestCase;
23  import org.mule.transformer.AbstractTransformer;
24  
25  public class XmlTransformerNamespaceHandlerTestCase extends FunctionalTestCase
26  {
27  
28      protected String getConfigResources()
29      {
30          return "org/mule/module/xml/xml-transformer-namespace-test.xml";
31      }
32  
33      public void testDomToXml()
34      {
35          getAndTestTransformer("domToXml", DomDocumentToXml.class);
36      }
37  
38      public void testJXPathExtractor()
39      {
40          JXPathExtractor extractor = (JXPathExtractor) getAndTestTransformer("jxpathExtractor",
41              JXPathExtractor.class);
42          assertEquals("/expression", extractor.getExpression());
43          assertFalse(extractor.isSingleResult());
44      }
45  
46      public void testObjectToXml()
47      {
48          ObjectToXml objectToXml = (ObjectToXml) getAndTestTransformer("objectToXml", ObjectToXml.class);
49          assertTrue(objectToXml.isAcceptUMOMessage());
50      }
51  
52      public void testXmlToDom()
53      {
54          getAndTestTransformer("xmlToDom", XmlToDomDocument.class);
55      }
56  
57      public void testXmlToObject()
58      {
59          getAndTestTransformer("xmlToObject", XmlToObject.class);
60      }
61  
62      public void testXslt()
63      {
64          XsltTransformer xslt = (XsltTransformer) getAndTestTransformer("xslt", XsltTransformer.class);
65          assertEquals(10, xslt.getMaxActiveTransformers());
66          assertEquals(10, xslt.getMaxIdleTransformers());
67          assertEquals(CustomXsltTransformerFactory.class.getName(), xslt.getXslTransformerFactory());
68          assertEquals("file", xslt.getXslFile());
69          assertNotNull(xslt.getXslt());
70          String transform = xslt.getXslt();
71          assertTrue(transform.indexOf("test for this string in test") > -1);
72  
73          assertEquals("${header:foo}", xslt.getContextProperties().get("bar"));
74      }
75  
76      public void testDomToXmlOnEndpoint() throws MuleException
77      {
78          getAndTestEndpointTransformer("ep1", DomDocumentToXml.class);
79      }
80  
81      public void testJXPathExtractorOnEndpoint() throws MuleException
82      {
83          JXPathExtractor extractor = (JXPathExtractor) getAndTestEndpointTransformer("ep2",
84              JXPathExtractor.class);
85          assertEquals("/expression", extractor.getExpression());
86          assertFalse(extractor.isSingleResult());
87      }
88  
89      public void testObjectToXmlOnEndpoint() throws MuleException
90      {
91          ObjectToXml objectToXml = (ObjectToXml) getAndTestEndpointTransformer("ep3", ObjectToXml.class);
92          assertTrue(objectToXml.isAcceptUMOMessage());
93      }
94  
95      public void testXmlToDomOnEndpoint() throws MuleException
96      {
97          getAndTestEndpointTransformer("ep4", XmlToDomDocument.class);
98      }
99  
100     public void testXmlToObjectOnEndpoint() throws MuleException
101     {
102         getAndTestEndpointTransformer("ep5", XmlToObject.class);
103     }
104 
105     public void testXsltOnEndpoint() throws MuleException
106     {
107         XsltTransformer xslt = (XsltTransformer) getAndTestEndpointTransformer("ep6", XsltTransformer.class);
108         assertEquals(10, xslt.getMaxActiveTransformers());
109         assertEquals(10, xslt.getMaxIdleTransformers());
110         assertEquals(CustomXsltTransformerFactory.class.getName(), xslt.getXslTransformerFactory());
111         assertEquals("file", xslt.getXslFile());
112         assertNotNull(xslt.getXslt());
113         String transform = xslt.getXslt();
114         assertTrue(transform.indexOf("test for this string in test") > -1);
115 
116         assertEquals("${header:foo}", xslt.getContextProperties().get("bar"));
117     }
118     protected AbstractTransformer getAndTestTransformer(String name, Class clazz)
119     {
120         assertTrue(AbstractTransformer.class.isAssignableFrom(clazz));
121         Transformer object= muleContext.getRegistry().lookupTransformer(name);
122 
123         assertNotNull(object);
124         assertTrue(clazz.isAssignableFrom(object.getClass()));
125         AbstractTransformer transformer = (AbstractTransformer) object;
126         assertAbstractTransformerOk(transformer, name);
127         return transformer;
128     }
129     
130     protected AbstractTransformer getAndTestEndpointTransformer(String endpointName, Class clazz) throws MuleException
131     {
132         assertTrue(AbstractTransformer.class.isAssignableFrom(clazz));
133         assertEquals(1, muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(endpointName).getTransformers().size());
134         AbstractTransformer transformer= (AbstractTransformer) muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(endpointName).getTransformers().get(0);
135 
136         assertNotNull(transformer);
137         assertTrue(clazz.isAssignableFrom(transformer.getClass()));
138         return transformer;
139     }
140 
141     protected void assertAbstractTransformerOk(AbstractTransformer transformer, String name)
142     {
143         assertTrue(transformer.isIgnoreBadInput());
144         assertEquals(Object.class, transformer.getReturnClass());
145         assertEquals(name, transformer.getName());
146         // AbstractXmlTransformer instances have an output encoding
147         if (transformer instanceof AbstractXmlTransformer)
148         {
149             assertEquals("foo", ((AbstractXmlTransformer) transformer).getOutputEncoding());
150         }
151     }
152 
153 }