1
2
3
4
5
6
7 package org.mule.expression;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.api.MuleMessage;
11 import org.mule.tck.junit4.AbstractMuleContextTestCase;
12 import org.mule.tck.testmodels.fruit.Apple;
13 import org.mule.tck.testmodels.fruit.Banana;
14 import org.mule.tck.testmodels.fruit.FruitBasket;
15 import org.mule.tck.testmodels.fruit.FruitBowl;
16 import org.mule.tck.testmodels.fruit.FruitBowlToFruitBasket;
17
18 import java.io.ByteArrayInputStream;
19
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
27
28 public class PayloadExpressionEvaluatorTestCase extends AbstractMuleContextTestCase
29 {
30 @Test
31 public void testSimple() throws Exception
32 {
33 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
34 MuleMessage message = new DefaultMuleMessage("test", muleContext);
35
36
37 Object result = eval.evaluate(null, message);
38 assertNotNull(result);
39 assertEquals("test", result);
40
41
42 result = eval.evaluate(null, null);
43 assertNull(result);
44 }
45
46
47
48
49
50
51 @Test
52 public void testSimpleUsingManager() throws Exception
53 {
54 MuleMessage message = new DefaultMuleMessage("test", muleContext);
55
56 assertFalse(muleContext.getExpressionManager().isValidExpression("${payload:}"));
57 assertTrue(muleContext.getExpressionManager().isValidExpression("#[payload:]"));
58
59 Object result = muleContext.getExpressionManager().evaluate("#[payload:]", message);
60 assertNotNull(result);
61 assertEquals("test", result);
62
63 result = muleContext.getExpressionManager().evaluate("#[payload:]", null);
64 assertNull(result);
65 }
66
67 @Test
68 public void testWithTransform() throws Exception
69 {
70 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
71 MuleMessage message = new DefaultMuleMessage("test", muleContext);
72
73
74 Object result = eval.evaluate("byte[]", message);
75 assertNotNull(result);
76 assertTrue(result instanceof byte[]);
77 assertEquals("test", new String((byte[]) result));
78
79 ByteArrayInputStream bais = new ByteArrayInputStream("test2".getBytes());
80
81 result = eval.evaluate("java.lang.String", new DefaultMuleMessage(bais, muleContext));
82 assertNotNull(result);
83 assertEquals("test2", result);
84 }
85
86 @Test
87 public void testWithMoreComplexTransform() throws Exception
88 {
89 MessagePayloadExpressionEvaluator eval = new MessagePayloadExpressionEvaluator();
90 MuleMessage message = new DefaultMuleMessage(new FruitBowl(new Apple(), new Banana()), muleContext);
91
92
93 muleContext.getRegistry().registerTransformer(new FruitBowlToFruitBasket());
94
95
96 Object result = eval.evaluate("org.mule.tck.testmodels.fruit.FruitBasket", message);
97 assertNotNull(result);
98 assertTrue(result instanceof FruitBasket);
99 FruitBasket fb = (FruitBasket) result;
100 assertEquals(2, fb.getFruit().size());
101 assertTrue(fb.hasBanana());
102 assertTrue(fb.hasApple());
103 }
104 }