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.tck.junit4.AbstractMuleContextTestCase;
12  import org.mule.tck.testmodels.fruit.Apple;
13  
14  import java.net.InetAddress;
15  import java.sql.Timestamp;
16  import java.util.Date;
17  
18  import org.junit.Test;
19  
20  import static org.junit.Assert.assertEquals;
21  import static org.junit.Assert.assertNotNull;
22  import static org.junit.Assert.assertTrue;
23  import static org.junit.Assert.fail;
24  
25  public class FunctionExpressionEvaluatorTestCase extends AbstractMuleContextTestCase
26  {
27  
28      @Test
29      public void testFunctions() throws Exception
30      {
31          MuleMessage message = new DefaultMuleMessage(new Apple(), muleContext);
32          FunctionExpressionEvaluator extractor = new FunctionExpressionEvaluator();
33          Object o = extractor.evaluate("uuid", message);
34          assertNotNull(o);
35          o = extractor.evaluate("now", message);
36          assertNotNull(o);
37          assertTrue(o instanceof Timestamp);
38  
39          o = extractor.evaluate("date", message);
40          assertNotNull(o);
41          assertTrue(o instanceof Date);
42  
43          o = extractor.evaluate("hostname", message);
44          assertNotNull(o);
45          assertEquals(InetAddress.getLocalHost().getHostName(), o);
46  
47          o = extractor.evaluate("ip", message);
48          assertNotNull(o);
49          assertEquals(InetAddress.getLocalHost().getHostAddress(), o);
50  
51          o = extractor.evaluate("payloadClass", message);
52          assertNotNull(o);
53          assertEquals(Apple.class.getName(), o);
54  
55          o = extractor.evaluate("shortPayloadClass", message);
56          assertNotNull(o);
57          assertEquals("Apple", o);
58  
59          try
60          {
61              extractor.evaluate("bork", message);
62              fail("bork is not a valid function");
63          }
64          catch (IllegalArgumentException e)
65          {
66              //expected
67          }
68      }
69  
70      @Test
71      public void testFunctionsFromExtractorManager() throws Exception
72      {
73          MuleMessage message = new DefaultMuleMessage(new Apple(), muleContext);
74          Object o = muleContext.getExpressionManager().evaluate("function:uuid", message);
75          assertNotNull(o);
76          o = muleContext.getExpressionManager().evaluate("function:now", message);
77          assertNotNull(o);
78          assertTrue(o instanceof Timestamp);
79  
80          o = muleContext.getExpressionManager().evaluate("function:date", message);
81          assertNotNull(o);
82          assertTrue(o instanceof Date);
83  
84          o = muleContext.getExpressionManager().evaluate("function:hostname", message);
85          assertNotNull(o);
86          assertEquals(InetAddress.getLocalHost().getHostName(), o);
87  
88          o = muleContext.getExpressionManager().evaluate("function:ip", message);
89          assertNotNull(o);
90          assertEquals(InetAddress.getLocalHost().getHostAddress(), o);
91  
92          o = muleContext.getExpressionManager().evaluate("function:payloadClass", message);
93          assertNotNull(o);
94          assertEquals(Apple.class.getName(), o);
95  
96          o = muleContext.getExpressionManager().evaluate("function:shortPayloadClass", message);
97          assertNotNull(o);
98          assertEquals("Apple", o);
99  
100         try
101         {
102             muleContext.getExpressionManager().evaluate("function:bork", message);
103             fail("bork is not a valid function");
104         }
105         catch (IllegalArgumentException e)
106         {
107             //expected
108         }
109 
110         try
111         {
112             muleContext.getExpressionManager().evaluate("function:", message);
113             fail("'Empty string' is not a valid function");
114         }
115         catch (IllegalArgumentException e)
116         {
117             //expected
118         }
119     }
120 }