View Javadoc

1   /*
2    * $Id: JsonExpressionEvaluatorTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
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  package org.mule.module.json;
11  
12  import org.mule.DefaultMuleMessage;
13  import org.mule.api.MuleMessage;
14  import org.mule.api.expression.ExpressionRuntimeException;
15  import org.mule.routing.filters.ExpressionFilter;
16  import org.mule.tck.AbstractMuleTestCase;
17  import org.mule.util.IOUtils;
18  
19  public class JsonExpressionEvaluatorTestCase extends AbstractMuleTestCase
20  {
21      public void testExpressions() throws Exception
22      {
23          String json = IOUtils.getResourceAsString("test-data.json", getClass());
24          MuleMessage message = new DefaultMuleMessage(json, muleContext);
25          JsonExpressionEvaluator eval = new JsonExpressionEvaluator();
26  
27          assertEquals("test from Mule: 6ffca02b-9d52-475e-8b17-946acdb01492", eval.evaluate("[0]/text", message));
28  
29          assertEquals("Mule Test", eval.evaluate("[0]/user/name", message));
30          assertEquals("Mule Test9", eval.evaluate("[9]/'user'/name", message));
31          assertNull(eval.evaluate("[9]/user/XXX", message));
32      }
33  
34      public void testExpressionsUsingManager() throws Exception
35      {
36          String json = IOUtils.getResourceAsString("test-data.json", getClass());
37          MuleMessage message = new DefaultMuleMessage(json, muleContext);
38  
39          assertEquals("test from Mule: 6ffca02b-9d52-475e-8b17-946acdb01492", muleContext.getExpressionManager().evaluate("#[json:[0]/text]", message));
40  
41          assertEquals("Mule Test", muleContext.getExpressionManager().evaluate("json:[0]/user/name", message));
42          assertEquals("Mule Test9", muleContext.getExpressionManager().evaluate("#[json:[9]/'user'/name]", message));
43          assertNull(muleContext.getExpressionManager().evaluate("json:[9]/user/XXX", message, false));
44  
45          try
46          {
47              muleContext.getExpressionManager().evaluate("json:[9]/user/XXX", message, true);
48              fail("A value was required");
49          }
50          catch (ExpressionRuntimeException e)
51          {
52              //Expected
53          }
54      }
55  
56      public void testExpressionFilter() throws Exception
57      {
58          String json = IOUtils.getResourceAsString("test-data.json", getClass());
59          MuleMessage message = new DefaultMuleMessage(json, muleContext);
60  
61          ExpressionFilter filter = new ExpressionFilter("#[json:[0]/text]");
62          filter.setMuleContext(muleContext);
63          assertTrue(filter.accept(message));
64  
65          filter.setExpression("[0]/favorited");
66          assertFalse(filter.accept(message));
67  
68          filter.setExpression("[0]/truncated");
69          assertTrue(filter.accept(message));
70  
71          filter.setExpression("[0]/source");
72          assertTrue(filter.accept(message));
73  
74          filter.setExpression("[0]/xxx");
75          assertFalse(filter.accept(message));
76      }
77  
78      public void testExpressionFilterWithBooleanLogic() throws Exception
79      {
80          String json = IOUtils.getResourceAsString("test-data.json", getClass());
81          MuleMessage message = new DefaultMuleMessage(json, muleContext);
82  
83          ExpressionFilter filter = new ExpressionFilter("#[json:[0]/text]");
84          filter.setMuleContext(muleContext);
85          assertTrue(filter.accept(message));
86  
87          filter.setExpression("[0]/favorited=false");
88          assertTrue(filter.accept(message));
89  
90          filter.setExpression("[0]/truncated != true");
91          assertFalse(filter.accept(message));
92  
93          filter.setExpression("[0]/source=null");
94          assertFalse(filter.accept(message));
95  
96          filter.setExpression("[0]/source!= null");
97          assertTrue(filter.accept(message));
98  
99  
100     }
101 
102     public void testExpressionFilterWithBooleanLogicWhereElementDoesNotExist() throws Exception
103     {
104         //Checks against elements that do not exist
105         String json = IOUtils.getResourceAsString("test-data.json", getClass());
106         MuleMessage message = new DefaultMuleMessage(json, muleContext);
107 
108         ExpressionFilter filter = new ExpressionFilter("#[json:[0]/xyz = null]");
109         filter.setMuleContext(muleContext);
110         assertTrue(filter.accept(message));
111 
112         filter.setExpression("[0]/xyz!= null");
113         assertFalse(filter.accept(message));
114     }
115 }