View Javadoc

1   /*
2    * $Id: AxisMuleMessageFactoryTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.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.transport.soap.axis;
12  
13  import org.mule.api.MuleMessage;
14  import org.mule.api.transport.MuleMessageFactory;
15  import org.mule.transport.AbstractMuleMessageFactoryTestCase;
16  import org.mule.transport.soap.axis.mock.MockAxisEngine;
17  import org.mule.transport.soap.axis.mock.MockEngineConfiguration;
18  
19  import org.apache.axis.EngineConfiguration;
20  import org.apache.axis.Message;
21  import org.apache.axis.MessageContext;
22  
23  public class AxisMuleMessageFactoryTestCase extends AbstractMuleMessageFactoryTestCase
24  {
25      private static final String XML_WITH_HEADERS =
26            "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
27          + "    <soapenv:Header>"
28          + "        <mule:header soapenv:actor=\"http://www.muleumo.org/providers/soap/1.0\" soapenv:mustUnderstand=\"0\" xmlns:mule=\"http://www.muleumo.org/providers/soap/1.0\">"        
29          + "            <mule:MULE_REPLYTO>replyTo</mule:MULE_REPLYTO>"
30          + "            <mule:MULE_CORRELATION_ID>004a1cf9-3e7e-44b3-9b7f-778fae4fa0d2</mule:MULE_CORRELATION_ID>"
31          + "            <mule:MULE_CORRELATION_GROUP_SIZE>42</mule:MULE_CORRELATION_GROUP_SIZE>"
32          + "            <mule:MULE_CORRELATION_SEQUENCE>-42</mule:MULE_CORRELATION_SEQUENCE>"
33          + "        </mule:header>"
34          + "    </soapenv:Header>"
35          + "    <soapenv:Body>"
36          + "        <echo soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
37          + "            <value0 xsi:type=\"soapenc:string\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"
38          + "                Hello"
39          + "            </value0>"
40          + "        </echo>"
41          + "    </soapenv:Body>"
42          + "</soapenv:Envelope>";
43      
44      public AxisMuleMessageFactoryTestCase()
45      {
46          super();
47          runUnsuppoprtedTransportMessageTest = false;
48      }
49      
50      @Override
51      protected void doSetUp() throws Exception
52      {
53          super.doSetUp();
54          setupAxisMessageContext();
55      }
56  
57      @Override
58      protected MuleMessageFactory doCreateMuleMessageFactory()
59      {
60          return new AxisMuleMessageFactory(muleContext);
61      }
62  
63      @Override
64      protected Object getValidTransportMessage() throws Exception
65      {
66          return new Message(XML_WITH_HEADERS);
67      }
68      
69      public void testSoapHeaders() throws Exception
70      {
71          MuleMessageFactory factory = createMuleMessageFactory();
72          Object payload = getValidTransportMessage();
73          MuleMessage message = factory.create(payload, encoding);
74          assertEquals(payload, message.getPayload());
75          assertEquals("replyTo", message.getReplyTo());
76          assertEquals(42, message.getCorrelationGroupSize());
77          assertEquals(-42, message.getCorrelationSequence());
78          assertEquals("004a1cf9-3e7e-44b3-9b7f-778fae4fa0d2", message.getCorrelationId());
79      }
80      
81      private void setupAxisMessageContext()
82      {
83          EngineConfiguration configuration = new MockEngineConfiguration();
84          MockAxisEngine engine = new MockAxisEngine(configuration);
85          MessageContext messageContext = new MessageContext(engine);
86          MockAxisEngine.setCurrentMessageContext(messageContext);
87          
88          Message soapMessage = new Message(XML_WITH_HEADERS);
89          messageContext.setMessage(soapMessage);        
90      }
91  }