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