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.expression;
8   
9   import org.mule.DefaultMuleMessage;
10  import org.mule.api.MuleMessage;
11  import org.mule.message.DefaultExceptionPayload;
12  import org.mule.tck.junit4.AbstractMuleContextTestCase;
13  
14  import org.junit.Test;
15  
16  import static org.junit.Assert.assertEquals;
17  import static org.junit.Assert.assertNotNull;
18  import static org.junit.Assert.assertNull;
19  import static org.junit.Assert.fail;
20  
21  public class MessageExpressionEvaluatorTestCase extends AbstractMuleContextTestCase
22  {
23      @Test
24      public void testUsingEvaluatorDirectly() throws Exception
25      {
26          MessageExpressionEvaluator eval = new MessageExpressionEvaluator();
27          MuleMessage message = new DefaultMuleMessage("test", muleContext);
28          message.setCorrelationId(message.getUniqueId());
29          message.setCorrelationSequence(1);
30          message.setCorrelationGroupSize(2);
31          message.setReplyTo("foo");
32          message.setEncoding("UTF-8");
33          Exception e = new Exception("dummy");
34          message.setExceptionPayload(new DefaultExceptionPayload(e));
35  
36          //no expression
37          Object result = eval.evaluate(null, message);
38          assertNotNull(result);
39          assertEquals(message, result);
40  
41          //no expression
42          result = eval.evaluate(null, null);
43          assertNull(result);
44  
45          assertEquals(message.getUniqueId(), eval.evaluate("id", message));
46          assertEquals(message.getUniqueId(), eval.evaluate("correlationId", message));
47          assertEquals(new Integer(1), eval.evaluate("correlationSequence", message));
48          assertEquals(new Integer(2), eval.evaluate("correlationGroupSize", message));
49          assertEquals("foo", eval.evaluate("replyTo", message));
50          assertEquals(e, eval.evaluate("exception", message));
51          assertEquals("UTF-8", eval.evaluate("encoding", message));
52          assertEquals("test", eval.evaluate("payload", message));
53  
54          try
55          {
56              eval.evaluate("xxx", message);
57              fail("xxx is not a supported expresion");
58          }
59          catch (Exception e1)
60          {
61              //Exprected
62          }
63      }
64  
65      /**
66       * Make sure the evaluator gets registered properly
67       *
68       * @throws Exception if the test fails
69       */
70      @Test
71      public void testUsingManager() throws Exception
72      {
73          MuleMessage message = new DefaultMuleMessage("test", muleContext);
74          message.setCorrelationId(message.getUniqueId());
75          message.setCorrelationSequence(1);
76          message.setCorrelationGroupSize(2);
77          message.setReplyTo("foo");
78          message.setEncoding("UTF-8");
79          Exception e = new Exception("dummy");
80          message.setExceptionPayload(new DefaultExceptionPayload(e));
81  
82  
83          assertEquals(message.getUniqueId(), muleContext.getExpressionManager().evaluate("#[message:id]", message));
84          assertEquals(message.getUniqueId(), muleContext.getExpressionManager().evaluate("#[message:correlationId]", message));
85          assertEquals(new Integer(1), muleContext.getExpressionManager().evaluate("#[message:correlationSequence]", message));
86          assertEquals(new Integer(2), muleContext.getExpressionManager().evaluate("#[message:correlationGroupSize]", message));
87          assertEquals("foo", muleContext.getExpressionManager().evaluate("#[message:replyTo]", message));
88          assertEquals(e, muleContext.getExpressionManager().evaluate("#[message:exception]", message));
89          assertEquals("UTF-8", muleContext.getExpressionManager().evaluate("#[message:encoding]", message));
90          assertEquals("test", muleContext.getExpressionManager().evaluate("#[message:payload]", message));
91  
92          try
93          {
94              muleContext.getExpressionManager().evaluate("#[message:xxx]", message, true);
95              fail("xxx is not a supported expresion");
96          }
97          catch (Exception e1)
98          {
99              //Expected
100         }
101     }
102 }