1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.construct;
12
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertNotNull;
15 import static org.junit.Assert.assertNull;
16
17 import org.mule.DefaultMuleMessage;
18 import org.mule.api.MuleException;
19 import org.mule.api.MuleMessage;
20 import org.mule.api.client.MuleClient;
21 import org.mule.tck.junit4.FunctionalTestCase;
22 import org.mule.tck.junit4.rule.DynamicPort;
23 import org.mule.tck.testmodels.fruit.Apple;
24 import org.mule.tck.testmodels.fruit.Orange;
25
26 import org.junit.Rule;
27 import org.junit.Test;
28
29 public class FlowNestingTestCase extends FunctionalTestCase
30 {
31 @Rule
32 public DynamicPort dynamicPort = new DynamicPort("port1");
33
34 @Override
35 protected String getConfigResources()
36 {
37 return "org/mule/test/construct/flow-nesting-config.xml";
38 }
39
40 @Test
41 public void testNestingFiltersAccepted() throws MuleException
42 {
43 MuleMessage request = new DefaultMuleMessage(new Orange(), muleContext);
44 request.setOutboundProperty("Currency", "MyCurrency");
45 request.setOutboundProperty("AcquirerCountry", "MyCountry");
46 request.setOutboundProperty("Amount", "4999");
47
48 MuleClient client = muleContext.getClient();
49
50 client.dispatch("vm://inFilter", request);
51 MuleMessage result = client.request("vm://outFilter", 5000);
52 assertNotNull(result);
53 }
54
55 @Test
56 public void testNestingFiltersRejected() throws MuleException
57 {
58 MuleMessage request = new DefaultMuleMessage(new Apple(), muleContext);
59 request.setOutboundProperty("Currency", "MyCurrency");
60 request.setOutboundProperty("AcquirerCountry", "MyCountry");
61 request.setOutboundProperty("Amount", "4999");
62
63 MuleClient client = muleContext.getClient();
64
65 client.dispatch("vm://inFilter", request);
66 MuleMessage result = client.request("vm://outFilter", 5000);
67 assertNull(result);
68 }
69
70 @Test
71 public void testNestingChoiceAccepted() throws Exception
72 {
73 MuleMessage request = new DefaultMuleMessage(new Apple(), muleContext);
74 request.setOutboundProperty("AcquirerCountry", "MyCountry");
75 request.setOutboundProperty("Amount", "4999");
76
77 MuleClient client = muleContext.getClient();
78
79 client.dispatch("vm://inChoice", request);
80 MuleMessage result = client.request("vm://outChoice", 5000);
81 assertNotNull(result);
82 assertEquals("ABC", result.getPayloadAsString());
83 }
84
85 @Test
86 public void testNestingChoiceRejected() throws Exception
87 {
88 MuleMessage request = new DefaultMuleMessage(new Apple(), muleContext);
89 request.setOutboundProperty("AcquirerCountry", "MyCountry");
90 request.setOutboundProperty("Amount", "5000");
91
92 MuleClient client = muleContext.getClient();
93
94 client.dispatch("vm://inChoice", request);
95 MuleMessage result = client.request("vm://outChoice", 5000);
96 assertNotNull(result);
97 assertEquals("AB", result.getPayloadAsString());
98 }
99 }
100
101