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