View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.endpoint.inbound;
8   
9   import org.mule.DefaultMuleEvent;
10  import org.mule.DefaultMuleMessage;
11  import org.mule.MessageExchangePattern;
12  import org.mule.api.MuleEvent;
13  import org.mule.api.MuleMessage;
14  import org.mule.api.endpoint.ImmutableEndpoint;
15  import org.mule.api.endpoint.InboundEndpoint;
16  import org.mule.api.processor.MessageProcessor;
17  import org.mule.endpoint.AbstractMessageProcessorTestCase;
18  import org.mule.processor.chain.DefaultMessageProcessorChainBuilder;
19  import org.mule.tck.testmodels.mule.TestMessageProcessor;
20  
21  import java.util.HashMap;
22  import java.util.Map;
23  
24  import org.junit.Test;
25  
26  import static org.junit.Assert.assertEquals;
27  
28  /**
29   * Unit test for configuring message processors on an inbound endpoint.
30   */
31  public class InboundEndpointMessageProcessorsTestCase extends AbstractMessageProcessorTestCase
32  {
33      private static final String TEST_MESSAGE = "test";
34  
35      private InboundEndpoint endpoint;
36      private MuleMessage inMessage;
37      private MuleEvent requestEvent;
38      private MuleEvent result;
39  
40      @Override
41      protected void doSetUp() throws Exception
42      {
43          super.doSetUp();
44          inMessage = createTestRequestMessage();
45          endpoint = createTestInboundEndpoint(null, null, null, null, 
46              MessageExchangePattern.REQUEST_RESPONSE, null);
47          requestEvent = createTestRequestEvent(endpoint);
48      }
49  
50      @Test
51      public void testProcessors() throws Exception
52      {
53          DefaultMessageProcessorChainBuilder builder = new DefaultMessageProcessorChainBuilder();
54          builder.chain(new TestMessageProcessor("1"), new TestMessageProcessor("2"), new TestMessageProcessor("3"));
55          MessageProcessor mpChain = builder.build();
56          
57          result = mpChain.process(requestEvent);
58          assertEquals(TEST_MESSAGE + ":1:2:3", result.getMessage().getPayload());
59      }
60  
61      @Test
62      public void testNoProcessors() throws Exception
63      {
64          DefaultMessageProcessorChainBuilder builder = new DefaultMessageProcessorChainBuilder();
65          MessageProcessor mpChain = builder.build();
66          
67          result = mpChain.process(requestEvent);
68          assertEquals(TEST_MESSAGE, result.getMessage().getPayload());
69      }
70  
71      protected MuleMessage createTestRequestMessage()
72      {
73          Map<String, Object> props = new HashMap<String, Object>();
74          props.put("prop1", "value1");
75          return new DefaultMuleMessage(TEST_MESSAGE, props, muleContext);
76      }
77  
78      protected MuleEvent createTestRequestEvent(ImmutableEndpoint endpoint) throws Exception
79      {
80          return new DefaultMuleEvent(inMessage, endpoint, getTestSession(getTestService(), muleContext));
81      }    
82  }