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.outbound;
8   
9   import org.mule.api.MessagingException;
10  import org.mule.api.MuleEvent;
11  import org.mule.api.MuleException;
12  import org.mule.api.MuleMessage;
13  import org.mule.api.endpoint.OutboundEndpoint;
14  import org.mule.api.processor.MessageProcessor;
15  import org.mule.tck.junit4.AbstractMuleContextTestCase;
16  
17  import java.util.ArrayList;
18  import java.util.List;
19  
20  import org.junit.Test;
21  
22  import static org.junit.Assert.assertEquals;
23  import static org.junit.Assert.assertNotNull;
24  import static org.junit.Assert.assertTrue;
25  import static org.junit.Assert.fail;
26  
27  public class OutboundRouterTestCase extends AbstractMuleContextTestCase
28  {
29      @Test
30      public void testAddGoodEndpoint() throws Exception
31      {
32          AbstractOutboundRouter router = new DummyOutboundRouter();
33          OutboundEndpoint endpoint = getTestOutboundEndpoint("test");
34          router.addRoute(endpoint);
35          assertNotNull(router.getRoutes());
36          assertTrue(router.getRoutes().contains(endpoint));
37      }
38  
39      @Test
40      public void testSetGoodEndpoints() throws Exception
41      {
42          List<MessageProcessor> list= new ArrayList<MessageProcessor>();
43          list.add(getTestOutboundEndpoint("test"));
44          list.add(getTestOutboundEndpoint("test"));
45          AbstractOutboundRouter router = new DummyOutboundRouter();
46          assertNotNull(router.getRoutes());
47          assertEquals(0, router.getRoutes().size());
48          router.addRoute(getTestOutboundEndpoint("test"));
49          assertEquals(1, router.getRoutes().size());
50          router.setRoutes(list);
51          assertNotNull(router.getRoutes());
52          assertEquals(2, router.getRoutes().size());
53      }
54  
55      @Test
56      @SuppressWarnings({ "rawtypes", "unchecked" })
57      public void testSetBadEndpoints() throws Exception
58      {
59          List list = new ArrayList();
60          list.add(getTestInboundEndpoint("test"));
61          list.add(getTestOutboundEndpoint("test"));
62          AbstractOutboundRouter router = new DummyOutboundRouter();
63  
64          try
65          {
66              router.setRoutes(list);
67              fail("Invalid endpoint: Expecting an exception");
68          }
69          catch(Exception e)
70          {
71              assertEquals(ClassCastException.class, e.getClass());
72          }
73      }
74  
75      @Test
76      @SuppressWarnings({ "rawtypes", "unchecked" })
77      public void testSetBad2Endpoints() throws Exception
78      {
79          List list= new ArrayList();
80          list.add(getTestOutboundEndpoint("test"));
81          list.add(getTestInboundEndpoint("test"));
82          AbstractOutboundRouter router = new DummyOutboundRouter();
83  
84          try
85          {
86              router.setRoutes(list);
87              fail("Invalid endpoint: Expecting an exception");
88          }
89          catch(Exception e)
90          {
91              assertEquals(ClassCastException.class, e.getClass());
92          }
93      }
94  
95      private static class DummyOutboundRouter extends AbstractOutboundRouter
96      {
97          public boolean isMatch(MuleMessage message) throws MuleException
98          {
99              return false;
100         }
101 
102         @Override
103         protected MuleEvent route(MuleEvent event) throws MessagingException
104         {
105             return null;
106         }
107     }
108 }