1
2
3
4
5
6
7
8
9
10
11 package org.mule.mule.enricher;
12
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertNull;
15
16 import org.mule.RequestContext;
17 import org.mule.api.MuleEvent;
18 import org.mule.api.MuleException;
19 import org.mule.api.MuleMessage;
20 import org.mule.api.processor.MessageProcessor;
21 import org.mule.enricher.MessageEnricher;
22 import org.mule.enricher.MessageEnricher.EnrichExpressionPair;
23 import org.mule.tck.junit4.AbstractMuleContextTestCase;
24 import org.mule.transformer.simple.StringAppendTransformer;
25
26 import org.junit.Test;
27
28 public class MessageEnricherTestCase extends AbstractMuleContextTestCase
29 {
30
31 @Test
32 public void testEnrichHeaderWithPayload() throws Exception
33 {
34 MessageEnricher enricher = new MessageEnricher();
35 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:myHeader]"));
36 enricher.setEnrichmentMessageProcessor(new MessageProcessor()
37 {
38
39 public MuleEvent process(MuleEvent event) throws MuleException
40 {
41 event.getMessage().setPayload("test");
42 return event;
43 }
44 });
45
46 MuleMessage result = enricher.process(getTestEvent("")).getMessage();
47 assertEquals("test", result.getOutboundProperty("myHeader"));
48 assertEquals("", result.getPayload());
49 }
50
51 @Test
52 public void testEnrichHeaderWithHeader() throws Exception
53 {
54 MessageEnricher enricher = new MessageEnricher();
55 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header1]", "#[header:myHeader]"));
56 enricher.setEnrichmentMessageProcessor(new MessageProcessor()
57 {
58
59 public MuleEvent process(MuleEvent event) throws MuleException
60 {
61 event.getMessage().setOutboundProperty("header1", "test");
62 return event;
63 }
64 });
65
66 MuleMessage result = enricher.process(getTestEvent("")).getMessage();
67 assertEquals("test", result.getOutboundProperty("myHeader"));
68 assertEquals("", result.getPayload());
69 }
70
71 @Test
72 public void testEnrichHeadersMToN() throws Exception
73 {
74 MessageEnricher enricher = new MessageEnricher();
75 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header1]", "#[header:myHeader1]"));
76 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header2]", "#[header:myHeader2]"));
77 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header3]", "#[header:myHeader3]"));
78 enricher.setEnrichmentMessageProcessor(new MessageProcessor()
79 {
80
81 public MuleEvent process(MuleEvent event) throws MuleException
82 {
83 event.getMessage().setOutboundProperty("header1", "test");
84 event.getMessage().setOutboundProperty("header2", "test2");
85 event.getMessage().setOutboundProperty("header3", "test3");
86 return event;
87 }
88 });
89
90 MuleMessage result = enricher.process(getTestEvent("")).getMessage();
91
92 assertNull(result.getOutboundProperty("myHeader"));
93 assertEquals("test2",result.getOutboundProperty("myHeader2"));
94 assertEquals("test3",result.getOutboundProperty("myHeader3"));
95
96 assertEquals("", result.getPayload());
97 }
98
99 @Test
100 public void testEnrichHeaderNestedEvaluator() throws Exception
101 {
102 muleContext.getRegistry().registerObject("appender", new StringAppendTransformer(" append"));
103
104 MessageEnricher enricher = new MessageEnricher();
105 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[process:appender:#[header:header1]]",
106 "#[header:myHeader]"));
107 enricher.setEnrichmentMessageProcessor(new MessageProcessor()
108 {
109
110 public MuleEvent process(MuleEvent event) throws MuleException
111 {
112 event.getMessage().setOutboundProperty("header1", "test");
113 return event;
114 }
115 });
116
117 MuleEvent event = getTestEvent("");
118 RequestContext.setEvent(event);
119
120 assertEquals("test append", enricher.process(getTestEvent("")).getMessage().getOutboundProperty(
121 "myHeader"));
122 }
123
124 @Test
125 public void testEnrichWithNullResponse() throws Exception
126 {
127 MessageEnricher enricher = new MessageEnricher();
128 enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:myHeader]"));
129 enricher.setEnrichmentMessageProcessor(new MessageProcessor()
130 {
131
132 public MuleEvent process(MuleEvent event) throws MuleException
133 {
134 return null;
135 }
136 });
137
138 MuleMessage result = enricher.process(getTestEvent("")).getMessage();
139 assertNull(result.getOutboundProperty("myHeader"));
140 assertEquals("", result.getPayload());
141 }
142
143 }