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