1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.outbound;
12
13 import org.mule.impl.MuleMessage;
14 import org.mule.tck.AbstractMuleTestCase;
15 import org.mule.tck.MuleTestUtils;
16 import org.mule.umo.UMOMessage;
17 import org.mule.umo.UMOSession;
18 import org.mule.umo.endpoint.UMOEndpoint;
19 import org.mule.umo.routing.CouldNotRouteOutboundMessageException;
20
21 import com.mockobjects.dynamic.C;
22 import com.mockobjects.dynamic.Mock;
23
24 import java.util.ArrayList;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public class EndpointSelectorTestCase extends AbstractMuleTestCase
48 {
49 Mock session;
50 UMOEndpoint dest1;
51 UMOEndpoint dest2;
52 UMOEndpoint dest3;
53 EndpointSelector router;
54
55 protected void doSetUp() throws Exception
56 {
57 super.doSetUp();
58 session = MuleTestUtils.getMockSession();
59 session.matchAndReturn("getComponent", getTestComponent(getTestDescriptor("test", "blah")));
60 dest1 = getTestEndpoint("dest1", UMOEndpoint.ENDPOINT_TYPE_SENDER);
61 dest2 = getTestEndpoint("dest2", UMOEndpoint.ENDPOINT_TYPE_SENDER);
62 dest3 = getTestEndpoint("dest3", UMOEndpoint.ENDPOINT_TYPE_SENDER);
63
64 List endpoints = new ArrayList();
65 endpoints.add(dest1);
66 endpoints.add(dest2);
67 endpoints.add(dest3);
68
69 router = new EndpointSelector();
70 router.setEndpoints(endpoints);
71 }
72
73 public void testSelectEndpointDefaultProperty() throws Exception
74 {
75 Map props = new HashMap();
76 props.put("apple", "red");
77 props.put(router.getSelectorProperty(), "dest3");
78 props.put("banana", "yellow");
79 UMOMessage message = new MuleMessage("test event", props);
80
81 assertTrue(router.isMatch(message));
82 session.expect("dispatchEvent", C.eq(message, dest3));
83 router.route(message, (UMOSession) session.proxy(), false);
84 session.verify();
85 }
86
87 public void testSelectEndpointCustomProperty() throws Exception
88 {
89
90
91 router.setSelectorProperty("wayOut");
92
93 Map props = new HashMap();
94 props.put("apple", "red");
95 props.put("wayOut", "dest2");
96 props.put("banana", "yellow");
97 UMOMessage message = new MuleMessage("test event", props);
98
99 assertTrue(router.isMatch(message));
100 session.expect("dispatchEvent", C.eq(message, dest2));
101 router.route(message, (UMOSession) session.proxy(), false);
102 session.verify();
103 }
104
105 public void testSelectEndpointNoMatch() throws Exception
106 {
107 Map props = new HashMap();
108 props.put(router.getSelectorProperty(), "dest5");
109 UMOMessage message = new MuleMessage("test event", props);
110
111 try
112 {
113 router.route(message, (UMOSession) session.proxy(), false);
114 fail("Router should have thrown an exception if endpoint was not found.");
115 }
116 catch (CouldNotRouteOutboundMessageException e)
117 {
118
119 }
120 }
121
122 public void testSelectEndpointNoPropertySet() throws Exception
123 {
124 UMOMessage message = new MuleMessage("test event");
125
126 try
127 {
128 router.route(message, (UMOSession) session.proxy(), false);
129 fail("Router should have thrown an exception if no selector property was set on the message.");
130 }
131 catch (IllegalArgumentException e)
132 {
133
134 }
135 }
136 }