View Javadoc

1   /*
2    * $Id: MessagePropertyFilterTestCase.java 20482 2010-12-07 04:20:07Z dfeist $
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.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          //Checking here that a ':' in the value doesn't throw things off
72          filter = new MessagePropertyFilter("bar=http://bar.com");
73          //default scope
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 }