1
2
3
4
5
6
7 package org.mule.test;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.MessageExchangePattern;
11 import org.mule.api.MuleContext;
12 import org.mule.api.MuleException;
13 import org.mule.api.MuleMessage;
14 import org.mule.api.endpoint.ImmutableEndpoint;
15 import org.mule.api.endpoint.InboundEndpoint;
16 import org.mule.api.endpoint.OutboundEndpoint;
17 import org.mule.endpoint.DynamicOutboundEndpoint;
18 import org.mule.module.client.MuleClient;
19 import org.mule.tck.junit4.AbstractMuleContextTestCase;
20
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.junit.Test;
25
26 import static org.junit.Assert.assertEquals;
27
28 public class EndpointURITestCase extends AbstractMuleContextTestCase
29 {
30
31 @Test
32 public void testEndpoints() throws Exception
33 {
34 Client client = new Client(muleContext);
35
36 EndpointUri[] uris =
37 {
38 new EndpointUri("vm://#[header:INBOUND:prop1]/#[header:INBOUND:prop2]", "vm://apple/orange"),
39 new EndpointUri("imap://mule%40mule.net:secretpassword@gmail.com:143"),
40 new EndpointUri("vm://bucket:somefiles?query=%7B%22filename%22%3A%22foo%22%7D"),
41 new EndpointUri("http://localhost:1313"),
42 new EndpointUri("http://localhost:1313?${foo}", "http://localhost:1313?$[foo]"),
43 new EndpointUri("vm://#[header:INBOUND:prop1]", "vm://apple"),
44 };
45
46 for (EndpointUri uri : uris)
47 {
48 if (!uri.isDynamic())
49 {
50 InboundEndpoint ei = client.getInboundEndpoint(uri.getUri());
51 uri.checkResultUri(ei);
52 }
53 if (!uri.getUri().startsWith("imap:"))
54 {
55 OutboundEndpoint oi = client.getOutboundEndpoint(uri.getUri());
56 uri.checkResultUri(oi);
57 }
58 }
59 }
60
61 static class Client extends MuleClient
62 {
63 Client(MuleContext context) throws MuleException
64 {
65 super(context);
66 }
67
68 @Override
69 public InboundEndpoint getInboundEndpoint(String uri) throws MuleException
70 {
71 return super.getInboundEndpoint(uri);
72 }
73
74 public OutboundEndpoint getOutboundEndpoint(String uri) throws MuleException
75 {
76 MessageExchangePattern mep = MessageExchangePattern.ONE_WAY;
77 return getOutboundEndpoint(uri, mep, 0);
78 }
79 }
80
81 static class EndpointUri
82 {
83 private String uri;
84 private boolean isDynamic;
85 private String resultUri;
86 private MuleMessage message;
87 {
88 Map<String, Object> inbound = new HashMap<String, Object>();
89 inbound.put("prop1", "apple");
90 inbound.put("prop2", "orange");
91 inbound.put("prop3", "banana");
92 message = new DefaultMuleMessage("Hello, world", inbound, null, null, muleContext);
93 }
94
95 EndpointUri(String uri, String resultUri)
96 {
97 this.uri = uri;
98 this.resultUri = resultUri;
99 this.isDynamic = true;
100 }
101
102 EndpointUri(String uri)
103 {
104 this.uri = uri;
105 this.resultUri = uri;
106 this.isDynamic = false;
107 }
108
109 public String getUri()
110 {
111 return uri;
112 }
113
114 public boolean isDynamic()
115 {
116 return isDynamic;
117 }
118
119 public String getResultUri()
120 {
121 return resultUri;
122 }
123
124 public void checkResultUri(ImmutableEndpoint ep)
125 {
126 String epUri;
127 if (ep instanceof DynamicOutboundEndpoint)
128 {
129 epUri = muleContext.getExpressionManager().parse(ep.getAddress(), message, true);
130 }
131 else
132 {
133 epUri = ep.getAddress();
134 }
135 assertEquals(resultUri, epUri);
136 }
137 }
138 }