1
2
3
4
5
6
7 package org.mule.routing.filters;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.MessageExchangePattern;
11 import org.mule.RequestContext;
12 import org.mule.api.MuleMessage;
13 import org.mule.api.transport.PropertyScope;
14 import org.mule.tck.junit4.AbstractMuleContextTestCase;
15
16 import java.util.HashMap;
17 import java.util.Map;
18
19 import org.junit.Test;
20
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertFalse;
23 import static org.junit.Assert.assertTrue;
24
25 public class MessagePropertyFilterTestCase extends AbstractMuleContextTestCase
26 {
27 @Test
28 public void testMessagePropertyFilter() throws Exception
29 {
30 MessagePropertyFilter filter = new MessagePropertyFilter("foo=bar");
31 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
32 assertTrue(!filter.accept(message));
33 message.setOutboundProperty("foo", "bar");
34 assertTrue("Filter didn't accept the message", filter.accept(message));
35 }
36
37 @Test
38 public void testMessagePropertyFilterSessionScope() throws Exception
39 {
40 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
41 RequestContext.setEvent(getTestEvent(message));
42 MessagePropertyFilter filter = new MessagePropertyFilter("foo=bar");
43 filter.setScope(PropertyScope.SESSION_NAME);
44 assertFalse(filter.accept(message));
45 message.setSessionProperty("foo", "bar");
46 assertTrue("Filter didn't accept the message", filter.accept(message));
47 }
48
49 @Test
50 public void testMessagePropertyFilterInboundScope() throws Exception
51 {
52 DefaultMuleMessage message = new DefaultMuleMessage("blah", muleContext);
53 RequestContext.setEvent(getTestEvent(message));
54 MessagePropertyFilter filter = new MessagePropertyFilter("inbound:foo=bar");
55 assertEquals("inbound", filter.getScope());
56
57 assertFalse(filter.accept(message));
58 message.setInboundProperty("foo", "bar");
59 assertTrue("Filter didn't accept the message", filter.accept(message));
60 }
61
62 @Test
63 public void testMessagePropertyFilterWithURL() throws Exception
64 {
65 DefaultMuleMessage message = new DefaultMuleMessage("blah", muleContext);
66 RequestContext.setEvent(getTestEvent(message));
67 MessagePropertyFilter filter = new MessagePropertyFilter("inbound:foo=http://foo.com");
68 assertEquals("inbound", filter.getScope());
69
70 assertFalse(filter.accept(message));
71
72 Map inboundProps = new HashMap();
73 inboundProps.put("foo", "http://foo.com");
74 message = new DefaultMuleMessage("blah", inboundProps, null, null, muleContext);
75 assertTrue("Filter didn't accept the message", filter.accept(message));
76
77
78 filter = new MessagePropertyFilter("bar=http://bar.com");
79
80 assertEquals("outbound", filter.getScope());
81
82 assertFalse(filter.accept(message));
83 message.setOutboundProperty("bar", "http://bar.com");
84 assertTrue("Filter didn't accept the message", filter.accept(message));
85 }
86
87 @Test
88 public void testMessagePropertyFilterWithNot() throws Exception
89 {
90 MessagePropertyFilter filter = new MessagePropertyFilter("foo!=bar");
91 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
92
93 assertTrue("Filter didn't accept the message", filter.accept(message));
94 message.setOutboundProperty("foo", "bar");
95 assertFalse(filter.accept(message));
96 message.setOutboundProperty("foo", "car");
97 assertTrue("Filter didn't accept the message", filter.accept(message));
98 }
99
100 @Test
101 public void testMessagePropertyFilterWithNotNull() throws Exception
102 {
103 MessagePropertyFilter filter = new MessagePropertyFilter("foo!=null");
104 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
105
106 assertFalse(filter.accept(message));
107 message.removeProperty("foo");
108 assertFalse(filter.accept(message));
109 message.setOutboundProperty("foo", "car");
110 assertTrue("Filter didn't accept the message", filter.accept(message));
111 }
112
113 @Test
114 public void testMessagePropertyFilterWithCaseSensitivity() throws Exception
115 {
116 MessagePropertyFilter filter = new MessagePropertyFilter("foo=Bar");
117 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
118 message.setOutboundProperty("foo", "bar");
119 assertFalse(filter.accept(message));
120 filter.setCaseSensitive(false);
121 assertTrue("Filter didn't accept the message", filter.accept(message));
122 }
123
124
125 @Test
126 public void testMessagePropertyFilterWithWildcard() throws Exception
127 {
128 MessagePropertyFilter filter = new MessagePropertyFilter("foo=B*");
129 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
130 message.setOutboundProperty("foo", "bar");
131 assertFalse(filter.accept(message));
132 filter.setCaseSensitive(false);
133 assertTrue("Filter didn't accept the message", filter.accept(message));
134 filter.setPattern("foo=*a*");
135 assertTrue("Filter didn't accept the message", filter.accept(message));
136 }
137
138 @Test
139 public void testMessagePropertyFilterDodgyValues() throws Exception
140 {
141 MessagePropertyFilter filter = new MessagePropertyFilter();
142 assertFalse(filter.accept(null));
143
144 filter = new MessagePropertyFilter("foo = bar");
145 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
146 message.setOutboundProperty("foo", "bar");
147 assertTrue("Filter didn't accept the message", filter.accept(message));
148 filter.setCaseSensitive(false);
149
150 filter = new MessagePropertyFilter("foo2 =null");
151 message.removeProperty("foo2");
152 assertTrue("Filter didn't accept the message", filter.accept(message));
153
154 filter = new MessagePropertyFilter("foo2 =");
155 message.setOutboundProperty("foo2", "");
156 assertTrue("Filter didn't accept the message", filter.accept(message));
157
158 message.removeProperty("foo2");
159 assertFalse(filter.accept(message));
160 }
161
162
163 @Test
164 public void testMessagePropertyFilterPropertyExists() throws Exception
165 {
166 MessagePropertyFilter filter = new MessagePropertyFilter("foo!=null");
167 MuleMessage message = new DefaultMuleMessage("blah", muleContext);
168
169 assertFalse(filter.accept(message));
170 message.setOutboundProperty("foo", "car");
171 assertTrue("Filter didn't accept the message", filter.accept(message));
172 }
173
174 @Test
175 public void testMessagePropertyWithEnum() throws Exception
176 {
177 MessagePropertyFilter filter = new MessagePropertyFilter("foo=ONE_WAY");
178 MuleMessage message = new DefaultMuleMessage("", muleContext);
179 assertFalse(filter.accept(message));
180 message.setOutboundProperty("foo", MessageExchangePattern.ONE_WAY);
181 assertTrue(filter.accept(message));
182 }
183 }