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
21 public class ExpressionFilterTestCase extends AbstractMuleTestCase
22 {
23
24 public void testHeaderFilter() throws Exception
25 {
26 ExpressionFilter filter = new ExpressionFilter("header", "foo=bar");
27 MuleMessage message = new DefaultMuleMessage("blah");
28 assertTrue(!filter.accept(message));
29 message.setProperty("foo", "bar");
30 assertTrue(filter.accept(message));
31 }
32
33 public void testHeaderFilterWithNot() throws Exception
34 {
35 ExpressionFilter filter = new ExpressionFilter("header", "foo!=bar");
36 MuleMessage message = new DefaultMuleMessage("blah");
37
38 assertTrue(filter.accept(message));
39 message.setProperty("foo", "bar");
40 assertTrue(!filter.accept(message));
41 message.setProperty("foo", "car");
42 assertTrue(filter.accept(message));
43 }
44
45 public void testHeaderFilterWithNotNull() throws Exception
46 {
47 ExpressionFilter filter = new ExpressionFilter("header", "foo!=null");
48 MuleMessage message = new DefaultMuleMessage("blah");
49
50 assertTrue(!filter.accept(message));
51 message.removeProperty("foo");
52 assertTrue(!filter.accept(message));
53 message.setProperty("foo", "car");
54 assertTrue(filter.accept(message));
55 }
56
57 public void testRegexFilterNoPattern()
58 {
59
60 RegExFilter filter = new RegExFilter();
61 assertNull(filter.getPattern());
62 assertFalse(filter.accept("No tengo dinero"));
63
64
65 filter.setPattern("(.*) brown fox");
66 assertTrue(filter.accept("The quick brown fox"));
67
68
69 filter.setPattern(null);
70 assertFalse(filter.accept("oh-oh"));
71 }
72
73 public void testRegexFilter()
74 {
75
76 ExpressionFilter filter = new ExpressionFilter("regex", "The quick (.*)");
77 assertNotNull(filter.getExpression());
78
79 assertTrue(filter.accept(new DefaultMuleMessage("The quick brown fox")));
80 assertTrue(filter.accept(new DefaultMuleMessage("The quick ")));
81
82 assertTrue(!filter.accept(new DefaultMuleMessage("The quickbrown fox")));
83 assertTrue(!filter.accept(new DefaultMuleMessage("he quick brown fox")));
84 }
85
86 public void testExceptionTypeFilter()
87 {
88 ExpressionFilter filter = new ExpressionFilter("exception-type:java.lang.Exception");
89 MuleMessage m = new DefaultMuleMessage("test");
90 assertTrue(!filter.accept(m));
91 m.setExceptionPayload(new DefaultExceptionPayload(new IllegalArgumentException("test")));
92 assertTrue(filter.accept(m));
93
94 filter = new ExpressionFilter("exception-type:java.io.IOException");
95 assertTrue(!filter.accept(m));
96 m.setExceptionPayload(new DefaultExceptionPayload(new IOException("test")));
97 assertTrue(filter.accept(m));
98 }
99
100 public void testPayloadTypeFilter()
101 {
102 ExpressionFilter filter = new ExpressionFilter("payload-type:org.mule.tck.testmodels.fruit.Apple");
103
104 assertTrue(filter.accept(new DefaultMuleMessage(new Apple())));
105 assertTrue(!filter.accept(new DefaultMuleMessage("test")));
106
107 filter = new ExpressionFilter("payload-type:java.lang.String");
108 assertTrue(filter.accept(new DefaultMuleMessage("test")));
109 assertTrue(!filter.accept(new DefaultMuleMessage(new Exception("test"))));
110 }
111
112 public void testWildcardFilterMultiplePatterns()
113 {
114 ExpressionFilter filter = new ExpressionFilter("wildcard:* brown*, The*");
115
116 assertTrue(filter.accept(new DefaultMuleMessage("The quick brown fox")));
117 assertTrue(filter.accept(new DefaultMuleMessage(" brown fox")));
118 assertTrue(filter.accept(new DefaultMuleMessage("The quickbrown fox")));
119 }
120
121 public void testTrueString()
122 {
123 ExpressionFilter filter = new ExpressionFilter("payload:");
124 filter.setNullReturnsTrue(true);
125
126 assertTrue(filter.accept(new DefaultMuleMessage("true")));
127 assertTrue(filter.accept(new DefaultMuleMessage("TRUE")));
128 assertTrue(filter.accept(new DefaultMuleMessage("tRuE")));
129 }
130
131 public void testFalseString()
132 {
133 ExpressionFilter filter = new ExpressionFilter("payload:");
134 filter.setNullReturnsTrue(false);
135
136 assertFalse(filter.accept(new DefaultMuleMessage("false")));
137 assertFalse(filter.accept(new DefaultMuleMessage("FALSE")));
138 assertFalse(filter.accept(new DefaultMuleMessage("faLSe")));
139 }
140
141 public void testOtherString()
142 {
143 ExpressionFilter filter = new ExpressionFilter("payload:");
144 filter.setNullReturnsTrue(false);
145
146 assertFalse(filter.accept(new DefaultMuleMessage("otherTrueString")));
147 assertFalse(filter.accept(new DefaultMuleMessage("otherFalseString")));
148 assertFalse(filter.accept(new DefaultMuleMessage("!trueFALSE")));
149 }
150 }