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