View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.module.xml.functional;
8   
9   import org.mule.api.MuleException;
10  import org.mule.api.MuleMessage;
11  import org.mule.module.client.MuleClient;
12  
13  import org.custommonkey.xmlunit.XMLAssert;
14  import org.junit.Test;
15  import org.w3c.dom.Document;
16  
17  import static org.junit.Assert.assertEquals;
18  import static org.junit.Assert.assertNotNull;
19  import static org.junit.Assert.assertTrue;
20  
21  public class XmlTransformerFunctionalTestCase extends AbstractXmlFunctionalTestCase
22  {
23  
24      public static final String SIMPLE_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<parent><child name=\"poot\"/></parent>";
25      public static final String CHILDLESS_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<parent/>";
26      public static final String SERIALIZED = "<org.mule.module.xml.functional.XmlTransformerFunctionalTestCase_-Parent>\n" +
27              "  <child/>\n" +
28              "</org.mule.module.xml.functional.XmlTransformerFunctionalTestCase_-Parent>";
29  
30      @Override
31      protected String getConfigResources()
32      {
33          return "org/mule/module/xml/xml-transformer-functional-test.xml";
34      }
35  
36      protected MuleClient sendXml() throws MuleException
37      {
38          MuleClient client = new MuleClient(muleContext);
39          client.dispatch("xml-in", SIMPLE_XML, null);
40          return client;
41      }
42  
43      protected MuleClient sendObject() throws MuleException
44      {
45          return sendObject("object-in");
46      }
47  
48      protected MuleClient sendObject(String endpoint) throws MuleException
49      {
50          MuleClient client = new MuleClient(muleContext);
51          client.dispatch(endpoint, new Parent(new Child()), null);
52          return client;
53      }
54  
55      @Test
56      public void testXmlOut() throws Exception
57      {
58          String xml = (String) request(sendXml(), "xml-out", String.class);
59          XMLAssert.assertXMLEqual(SIMPLE_XML, xml);
60      }
61  
62      @Test
63      public void testXmlDomOut() throws MuleException
64      {
65          Document dom = (Document) request(sendXml(), "xml-dom-out", Document.class);
66          assertEquals("parent", dom.getDocumentElement().getLocalName());
67      }
68  
69      @Test
70      public void testXmlXsltOut() throws Exception
71      {
72          String xml = (String) request(sendXml(), "xml-xslt-out-string", String.class);
73          XMLAssert.assertXMLEqual(CHILDLESS_XML, xml);
74      }
75  
76      @Test
77      public void testDomXmlOut() throws Exception
78      {
79          String xml = (String) request(sendXml(), "dom-xml-out", String.class);
80          XMLAssert.assertXMLEqual(SIMPLE_XML, xml);
81      }
82  
83      @Test
84      public void testObjectOut() throws Exception
85      {
86          request(sendObject(), "object-out", Parent.class);
87      }
88  
89      @Test
90      public void testObjectXmlOut() throws Exception
91      {
92          String xml = (String) request(sendObject(), "object-xml-out", String.class);
93          System.out.println(xml);
94          XMLAssert.assertXMLEqual(SERIALIZED, xml);
95      }
96  
97      // MULE-5038
98      //@Test
99      //public void testXmlObjectOut() throws MuleException
100     //{
101     //    request(sendObject(), "xml-object-out", Parent.class);
102     //}
103 
104     @Test
105     public void testXmlJxpathOut() throws Exception
106     {
107         String xml = (String) request(sendXml(), "xml-jxpath-out", String.class);
108         assertEquals("1", xml);
109     }
110 
111     protected Object request(MuleClient client, String endpoint, Class clazz) throws MuleException
112     {
113         MuleMessage message = client.request(endpoint, TIMEOUT);
114         assertNotNull(message);
115         assertNotNull(message.getPayload());
116         assertTrue(message.getPayload().getClass().getName(), clazz.isAssignableFrom(message.getPayload().getClass()));
117         return message.getPayload();
118     }
119 
120     public static class Parent
121     {
122         private Child child;
123 
124         public Parent()
125         {
126             this(null);
127         }
128 
129         public Parent(Child child)
130         {
131             setChild(child);
132         }
133 
134         public Child getChild()
135         {
136             return child;
137         }
138 
139         public void setChild(Child child)
140         {
141             this.child = child;
142         }
143     }
144 
145     public static class Child
146     {
147         // nothing here
148     }
149 
150 }