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