1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.filters;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.api.MuleMessage;
15 import org.mule.api.config.ConfigurationException;
16 import org.mule.api.routing.OutboundRouterCollection;
17 import org.mule.module.client.MuleClient;
18 import org.mule.module.ognl.filters.OGNLFilter;
19 import org.mule.routing.outbound.FilteringOutboundRouter;
20 import org.mule.tck.FunctionalTestCase;
21
22 public class OGNLFilterTestCase extends FunctionalTestCase
23 {
24 public static final String DEFAULT_INPUT_QUEUE = "vm://in";
25 public static final String DEFUALT_OUTPUT_QUEUE = "vm://out";
26 public static final String FIRST_MESSAGE = "foo";
27 public static final String SECOND_MESSAGE = "foobar";
28 public static final String THIRD_MESSAGE = "INPUT MESSAGE";
29 public static final long TIMEOUT = 2000;
30 public static final String OGNL_EXSPRESSION = " equals(\"foo\") || content.endsWith(\"bar\") ";
31 public static final String SERVICE_NAME = "OGNLServiceWrapper1";
32
33 protected String getConfigResources()
34 {
35 return "ognl-functional-test.xml";
36 }
37
38 private OGNLFilter filter;
39
40 @Override
41 protected void doSetUp() throws Exception
42 {
43 filter = new OGNLFilter();
44 }
45
46 @Override
47 protected void doTearDown() throws Exception
48 {
49 filter = null;
50 }
51
52 public void testNewFilter()
53 {
54 assertFalse(filter.accept(null));
55 }
56
57 public void testNoExpressionEmptyMessage()
58 {
59 MuleMessage message = new DefaultMuleMessage(null, muleContext);
60 assertFalse(filter.accept(message));
61 }
62
63 public void testNoExpressionValidMessage()
64 {
65 MuleMessage message = new DefaultMuleMessage("foo", muleContext);
66 assertFalse(filter.accept(message));
67 }
68
69 public void testNamespaceHandler()
70 {
71 String expression = ((OGNLFilter) ((FilteringOutboundRouter) ((OutboundRouterCollection) muleContext.getRegistry()
72 .lookupService(SERVICE_NAME)
73 .getOutboundMessageProcessor()).getRoutes().get(0)).getFilter()).getExpression();
74
75 assertEquals(expression, OGNL_EXSPRESSION);
76 }
77
78 public void testFunctionalTest() throws Exception
79 {
80 MuleClient client = new MuleClient(muleContext);
81 try
82 {
83 client.dispatch(DEFAULT_INPUT_QUEUE, FIRST_MESSAGE, null);
84 MuleMessage message = client.request(DEFUALT_OUTPUT_QUEUE, TIMEOUT);
85 assertNotNull(message);
86 assertNotNull(message.getPayload());
87 assertNull(message.getExceptionPayload());
88 assertEquals(FIRST_MESSAGE, message.getPayload());
89
90 Dummy payload = new Dummy();
91 payload.setContent(SECOND_MESSAGE);
92 client.dispatch(DEFAULT_INPUT_QUEUE, new DefaultMuleMessage(payload, muleContext));
93 message = client.request(DEFUALT_OUTPUT_QUEUE, TIMEOUT);
94 assertNotNull(message);
95 assertNotNull(message.getPayload());
96 assertNull(message.getExceptionPayload());
97 assertEquals(SECOND_MESSAGE, ((Dummy) message.getPayload()).getContent());
98
99 client.dispatch(DEFAULT_INPUT_QUEUE, THIRD_MESSAGE, null);
100 message = client.request(DEFUALT_OUTPUT_QUEUE, TIMEOUT);
101 assertNull(message);
102 }
103 finally
104 {
105 client.dispose();
106 }
107
108 }
109
110
111 public void testFunctionalTestUsingExpressionFilter() throws Exception
112 {
113 MuleClient client = new MuleClient(muleContext);
114 try
115 {
116 client.dispatch("vm://in2", FIRST_MESSAGE, null);
117 MuleMessage message = client.request("vm://out2", TIMEOUT);
118 assertNotNull(message);
119 assertNotNull(message.getPayload());
120 assertNull(message.getExceptionPayload());
121 assertEquals(FIRST_MESSAGE, message.getPayload());
122
123 Dummy payload = new Dummy();
124 payload.setContent(SECOND_MESSAGE);
125 client.dispatch("vm://in2", new DefaultMuleMessage(payload, muleContext));
126 message = client.request("vm://out2", TIMEOUT);
127 assertNotNull(message);
128 assertNotNull(message.getPayload());
129 assertNull(message.getExceptionPayload());
130 assertEquals(SECOND_MESSAGE, ((Dummy) message.getPayload()).getContent());
131
132 client.dispatch("vm://in2", THIRD_MESSAGE, null);
133 message = client.request("vm://out2", TIMEOUT);
134 assertNull(message);
135 }
136 finally
137 {
138 client.dispose();
139 }
140
141 }
142
143 public void testInvalidObjectExpression()
144 {
145 try
146 {
147 filter.setExpression("foo:bar");
148 fail("should have failed with ConfigurationException");
149 }
150 catch (ConfigurationException configex)
151 {
152
153 }
154
155
156 assertNull(filter.getExpression());
157 }
158
159
160 private static class Dummy
161 {
162 private int id;
163 private String content;
164
165 public Dummy()
166 {
167 super();
168 }
169
170
171
172
173 public String getContent()
174 {
175 return content;
176 }
177
178
179
180
181 public void setContent(String content)
182 {
183 this.content = content;
184 }
185
186
187
188
189 public int getId()
190 {
191 return id;
192 }
193
194
195
196
197 public void setId(int id)
198 {
199 this.id = id;
200 }
201 }
202
203 }