View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.config;
8   
9   import org.mule.DefaultMuleMessage;
10  import org.mule.api.MuleMessage;
11  import org.mule.api.routing.filter.Filter;
12  import org.mule.config.expression.ExpressionFilterParser;
13  import org.mule.routing.filters.ExpressionFilter;
14  import org.mule.routing.filters.logic.AndFilter;
15  import org.mule.tck.junit4.AbstractMuleContextTestCase;
16  
17  import org.junit.Test;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertFalse;
21  import static org.junit.Assert.assertNotNull;
22  import static org.junit.Assert.assertTrue;
23  
24  public class FilterExpressionParserTestCase extends AbstractMuleContextTestCase
25  {
26      @Test
27      public void testSimpleFilters() throws Exception
28      {
29          ExpressionFilterParser parser = new ExpressionFilterParser();
30          Filter f = parser.parseFilterString("#[regex:foo bar]");
31          assertNotNull(f);
32          assertTrue(f instanceof ExpressionFilter);
33  
34          MuleMessage message = new DefaultMuleMessage("foo bar baz", muleContext);
35          assertTrue(f.accept(message));
36  
37  
38          f = parser.parseFilterString("#[regex:.* bar] AND #[wildcard:foo*]");
39          assertNotNull(f);
40          assertTrue(f instanceof AndFilter);
41          assertEquals(2, ((AndFilter)f).getFilters().size());
42          assertTrue(((AndFilter)f).getFilters().get(0) instanceof ExpressionFilter);
43          assertEquals("regex", ((ExpressionFilter)((AndFilter)f).getFilters().get(0)).getEvaluator());
44          assertTrue(((AndFilter)f).getFilters().get(1) instanceof ExpressionFilter);
45          assertEquals("wildcard", ((ExpressionFilter)((AndFilter)f).getFilters().get(1)).getEvaluator());
46  
47          message = new DefaultMuleMessage("foo bar", muleContext);
48          assertTrue(f.accept(message));
49  
50          message = new DefaultMuleMessage("foo car", muleContext);
51          assertFalse(f.accept(message));
52  
53          f = parser.parseFilterString("#[regex:.* bar] OR #[wildcard:foo*]");
54          assertNotNull(f);
55  
56          message = new DefaultMuleMessage("foo bar", muleContext);
57          assertTrue(f.accept(message));
58  
59          message = new DefaultMuleMessage("foo car", muleContext);
60          assertTrue(f.accept(message));
61      }
62  }