1
2
3
4
5
6
7
8
9
10
11 package org.mule.module.ws.construct;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.MessageExchangePattern;
15 import org.mule.api.MuleEvent;
16 import org.mule.api.MuleException;
17 import org.mule.api.MuleMessage;
18 import org.mule.api.endpoint.InboundEndpoint;
19 import org.mule.api.endpoint.OutboundEndpoint;
20 import org.mule.api.lifecycle.InitialisationException;
21 import org.mule.api.transport.Connector;
22 import org.mule.api.transport.MessageRequester;
23 import org.mule.api.transport.PropertyScope;
24 import org.mule.construct.AbstractFlowConstruct;
25 import org.mule.construct.AbstractFlowConstuctTestCase;
26 import org.mule.tck.MuleTestUtils;
27 import org.mule.transport.AbstractMessageRequester;
28 import org.mule.transport.AbstractMessageRequesterFactory;
29
30 import java.net.InetAddress;
31
32 public abstract class AbstractWSProxyTestCase extends AbstractFlowConstuctTestCase
33 {
34 protected Connector testConnector;
35 private WSProxy wsProxy;
36
37 @Override
38 protected void doSetUp() throws Exception
39 {
40 super.doSetUp();
41
42 final OutboundEndpoint testOutboundEndpoint = MuleTestUtils.getTestOutboundEndpoint(
43 MessageExchangePattern.REQUEST_RESPONSE, muleContext);
44 testConnector = testOutboundEndpoint.getConnector();
45 muleContext.getRegistry().registerConnector(testConnector);
46 testConnector.start();
47
48 wsProxy = newWSProxy(testOutboundEndpoint);
49 }
50
51 protected abstract WSProxy newWSProxy(OutboundEndpoint testOutboundEndpoint) throws Exception;
52
53 @Override
54 protected AbstractFlowConstruct getFlowConstruct() throws Exception
55 {
56 return wsProxy;
57 }
58
59 private void startWsProxy() throws InitialisationException, MuleException
60 {
61 wsProxy.initialise();
62 wsProxy.start();
63 }
64
65 public void testProcessNonHttpRequest() throws Exception
66 {
67 startWsProxy();
68
69 final MuleEvent response = directInboundMessageSource.process(MuleTestUtils.getTestInboundEvent(
70 "hello", muleContext));
71
72 assertEquals("hello", response.getMessageAsString());
73 }
74
75 public void testProcessHttpWsdlRequest() throws Exception
76 {
77 startWsProxy();
78
79 testConnector.setRequesterFactory(new AbstractMessageRequesterFactory()
80 {
81 @Override
82 public MessageRequester create(InboundEndpoint endpoint) throws MuleException
83 {
84 return new AbstractMessageRequester(endpoint)
85 {
86 @Override
87 protected MuleMessage doRequest(long timeout) throws Exception
88 {
89 assertEquals("test://test?wsdl", endpoint.getEndpointURI().toString());
90 return new DefaultMuleMessage("fake_wsdl localhost", muleContext);
91 }
92 };
93 }
94 });
95
96 final MuleEvent event = MuleTestUtils.getTestInboundEvent("hello", muleContext);
97 event.getMessage().setProperty("http.request", "test://foo?WSDL", PropertyScope.INBOUND);
98 final MuleEvent response = directInboundMessageSource.process(event);
99
100 assertEquals("fake_wsdl " + InetAddress.getLocalHost().getHostName(), response.getMessageAsString());
101 }
102
103 public void testProcessHttpServiceRequest() throws Exception
104 {
105 startWsProxy();
106 final MuleEvent event = MuleTestUtils.getTestInboundEvent("hello", muleContext);
107 event.getMessage().setProperty("http.request", "http://foo", PropertyScope.INBOUND);
108 final MuleEvent response = directInboundMessageSource.process(event);
109
110 assertEquals("hello", response.getMessageAsString());
111 }
112 }