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