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.test.integration.client;
8   
9   import org.mule.api.MuleMessage;
10  import org.mule.api.endpoint.InboundEndpoint;
11  import org.mule.module.client.MuleClient;
12  import org.mule.tck.junit4.FunctionalTestCase;
13  import org.mule.tck.junit4.rule.DynamicPort;
14  import org.mule.tck.testmodels.services.Person;
15  
16  import org.junit.Rule;
17  import org.junit.Test;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertNotNull;
21  import static org.junit.Assert.assertTrue;
22  
23  public class MuleClientAxisTestCase extends FunctionalTestCase
24  {
25  
26      @Rule
27      public DynamicPort dynamicPort1 = new DynamicPort("port1");
28  
29      @Rule
30      public DynamicPort dynamicPort2 = new DynamicPort("port2");
31  
32      @Rule
33      public DynamicPort dynamicPort3 = new DynamicPort("port3");
34      
35      @Override
36      protected String getConfigResources()
37      {
38          return "org/mule/test/integration/client/axis-client-test-mule-config.xml";
39      }
40  
41      /**
42       * Get the Mule address for a Mule client call
43       * 
44       * @param muleClient The MuleClient instance to use
45       * @param inboundEndpointName The inbound endpoint which contains the address
46       * @return A String of the 'Mule' address, which in this case should include
47       *         'axis" + 'http://<url>'
48       */
49      private String getMuleAddress(MuleClient muleClient, String inboundEndpointName)
50      {
51          return ((InboundEndpoint) muleClient.getMuleContext().getRegistry().lookupObject(inboundEndpointName)).getProtocol()
52                 + ":"
53                 + ((InboundEndpoint) muleClient.getMuleContext().getRegistry().lookupObject(
54                     inboundEndpointName)).getAddress();
55      }
56      
57      @Test
58      public void testRequestResponse() throws Throwable
59      {
60          MuleClient client = new MuleClient(muleContext);
61          MuleMessage result = client.send(getMuleAddress(client, "inMyComponent2") + "/mycomponent2?method=echo",
62              "test", null);
63          assertNotNull(result);
64          assertEquals("test", result.getPayloadAsString());
65      }
66  
67      @Test
68      public void testRequestResponseComplex() throws Exception
69      {
70          MuleClient client = new MuleClient(muleContext);
71  
72          MuleMessage result = client.send(
73              getMuleAddress(client, "inMyComponent3") + "/mycomponent3?method=getPerson", "Fred", null);
74          assertNotNull(result);
75          logger.debug(result.getPayload());
76          assertTrue(result.getPayload() instanceof Person);
77          assertEquals("Fred", ((Person)result.getPayload()).getFirstName());
78          assertEquals("Flintstone", ((Person)result.getPayload()).getLastName());
79      }
80  
81      @Test
82      public void testRequestResponseComplex2() throws Exception
83      {
84          MuleClient client = new MuleClient(muleContext);
85  
86          String[] args = new String[]{"Betty", "Rubble"};
87          MuleMessage result = client.send(
88              getMuleAddress(client, "inMyComponent3") + "/mycomponent3?method=addPerson", args, null);
89          assertNotNull(result);
90          assertTrue(result.getPayload() instanceof Person);
91          assertEquals("Betty", ((Person)result.getPayload()).getFirstName());
92          assertEquals("Rubble", ((Person) result.getPayload()).getLastName());
93  
94          // do a receive
95          result = client.send(getMuleAddress(client, "inMyComponent3") + "/mycomponent3?method=getPerson",
96              "Betty", null);
97          assertNotNull(result);
98          assertTrue(result.getPayload() instanceof Person);
99          assertEquals("Betty", ((Person)result.getPayload()).getFirstName());
100         assertEquals("Rubble", ((Person)result.getPayload()).getLastName());
101 
102     }
103 
104     @Test
105     public void testRequestWithComplexArg() throws Exception
106     {
107         MuleClient client = new MuleClient(muleContext);
108         Person person = new Person("Joe", "Blow");
109         String uri = getMuleAddress(client, "inMyComponent3") + "/mycomponent3?method=addPerson";
110         client.send(uri, person, null);
111         uri = getMuleAddress(client, "inMyComponent3") +  "/mycomponent3?method=getPerson";
112         MuleMessage result = client.send(uri, "Joe", null);
113         assertNotNull(result);
114         assertTrue(result.getPayload() instanceof Person);
115         assertEquals("Joe", ((Person)result.getPayload()).getFirstName());
116         assertEquals("Blow", ((Person)result.getPayload()).getLastName());
117     }
118 
119 }