View Javadoc

1   /*
2    * $Id: ExpressionManagerTestCase.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.expression;
11  
12  import org.mule.DefaultMuleMessage;
13  import org.mule.api.MuleMessage;
14  import org.mule.tck.AbstractMuleTestCase;
15  
16  import java.sql.Timestamp;
17  
18  public class ExpressionManagerTestCase extends AbstractMuleTestCase
19  {
20      public void testManager() throws Exception
21      {
22          MuleMessage message = new DefaultMuleMessage("test", muleContext);
23          Object o = muleContext.getExpressionManager().evaluate("function:uuid", message);
24          assertNotNull(o);
25          o = muleContext.getExpressionManager().evaluate("function:now", message);
26          assertNotNull(o);
27          assertTrue(o instanceof Timestamp);
28      }
29  
30      public void testRegistration() throws Exception
31      {
32          // http://mule.mulesoft.org/jira/browse/MULE-3809 . For now ignore duplicate registrations.
33          /*try
34          {
35              DefaultExpressionManager.registerEvaluator(new MapPayloadExpressionEvaluator());
36              fail("extractor already exists");
37          }
38          catch (IllegalArgumentException e)
39          {
40              //Expected
41          }*/
42  
43          try
44          {
45              muleContext.getExpressionManager().registerEvaluator(null);
46              fail("null extractor");
47          }
48          catch (IllegalArgumentException e)
49          {
50              //Expected
51          }
52          assertNull(muleContext.getExpressionManager().unregisterEvaluator(null));
53  
54      }
55  
56  
57      public void testValidator() throws Exception
58      {
59          // fail for old-style ${}
60          assertFalse(muleContext.getExpressionManager().isValidExpression("http://${bean:user}:${bean:password}@${header:host}:${header:port}/foo/bar"));
61          assertFalse(muleContext.getExpressionManager().isValidExpression("${bean:user}"));
62  
63          // wiggly mule style!
64          assertTrue(muleContext.getExpressionManager().isValidExpression("#[bean:user]"));
65          assertTrue(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:#[bean:password]@#[header:host]:#[header:port]/foo/bar"));
66  
67          assertFalse(muleContext.getExpressionManager().isValidExpression("{bean:user}"));
68          assertFalse(muleContext.getExpressionManager().isValidExpression("#{bean:user"));
69          assertFalse(muleContext.getExpressionManager().isValidExpression("user"));
70  
71         assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user:#[bean:password]@#[header:host]:#[header:port]/foo/bar"));
72         assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:##[bean:password]@#[header:host]:#[header:port]/foo/bar"));
73         assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]]:##[bean:password]@#[header:host]:#[header:port]/foo/bar"));
74         assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:#[[bean:password]@#[header:host]:#[header:port]/foo/bar"));
75         assertTrue(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:#[#bean:password]@#[header:host]:#[header:port]/foo/bar"));
76  
77      }
78  
79      public void testParsing()
80      {
81          MuleMessage msg = new DefaultMuleMessage("test", muleContext);
82          msg.setOutboundProperty("user", "vasya");
83          msg.setOutboundProperty("password", "pupkin");
84          msg.setOutboundProperty("host", "example.com");
85          msg.setOutboundProperty("port", "12345");
86  
87          String result = muleContext.getExpressionManager().parse("http://#[header:user]:#[header:password]@#[header:host]:#[header:port]/foo/bar", msg);
88          assertNotNull(result);
89          assertEquals("http://vasya:pupkin@example.com:12345/foo/bar", result);
90      }
91  }