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