View Javadoc

1   /*
2    * $Id: MessageEnricherTestCase.java 23080 2011-10-04 03:15:00Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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 }