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