View Javadoc

1   /*
2    * $Id: MessagePropertyFilterTestCase.java 19400 2010-09-07 20:20:09Z mike.schilling $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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          //Checking here that a ':' in the value doesn't throw things off
71          filter = new MessagePropertyFilter("bar=http://bar.com");
72          //default scope
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 }