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