1
2
3
4
5
6
7 package org.mule.tck;
8
9 import org.mule.api.MuleException;
10 import org.mule.api.component.InterfaceBinding;
11 import org.mule.api.component.JavaComponent;
12 import org.mule.api.endpoint.ImmutableEndpoint;
13 import org.mule.api.endpoint.InboundEndpoint;
14 import org.mule.api.endpoint.OutboundEndpoint;
15 import org.mule.api.exception.MessagingExceptionHandler;
16 import org.mule.api.model.Model;
17 import org.mule.api.processor.MessageProcessor;
18 import org.mule.api.routing.OutboundRouter;
19 import org.mule.api.routing.OutboundRouterCollection;
20 import org.mule.api.service.Service;
21 import org.mule.api.transformer.Transformer;
22 import org.mule.exception.AbstractExceptionListener;
23 import org.mule.model.resolvers.LegacyEntryPointResolverSet;
24 import org.mule.routing.ForwardingCatchAllStrategy;
25 import org.mule.routing.filters.MessagePropertyFilter;
26 import org.mule.routing.outbound.OutboundPassThroughRouter;
27 import org.mule.service.ServiceAsyncReplyCompositeMessageSource;
28 import org.mule.service.ServiceCompositeMessageSource;
29 import org.mule.tck.testmodels.fruit.FruitCleaner;
30 import org.mule.tck.testmodels.mule.TestCompressionTransformer;
31 import org.mule.tck.testmodels.mule.TestEntryPointResolverSet;
32 import org.mule.tck.testmodels.mule.TestExceptionStrategy;
33 import org.mule.tck.testmodels.mule.TestResponseAggregator;
34 import org.mule.transformer.TransformerUtils;
35 import org.mule.transformer.types.DataTypeFactory;
36
37 import java.util.List;
38 import java.util.Map;
39
40 import org.junit.Test;
41
42 import static org.junit.Assert.assertEquals;
43 import static org.junit.Assert.assertFalse;
44 import static org.junit.Assert.assertNotNull;
45 import static org.junit.Assert.assertNull;
46 import static org.junit.Assert.assertTrue;
47
48 public abstract class AbstractScriptConfigBuilderTestCase extends org.mule.tck.junit4.FunctionalTestCase
49 {
50
51
52 private boolean legacy;
53
54 protected AbstractScriptConfigBuilderTestCase()
55 {
56 this(false);
57 }
58
59 protected AbstractScriptConfigBuilderTestCase(boolean legacy)
60 {
61 this.legacy = legacy;
62 }
63
64 @Test
65 public void testManagerConfig() throws Exception
66 {
67 assertEquals("true", muleContext.getRegistry().lookupObject("doCompression"));
68 assertNotNull(muleContext.getTransactionManager());
69 }
70
71
72 @Test
73 public void testConnectorConfig() throws Exception
74 {
75 MessagingExceptionHandler es = muleContext.getRegistry().lookupModel("main").getExceptionListener();
76 assertNotNull(es);
77 assertTrue(es.getClass().getName(), es instanceof TestExceptionStrategy);
78 }
79
80 @Test
81 public void testGlobalEndpointConfig() throws MuleException
82 {
83 ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint(
84 "fruitBowlEndpoint");
85 assertNotNull(endpoint);
86 assertEquals(endpoint.getEndpointURI().getAddress(), "fruitBowlPublishQ");
87
88 MessagePropertyFilter filter = (MessagePropertyFilter)endpoint.getFilter();
89 assertNotNull(filter);
90 assertEquals("foo=bar", filter.getPattern());
91
92 ImmutableEndpoint ep = muleContext.getEndpointFactory().getInboundEndpoint("testEPWithCS");
93 assertNotNull(ep);
94 }
95
96 @Test
97 public void testEndpointConfig() throws MuleException
98 {
99
100 ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint(
101 "waterMelonEndpoint");
102 assertNotNull(endpoint);
103
104 assertEquals("test.queue", endpoint.getEndpointURI().getAddress());
105
106 Service service = muleContext.getRegistry().lookupService("orangeComponent");
107 ImmutableEndpoint ep = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("Orange");
108 assertNotNull(ep);
109 final List responseTransformers = ep.getResponseTransformers();
110 assertNotNull(responseTransformers);
111 assertFalse(responseTransformers.isEmpty());
112 final Object responseTransformer = responseTransformers.get(0);
113 assertTrue(responseTransformer instanceof TestCompressionTransformer);
114 }
115
116 @Test
117 public void testExceptionStrategy()
118 {
119 Service service = muleContext.getRegistry().lookupService("orangeComponent");
120 assertNotNull(muleContext.getRegistry().lookupModel("main").getExceptionListener());
121 assertNotNull(service.getExceptionListener());
122
123 assertTrue(((AbstractExceptionListener) service.getExceptionListener()).getMessageProcessors().size() > 0);
124 OutboundEndpoint ep = (OutboundEndpoint) ((AbstractExceptionListener) service.getExceptionListener()).getMessageProcessors().get(0);
125
126 assertEquals("test://orange.exceptions", ep.getEndpointURI().toString());
127 }
128
129 @Test
130 public void testTransformerConfig()
131 {
132 Transformer t = muleContext.getRegistry().lookupTransformer("TestCompressionTransformer");
133 assertNotNull(t);
134 assertTrue(t instanceof TestCompressionTransformer);
135 assertEquals(t.getReturnDataType(), DataTypeFactory.STRING);
136 assertNotNull(((TestCompressionTransformer) t).getContainerProperty());
137 }
138
139 @Test
140 public void testModelConfig() throws Exception
141 {
142 Model model = muleContext.getRegistry().lookupModel("main");
143 assertNotNull(model);
144 assertEquals("main", model.getName());
145 if (legacy)
146 {
147 assertTrue(model.getEntryPointResolverSet() instanceof LegacyEntryPointResolverSet);
148 }
149 else
150 {
151 assertTrue(model.getEntryPointResolverSet() instanceof TestEntryPointResolverSet);
152 }
153 assertTrue(model.getExceptionListener() instanceof TestExceptionStrategy);
154
155 assertTrue(((AbstractExceptionListener) model.getExceptionListener()).getMessageProcessors().size() > 0);
156 OutboundEndpoint ep = (OutboundEndpoint) ((AbstractExceptionListener) model.getExceptionListener()).getMessageProcessors().get(0);
157
158 assertEquals("test://component.exceptions", ep.getEndpointURI().toString());
159
160
161 }
162
163
164
165
166
167 @Test
168 public void testEndpointPropertiesConfig() throws Exception
169 {
170 ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint(
171 "endpointWithProps");
172
173 Map props = endpoint.getProperties();
174 assertNotNull(props);
175 assertEquals("9", props.get("segments"));
176 assertEquals("4.21", props.get("radius"));
177 assertEquals("Juicy Baby!", props.get("brand"));
178
179 assertNotNull(props.get("listProperties"));
180 List list = (List) props.get("listProperties");
181 assertEquals(3, list.size());
182 assertEquals("prop1", list.get(0));
183 assertEquals("prop2", list.get(1));
184 assertEquals("prop3", list.get(2));
185
186 assertNotNull(props.get("arrayProperties"));
187 list = (List) props.get("arrayProperties");
188 assertEquals(3, list.size());
189 assertEquals("prop4", list.get(0));
190 assertEquals("prop5", list.get(1));
191 assertEquals("prop6", list.get(2));
192
193 assertNotNull(props.get("mapProperties"));
194 props = (Map) props.get("mapProperties");
195 assertEquals("prop1", props.get("prop1"));
196 assertEquals("prop2", props.get("prop2"));
197
198 assertEquals(6, endpoint.getProperties().size());
199 }
200
201 @Test
202 public void testOutboundRouterConfig()
203 {
204
205 Service service = muleContext.getRegistry().lookupService("orangeComponent");
206 assertNotNull(service.getOutboundMessageProcessor());
207 OutboundRouterCollection router = (OutboundRouterCollection) service.getOutboundMessageProcessor();
208 assertNull(router.getCatchAllStrategy());
209 assertEquals(1, router.getRoutes().size());
210
211 OutboundRouter route1 = (OutboundRouter) router.getRoutes().get(0);
212 assertTrue(route1 instanceof OutboundPassThroughRouter);
213 assertEquals(1, route1.getRoutes().size());
214 }
215
216 @Test
217 public void testBindingConfig()
218 {
219
220 Service service = muleContext.getRegistry().lookupService("orangeComponent");
221 assertNotNull(service.getComponent());
222 assertTrue(service.getComponent() instanceof JavaComponent);
223 List<InterfaceBinding> bindings= ((JavaComponent) service.getComponent()).getInterfaceBindings();
224 assertNotNull(bindings);
225
226 assertEquals(2, bindings.size());
227
228 InterfaceBinding route1 = bindings.get(0);
229 assertEquals(FruitCleaner.class, route1.getInterface());
230 assertEquals("wash", route1.getMethod());
231 assertNotNull(route1.getEndpoint());
232
233 InterfaceBinding route2 = bindings.get(1);
234 assertEquals(FruitCleaner.class, route2.getInterface());
235 assertEquals("polish", route2.getMethod());
236 assertNotNull(route1.getEndpoint());
237 }
238
239 @Test
240 public void testDescriptorEndpoints()
241 {
242 Service service = muleContext.getRegistry().lookupService("orangeComponent");
243 assertEquals(1, ((OutboundRouterCollection) service.getOutboundMessageProcessor()).getRoutes().size());
244 OutboundRouter router = (OutboundRouter) ((OutboundRouterCollection)service.getOutboundMessageProcessor()).getRoutes().get(0);
245 assertEquals(1, router.getRoutes().size());
246 MessageProcessor mp = router.getRoutes().get(0);
247 assertNotNull(mp);
248 assertTrue(mp instanceof ImmutableEndpoint);
249 ImmutableEndpoint endpoint = (ImmutableEndpoint) mp;
250 assertNotNull(endpoint);
251 assertEquals("appleInEndpoint", endpoint.getName());
252 assertNotNull(endpoint.getTransformers());
253 assertTrue(TransformerUtils.firstOrNull(endpoint.getTransformers()) instanceof TestCompressionTransformer);
254
255 assertEquals(2, ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints().size());
256 assertNotNull(((ServiceCompositeMessageSource) service.getMessageSource()).getCatchAllStrategy());
257 assertTrue(((ServiceCompositeMessageSource) service.getMessageSource()).getCatchAllStrategy() instanceof ForwardingCatchAllStrategy);
258 ForwardingCatchAllStrategy fcas = (ForwardingCatchAllStrategy)((ServiceCompositeMessageSource) service.getMessageSource()).getCatchAllStrategy();
259 assertNotNull(fcas.getEndpoint());
260 assertEquals("test://catch.all", fcas.getEndpoint().getEndpointURI().toString());
261 endpoint = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("orangeEndpoint");
262 assertNotNull(endpoint);
263 assertEquals("orangeEndpoint", endpoint.getName());
264 assertEquals("orangeQ", endpoint.getEndpointURI().getAddress());
265 assertNotNull(endpoint.getTransformers());
266 assertTrue(TransformerUtils.firstOrNull(endpoint.getTransformers()) instanceof TestCompressionTransformer);
267 }
268
269 @Test
270 public void testInboundRouterConfig()
271 {
272 Service service = muleContext.getRegistry().lookupService("orangeComponent");
273 assertNotNull(service.getMessageSource());
274 ServiceCompositeMessageSource messageRouter = (ServiceCompositeMessageSource) service.getMessageSource();
275 assertNotNull(messageRouter.getCatchAllStrategy());
276 assertEquals(0, messageRouter.getMessageProcessors().size());
277 assertTrue(messageRouter.getCatchAllStrategy() instanceof ForwardingCatchAllStrategy);
278 assertEquals(2, messageRouter.getEndpoints().size());
279 }
280
281 @Test
282 public void testResponseRouterConfig()
283 {
284 Service service = muleContext.getRegistry().lookupService("orangeComponent");
285 assertNotNull(service.getAsyncReplyMessageSource());
286
287 ServiceAsyncReplyCompositeMessageSource messageRouter = service.getAsyncReplyMessageSource();
288 assertNull(messageRouter.getCatchAllStrategy());
289 assertEquals(10001, messageRouter.getTimeout().longValue());
290 assertEquals(1, messageRouter.getMessageProcessors().size());
291
292 MessageProcessor router = messageRouter.getMessageProcessors().get(0);
293 assertTrue(router instanceof TestResponseAggregator);
294 assertNotNull(messageRouter.getEndpoints());
295 assertEquals(2, messageRouter.getEndpoints().size());
296
297 InboundEndpoint ep = messageRouter.getEndpoints().get(0);
298 assertEquals("response1", ep.getEndpointURI().getAddress());
299
300 ep = messageRouter.getEndpoints().get(1);
301 assertEquals("AppleResponseQueue", ep.getEndpointURI().getAddress());
302 }
303 }