1   /*
2    * $Id: MuleContextExpressionEvaluatorTestCase.java 11457 2008-03-20 23:21:50Z rossmason $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.expression;
11  
12  import org.mule.DefaultMuleMessage;
13  import org.mule.RequestContext;
14  import org.mule.api.MuleEvent;
15  import org.mule.api.MuleMessage;
16  import org.mule.api.MuleRuntimeException;
17  import org.mule.tck.AbstractMuleTestCase;
18  import org.mule.tck.testmodels.fruit.Apple;
19  import org.mule.util.expression.ExpressionEvaluatorManager;
20  import org.mule.util.expression.MuleContextExpressionEvaluator;
21  
22  public class MuleContextExpressionEvaluatorTestCase extends AbstractMuleTestCase
23  {
24      //@Override
25      protected void doSetUp() throws Exception
26      {
27          MuleEvent event = getTestEvent("testing",
28                  getTestService("apple", Apple.class),
29                  getTestInboundEndpoint("test", "test://foo"));
30          RequestContext.setEvent(event);
31      }
32  
33      public void testExpressions() throws Exception
34      {
35          MuleMessage message = new DefaultMuleMessage("test");
36          MuleContextExpressionEvaluator extractor = new MuleContextExpressionEvaluator();
37  
38          Object o = extractor.evaluate("serviceName", message);
39          assertEquals("apple", o);
40  
41          o = extractor.evaluate("modelName", message);
42          assertNotNull(o);
43  
44          o = extractor.evaluate("inboundEndpoint", message);
45          assertEquals("test://foo", o.toString());
46  
47          o = extractor.evaluate("serverId", message);
48          assertNotNull(o);
49  
50          o = extractor.evaluate("clusterId", message);
51          assertNotNull(o);
52  
53          o = extractor.evaluate("domainId", message);
54          assertNotNull(o);
55  
56          o = extractor.evaluate("workingDir", message);
57          assertNotNull(o);
58  
59          try
60          {
61              o = extractor.evaluate("bork", message);
62              fail("bork is not a valid mule context value");
63          }
64          catch (Exception e)
65          {
66              //expected
67          }
68      }
69  
70      public void testExpressionsFromExtractorManager() throws Exception
71      {
72          MuleMessage message = new DefaultMuleMessage("test");
73          Object o = ExpressionEvaluatorManager.evaluate("mule:serviceName", message);
74          assertEquals("apple", o);
75  
76          o = ExpressionEvaluatorManager.evaluate("mule:modelName", message);
77          assertNotNull(o);
78  
79          o = ExpressionEvaluatorManager.evaluate("mule:inboundEndpoint", message);
80          assertEquals("test://foo", o.toString());
81  
82          o = ExpressionEvaluatorManager.evaluate("mule:serverId", message);
83          assertNotNull(o);
84  
85          o = ExpressionEvaluatorManager.evaluate("mule:clusterId", message);
86          assertNotNull(o);
87  
88          o = ExpressionEvaluatorManager.evaluate("mule:domainId", message);
89          assertNotNull(o);
90  
91          o = ExpressionEvaluatorManager.evaluate("mule:workingDir", message);
92          assertNotNull(o);
93  
94          try
95          {
96              o = ExpressionEvaluatorManager.evaluate("mule:bork", message);
97              fail("bork is not a valid mule context value");
98          }
99          catch (Exception e)
100         {
101             //expected
102         }
103     }
104 
105     public void testMissingEventContext() throws Exception
106     {
107         RequestContext.clear();
108         
109         MuleMessage message = new DefaultMuleMessage("test");
110         MuleContextExpressionEvaluator extractor = new MuleContextExpressionEvaluator();
111 
112         Object o = extractor.evaluate("serverId", message);
113         assertNotNull(o);
114 
115         try
116         {
117             o = extractor.evaluate("serviceName", message);
118             fail("There is no current event context");
119         }
120         catch (MuleRuntimeException e)
121         {
122             //expected
123         }
124 
125     }
126 }