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.routing;
8   
9   import org.mule.DefaultMuleEvent;
10  import org.mule.DefaultMuleMessage;
11  import org.mule.api.MuleEvent;
12  import org.mule.api.MuleMessage;
13  import org.mule.api.MuleSession;
14  import org.mule.api.endpoint.OutboundEndpoint;
15  import org.mule.api.service.Service;
16  import org.mule.tck.MuleTestUtils;
17  import org.mule.tck.junit4.AbstractMuleContextTestCase;
18  
19  import com.mockobjects.dynamic.Mock;
20  
21  import org.junit.Test;
22  
23  import static org.junit.Assert.assertNotNull;
24  import static org.junit.Assert.assertNull;
25  
26  public class IdempotentSecureHashMessageFilterTestCase extends AbstractMuleContextTestCase
27  {
28      public IdempotentSecureHashMessageFilterTestCase()
29      {
30          setStartContext(true);
31      }
32  
33      @Test
34      public void testIdempotentReceiver() throws Exception
35      {
36          OutboundEndpoint endpoint1 = getTestOutboundEndpoint("Test1Provider", 
37              "test://Test1Provider?exchangePattern=one-way");
38          Mock session = MuleTestUtils.getMockSession();
39          Service service = getTestService();
40          session.matchAndReturn("getFlowConstruct", service);
41  
42          IdempotentSecureHashMessageFilter ir = new IdempotentSecureHashMessageFilter();
43          ir.setFlowConstruct(service);
44          ir.setThrowOnUnaccepted(false);
45  
46          MuleMessage okMessage = new DefaultMuleMessage("OK", muleContext);
47          MuleEvent event = new DefaultMuleEvent(okMessage, endpoint1, (MuleSession) session.proxy());
48  
49          // This one will process the event on the target endpoint
50          event = ir.process(event);
51          assertNotNull(event);
52  
53           // This will not process, because the message is a duplicate
54          okMessage = new DefaultMuleMessage("OK", muleContext);
55          event = new DefaultMuleEvent(okMessage, endpoint1, (MuleSession) session.proxy());
56          event = ir.process(event);
57          assertNull(event);
58  
59          // This will process, because the message  is not a duplicate
60          okMessage = new DefaultMuleMessage("Not OK", muleContext);
61          event = new DefaultMuleEvent(okMessage, endpoint1, (MuleSession) session.proxy());
62          event = ir.process(event);
63          assertNotNull(event);
64      }
65  
66  }