1
2
3
4
5
6
7
8
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.tck.AbstractMuleTestCase;
17 import org.mule.transformer.simple.StringAppendTransformer;
18
19 import java.sql.Timestamp;
20
21 public class ExpressionManagerTestCase extends AbstractMuleTestCase
22 {
23 public void testManager() throws Exception
24 {
25 MuleMessage message = new DefaultMuleMessage("test", muleContext);
26 Object o = muleContext.getExpressionManager().evaluate("function:uuid", message);
27 assertNotNull(o);
28 o = muleContext.getExpressionManager().evaluate("function:now", message);
29 assertNotNull(o);
30 assertTrue(o instanceof Timestamp);
31 }
32
33 public void testRegistration() throws Exception
34 {
35
36
37
38
39
40
41
42
43
44
45
46 try
47 {
48 muleContext.getExpressionManager().registerEvaluator(null);
49 fail("null extractor");
50 }
51 catch (IllegalArgumentException e)
52 {
53
54 }
55 assertNull(muleContext.getExpressionManager().unregisterEvaluator(null));
56
57 }
58
59
60 public void testValidator() throws Exception
61 {
62
63 assertFalse(muleContext.getExpressionManager().isValidExpression("http://${bean:user}:${bean:password}@${header:host}:${header:port}/foo/bar"));
64 assertFalse(muleContext.getExpressionManager().isValidExpression("${bean:user}"));
65
66
67 assertTrue(muleContext.getExpressionManager().isValidExpression("#[bean:user]"));
68 assertTrue(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:#[bean:password]@#[header:host]:#[header:port]/foo/bar"));
69
70 assertFalse(muleContext.getExpressionManager().isValidExpression("{bean:user}"));
71 assertFalse(muleContext.getExpressionManager().isValidExpression("#{bean:user"));
72 assertFalse(muleContext.getExpressionManager().isValidExpression("user"));
73
74 assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user:#[bean:password]@#[header:host]:#[header:port]/foo/bar"));
75 assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:##[bean:password]@#[header:host]:#[header:port]/foo/bar"));
76 assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]]:##[bean:password]@#[header:host]:#[header:port]/foo/bar"));
77 assertFalse(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:#[[bean:password]@#[header:host]:#[header:port]/foo/bar"));
78 assertTrue(muleContext.getExpressionManager().isValidExpression("http://#[bean:user]:#[#bean:password]@#[header:host]:#[header:port]/foo/bar"));
79
80 }
81
82 public void testParsing() throws Exception
83 {
84 MuleMessage msg = new DefaultMuleMessage("test", muleContext);
85 msg.setOutboundProperty("user", "vasya");
86 msg.setOutboundProperty("password", "pupkin");
87 msg.setOutboundProperty("host", "example.com");
88 msg.setOutboundProperty("port", "12345");
89
90 String result = muleContext.getExpressionManager().parse("http://#[header:user]:#[header:password]@#[header:host]:#[header:port]/foo/bar", msg);
91 assertNotNull(result);
92 assertEquals("http://vasya:pupkin@example.com:12345/foo/bar", result);
93 }
94
95 public void testNestedParsing() throws Exception
96 {
97 muleContext.getRegistry().registerObject("proc1", new StringAppendTransformer("c"));
98 muleContext.getRegistry().registerObject("proc2", new StringAppendTransformer("e"));
99
100 MuleEvent event = getTestInboundEvent("b");
101 RequestContext.setEvent(event);
102
103 assertEquals("-1-abcde-2-", muleContext.getExpressionManager().parse(
104 "-#[string:1]-#[process:proc2:#[string:a#[process:proc1]d]]-#[string:2]-", event.getMessage()));
105 }
106
107 public void testBooleanEvaluation()
108 {
109 MuleMessage msg = new DefaultMuleMessage("test", muleContext);
110 msg.setOutboundProperty("user", "vasya");
111 msg.setOutboundProperty("password", "pupkin");
112 msg.setOutboundProperty("host", "example.com");
113 msg.setOutboundProperty("port", "12345");
114
115
116 assertFalse(muleContext.getExpressionManager().evaluateBoolean("header:user", msg));
117 assertTrue(muleContext.getExpressionManager().evaluateBoolean("header:user", msg, false, true));
118 assertFalse(muleContext.getExpressionManager().evaluateBoolean("header:user", msg, false, false));
119
120
121 assertFalse(muleContext.getExpressionManager().evaluateBoolean("header:ur", msg));
122 assertTrue(muleContext.getExpressionManager().evaluateBoolean("header:ur", msg, true, false));
123 assertFalse(muleContext.getExpressionManager().evaluateBoolean("header:ur", msg, false, false));
124
125
126 assertTrue(muleContext.getExpressionManager().evaluateBoolean("string:true", msg));
127 assertFalse(muleContext.getExpressionManager().evaluateBoolean("string:false", msg));
128 }
129 }