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.api.MuleException;
10  import org.mule.api.routing.RoutePathNotFoundException;
11  import org.mule.management.stats.RouterStatistics;
12  import org.mule.routing.filters.EqualsFilter;
13  import org.mule.tck.junit4.AbstractMuleContextTestCase;
14  import org.mule.tck.testmodels.mule.TestMessageProcessor;
15  
16  import org.junit.Test;
17  
18  import static org.junit.Assert.assertEquals;
19  import static org.junit.Assert.assertTrue;
20  import static org.junit.Assert.fail;
21  
22  public class ChoiceRouterTestCase extends AbstractMuleContextTestCase
23  {
24      private ChoiceRouter choiceRouter;
25  
26      public ChoiceRouterTestCase()
27      {
28          setDisposeContextPerClass(true);
29      }
30  
31      @Override
32      protected void doSetUp() throws Exception
33      {
34          super.doSetUp();
35          choiceRouter = new ChoiceRouter();
36      }
37  
38      @Test
39      public void testNoRoute() throws Exception
40      {
41          try
42          {
43              choiceRouter.process(getTestEvent("foo"));
44              fail("should have got a MuleException");
45          }
46          catch (MuleException me)
47          {
48              assertTrue(me instanceof RoutePathNotFoundException);
49          }
50      }
51  
52      @Test
53      public void testOnlyDefaultRoute() throws Exception
54      {
55          choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
56          assertEquals("foo:default", choiceRouter.process(getTestEvent("foo")).getMessageAsString());
57      }
58  
59      @Test
60      public void testNoMatchingNorDefaultRoute() throws Exception
61      {
62          try
63          {
64              choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
65              choiceRouter.process(getTestEvent("foo"));
66              fail("should have got a MuleException");
67          }
68          catch (MuleException me)
69          {
70              assertTrue(me instanceof RoutePathNotFoundException);
71          }
72      }
73  
74      @Test
75      public void testNoMatchingRouteWithDefaultRoute() throws Exception
76      {
77          choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
78          choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
79          assertEquals("foo:default", choiceRouter.process(getTestEvent("foo")).getMessageAsString());
80      }
81  
82      @Test
83      public void testMatchingRouteWithDefaultRoute() throws Exception
84      {
85          choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
86          choiceRouter.setDefaultRoute(new TestMessageProcessor("default"));
87          assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
88      }
89  
90      @Test
91      public void testMatchingRouteWithStatistics() throws Exception
92      {
93          choiceRouter.addRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
94          choiceRouter.setRouterStatistics(new RouterStatistics(RouterStatistics.TYPE_OUTBOUND));
95          assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
96      }
97  
98      @Test
99      public void testAddAndDeleteRoute() throws Exception
100     {
101         try
102         {
103             TestMessageProcessor mp = new TestMessageProcessor("bar");
104             choiceRouter.addRoute(mp, new EqualsFilter("zap"));
105             choiceRouter.removeRoute(mp);
106             choiceRouter.setRouterStatistics(new RouterStatistics(RouterStatistics.TYPE_OUTBOUND));
107             choiceRouter.process(getTestEvent("zap"));
108             fail("should have got a MuleException");
109         }
110         catch (MuleException me)
111         {
112             assertTrue(me instanceof RoutePathNotFoundException);
113         }
114     }
115 
116     @Test
117     public void testUpdateRoute() throws Exception
118     {
119         TestMessageProcessor mp = new TestMessageProcessor("bar");
120         choiceRouter.addRoute(mp, new EqualsFilter("paz"));
121         choiceRouter.updateRoute(mp, new EqualsFilter("zap"));
122         assertEquals("zap:bar", choiceRouter.process(getTestEvent("zap")).getMessageAsString());
123     }
124 
125     @Test
126     public void testRemovingUpdatingMissingRoutes()
127     {
128         choiceRouter.updateRoute(new TestMessageProcessor("bar"), new EqualsFilter("zap"));
129         choiceRouter.removeRoute(new TestMessageProcessor("rab"));
130     }
131 
132 }