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