View Javadoc

1   /*
2    * $Id: MessagePropertyFilterTestCase.java 22377 2011-07-11 12:41:42Z dirk.olmes $
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.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          //Checking here that a ':' in the value doesn't throw things off
82          filter = new MessagePropertyFilter("bar=http://bar.com");
83          //default scope
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 }