1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.outbound;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.api.MuleMessage;
15 import org.mule.api.MuleSession;
16 import org.mule.api.endpoint.ImmutableEndpoint;
17 import org.mule.api.routing.RoutingException;
18 import org.mule.tck.AbstractMuleTestCase;
19 import org.mule.tck.MuleTestUtils;
20
21 import com.mockobjects.dynamic.C;
22 import com.mockobjects.dynamic.Mock;
23
24 import java.util.ArrayList;
25 import java.util.List;
26
27 public class StaticRecipientListRouterTestCase extends AbstractMuleTestCase
28 {
29 public void testRecipientListRouter() throws Exception
30 {
31 Mock session = MuleTestUtils.getMockSession();
32 session.matchAndReturn("getService", getTestService());
33
34 ImmutableEndpoint endpoint1 = getTestOutboundEndpoint("Test1Provider");
35 assertNotNull(endpoint1);
36
37 List recipients = new ArrayList();
38 recipients.add("test://recipient1");
39 recipients.add("test://recipient2");
40 StaticRecipientList router = new StaticRecipientList();
41 router.setRecipients(recipients);
42
43 List endpoints = new ArrayList();
44 endpoints.add(endpoint1);
45 router.setEndpoints(endpoints);
46 router.setMuleContext(muleContext);
47
48 assertEquals(2, router.getRecipients().size());
49
50 MuleMessage message = new DefaultMuleMessage("test event");
51 assertTrue(router.isMatch(message));
52
53
54
55
56
57
58 session.expect("dispatchEvent", C.args(C.isA(MuleMessage.class), C.isA(ImmutableEndpoint.class)));
59 session.expect("dispatchEvent", C.args(C.isA(MuleMessage.class), C.isA(ImmutableEndpoint.class)));
60 router.route(message, (MuleSession)session.proxy(), false);
61 session.verify();
62
63 message = new DefaultMuleMessage("test event");
64 router.getRecipients().add("test://recipient3");
65 session.expectAndReturn("sendEvent", C.args(C.isA(MuleMessage.class), C.isA(ImmutableEndpoint.class)),
66 message);
67 session.expectAndReturn("sendEvent", C.args(C.isA(MuleMessage.class), C.isA(ImmutableEndpoint.class)),
68 message);
69 session.expectAndReturn("sendEvent", C.args(C.isA(MuleMessage.class), C.isA(ImmutableEndpoint.class)),
70 message);
71 MuleMessage result = router.route(message, (MuleSession)session.proxy(), true);
72 assertNotNull(result);
73 assertTrue(result.getPayload() instanceof List);
74 assertEquals(3, ((List)result.getPayload()).size());
75 session.verify();
76
77 }
78
79 public void testBadRecipientListRouter() throws Exception
80 {
81 Mock session = MuleTestUtils.getMockSession();
82
83 ImmutableEndpoint endpoint1 = getTestOutboundEndpoint("Test1Provider");
84 assertNotNull(endpoint1);
85
86 List recipients = new ArrayList();
87 recipients.add("malformed-endpointUri-recipient1");
88 StaticRecipientList router = new StaticRecipientList();
89 router.setRecipients(recipients);
90
91 List endpoints = new ArrayList();
92 endpoints.add(endpoint1);
93 router.setEndpoints(endpoints);
94
95 assertEquals(1, router.getRecipients().size());
96
97 MuleMessage message = new DefaultMuleMessage("test event");
98 assertTrue(router.isMatch(message));
99 try
100 {
101 router.route(message, (MuleSession)session.proxy(), false);
102 fail("Should not allow malformed endpointUri");
103 }
104 catch (RoutingException e)
105 {
106
107 }
108 session.verify();
109 }
110
111 }