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.message.DefaultExceptionPayload;
16 import org.mule.tck.AbstractMuleTestCase;
17 import org.mule.tck.testmodels.fruit.Apple;
18
19 import java.io.IOException;
20 import java.util.HashMap;
21 import java.util.Map;
22
23 public class ExpressionFilterTestCase extends AbstractMuleTestCase
24 {
25
26 public void testHeaderFilter() throws Exception
27 {
28 ExpressionFilter filter = new ExpressionFilter("header", "foo=bar");
29 filter.setMuleContext(muleContext);
30 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
31 assertTrue(!filter.accept(message));
32 message.setOutboundProperty("foo", "bar");
33 assertTrue(filter.accept(message));
34 }
35
36 public void testHeaderFilterWithNot() throws Exception
37 {
38 ExpressionFilter filter = new ExpressionFilter("header", "foo!=bar");
39 filter.setMuleContext(muleContext);
40
41 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
42
43 assertTrue(filter.accept(message));
44 message.setOutboundProperty("foo", "bar");
45 assertTrue(!filter.accept(message));
46 message.setOutboundProperty("foo", "car");
47 assertTrue(filter.accept(message));
48 }
49
50 public void testHeaderFilterWithNotNull() throws Exception
51 {
52 ExpressionFilter filter = new ExpressionFilter("header", "foo!=null");
53 filter.setMuleContext(muleContext);
54
55 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
56
57 assertTrue(!filter.accept(message));
58 message.removeProperty("foo");
59 assertTrue(!filter.accept(message));
60 message.setOutboundProperty("foo", "car");
61 assertTrue(filter.accept(message));
62 }
63
64 public void testRegexFilterNoPattern()
65 {
66
67 RegExFilter filter = new RegExFilter();
68 assertNull(filter.getPattern());
69 assertFalse(filter.accept("No tengo dinero"));
70
71
72 filter.setPattern("(.*) brown fox");
73 assertTrue(filter.accept("The quick brown fox"));
74
75
76 filter.setPattern(null);
77 assertFalse(filter.accept("oh-oh"));
78 }
79
80 public void testRegexFilter()
81 {
82
83 ExpressionFilter filter = new ExpressionFilter("regex", "The quick (.*)");
84 filter.setMuleContext(muleContext);
85
86 assertNotNull(filter.getExpression());
87
88 assertTrue(filter.accept(new DefaultMuleMessage("The quick brown fox", muleContext)));
89 assertTrue(filter.accept(new DefaultMuleMessage("The quick ", muleContext)));
90
91 assertTrue(!filter.accept(new DefaultMuleMessage("The quickbrown fox", muleContext)));
92 assertTrue(!filter.accept(new DefaultMuleMessage("he quick brown fox", muleContext)));
93 }
94
95 public void testRegexFilterWithAngleBrackets()
96 {
97
98 ExpressionFilter filter = new ExpressionFilter("#[regex:The number is [1-9]]");
99 filter.setMuleContext(muleContext);
100
101 assertNotNull(filter.getExpression());
102
103 assertTrue(filter.accept(new DefaultMuleMessage("The number is 4", muleContext)));
104 assertFalse(filter.accept(new DefaultMuleMessage("Say again?", muleContext)));
105
106 assertFalse(filter.accept(new DefaultMuleMessage("The number is 0", muleContext)));
107 }
108
109 public void testExceptionTypeFilter()
110 {
111 ExpressionFilter filter = new ExpressionFilter("exception-type:java.lang.Exception");
112 filter.setMuleContext(muleContext);
113
114 MuleMessage m = new DefaultMuleMessage("test", muleContext);
115 assertTrue(!filter.accept(m));
116 m.setExceptionPayload(new DefaultExceptionPayload(new IllegalArgumentException("test")));
117 assertTrue(filter.accept(m));
118
119 filter = new ExpressionFilter("exception-type:java.io.IOException");
120 assertTrue(!filter.accept(m));
121 m.setExceptionPayload(new DefaultExceptionPayload(new IOException("test")));
122 assertTrue(filter.accept(m));
123 }
124
125 public void testPayloadTypeFilter()
126 {
127 ExpressionFilter filter = new ExpressionFilter("payload-type:org.mule.tck.testmodels.fruit.Apple");
128 filter.setMuleContext(muleContext);
129
130 assertTrue(filter.accept(new DefaultMuleMessage(new Apple(), muleContext)));
131 assertTrue(!filter.accept(new DefaultMuleMessage("test", muleContext)));
132
133 filter = new ExpressionFilter("payload-type:java.lang.String");
134 assertTrue(filter.accept(new DefaultMuleMessage("test", muleContext)));
135 assertTrue(!filter.accept(new DefaultMuleMessage(new Exception("test"), muleContext)));
136 }
137
138 public void testWildcardFilterMultiplePatterns()
139 {
140 ExpressionFilter filter = new ExpressionFilter("wildcard:* brown*, The*");
141 filter.setMuleContext(muleContext);
142
143 assertTrue(filter.accept(new DefaultMuleMessage("The quick brown fox", muleContext)));
144 assertTrue(filter.accept(new DefaultMuleMessage(" brown fox", muleContext)));
145 assertTrue(filter.accept(new DefaultMuleMessage("The quickbrown fox", muleContext)));
146 }
147
148 public void testTrueString()
149 {
150 ExpressionFilter filter = new ExpressionFilter("payload:");
151 filter.setMuleContext(muleContext);
152
153 filter.setNullReturnsTrue(true);
154
155 assertTrue(filter.accept(new DefaultMuleMessage("true", muleContext)));
156 assertTrue(filter.accept(new DefaultMuleMessage("TRUE", muleContext)));
157 assertTrue(filter.accept(new DefaultMuleMessage("tRuE", muleContext)));
158 }
159
160 public void testFalseString()
161 {
162 ExpressionFilter filter = new ExpressionFilter("payload:");
163 filter.setMuleContext(muleContext);
164
165 filter.setNullReturnsTrue(false);
166
167 assertFalse(filter.accept(new DefaultMuleMessage("false", muleContext)));
168 assertFalse(filter.accept(new DefaultMuleMessage("FALSE", muleContext)));
169 assertFalse(filter.accept(new DefaultMuleMessage("faLSe", muleContext)));
170 }
171
172 public void testExpressionFilter()
173 {
174 ExpressionFilter filter = new ExpressionFilter("mule:message.header(foo?)");
175 filter.setMuleContext(muleContext);
176
177 filter.setNullReturnsTrue(false);
178
179 assertFalse(filter.accept(new DefaultMuleMessage("x", muleContext)));
180 Map headers = new HashMap(1);
181 headers.put("foo", "bar");
182 assertTrue(filter.accept(new DefaultMuleMessage("x", headers, muleContext)));
183 }
184
185 public void testExpressionFilterWithFullSyntax()
186 {
187 ExpressionFilter filter = new ExpressionFilter("#[mule:message.header(foo?)]");
188 filter.setMuleContext(muleContext);
189
190 filter.setNullReturnsTrue(false);
191
192 assertFalse(filter.accept(new DefaultMuleMessage("x", muleContext)));
193 Map headers = new HashMap(1);
194 headers.put("foo", "bar");
195 assertTrue(filter.accept(new DefaultMuleMessage("x", headers, muleContext)));
196 }
197 }