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