View Javadoc

1   /*
2    * $Id: SpringNamespaceConfigBuilderV2TestCase.java 22401 2011-07-13 09:10:18Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.test.spring;
12  
13  import org.mule.DefaultMuleMessage;
14  import org.mule.api.MuleMessage;
15  import org.mule.api.config.ConfigurationBuilder;
16  import org.mule.api.config.ConfigurationException;
17  import org.mule.api.endpoint.ImmutableEndpoint;
18  import org.mule.api.routing.MessageInfoMapping;
19  import org.mule.api.service.Service;
20  import org.mule.api.transformer.Transformer;
21  import org.mule.config.spring.SpringXmlConfigurationBuilder;
22  import org.mule.routing.ExpressionMessageInfoMapping;
23  import org.mule.service.ServiceCompositeMessageSource;
24  import org.mule.tck.AbstractConfigBuilderTestCase;
25  import org.mule.tck.testmodels.fruit.Apple;
26  import org.mule.tck.testmodels.mule.TestCompressionTransformer;
27  
28  import java.util.HashMap;
29  import java.util.List;
30  import java.util.Map;
31  
32  import org.junit.Test;
33  
34  import static org.junit.Assert.assertEquals;
35  import static org.junit.Assert.assertFalse;
36  import static org.junit.Assert.assertNotNull;
37  import static org.junit.Assert.assertTrue;
38  
39  /**
40   * This is an extended version of the same test covered in
41   * {@link org.mule.test.spring.SpringNamespaceConfigBuilderTestCase}.  Both are translations of an
42   * earlier (1.X) test.
43   *
44   * I realise this seems rather messy, and I did consider merging the two, but they often test different
45   * things, and we would have lost quite a few tests on merging.  So I am afraid we are left with two
46   * rather rambling, parallel tests.  But these tests examing "corner cases" no other tests cover, so
47   * are quite valuable...
48   */
49  public class SpringNamespaceConfigBuilderV2TestCase extends AbstractConfigBuilderTestCase
50  {
51  
52      public SpringNamespaceConfigBuilderV2TestCase()
53      {
54          super(true);
55          setDisposeContextPerClass(true);
56      }
57  
58      @Override
59      public String getConfigResources()
60      {
61          return "org/mule/test/spring/config2/test-xml-mule2-config.xml," +
62                  "org/mule/test/spring/config2/test-xml-mule2-config-split.xml," +
63                  "org/mule/test/spring/config2/test-xml-mule2-config-split-properties.xml";
64      }
65  
66      @Override
67      public ConfigurationBuilder getBuilder() throws ConfigurationException
68      {
69          return new SpringXmlConfigurationBuilder(getConfigResources());
70      }
71  
72      @Test
73      public void testMessageInfoMappingConfig() throws Exception
74      {
75          Service d = muleContext.getRegistry().lookupService("msgInfoMappingTestComponent");
76          assertNotNull(d);
77  
78          final MessageInfoMapping mapping = d.getMessageInfoMapping();
79          assertTrue(mapping instanceof ExpressionMessageInfoMapping);
80  
81          Map props = new HashMap();
82          props.put("id", "myID123");
83          props.put("correlation", "myCorrelationID456");
84          MuleMessage msg = new DefaultMuleMessage("foo", props, muleContext);
85          assertEquals("myID123",mapping.getMessageId(msg));
86          assertEquals("myCorrelationID456",mapping.getCorrelationId(msg));
87      }
88  
89      @Test
90      public void testPropertyTypesConfig() throws Exception
91      {
92          Service c = muleContext.getRegistry().lookupService("testPropertiesComponent");
93          assertNotNull(c);
94          Object obj = getComponent(c);
95          assertNotNull(obj);
96          assertTrue(obj instanceof Apple);
97          assertTrue(((Apple) obj).isBitten()); 
98          assertTrue(((Apple) obj).isWashed()); 
99      }
100 
101     @Test
102     public void testEndpointURIParamsConfig()
103     {
104         Service d = muleContext.getRegistry().lookupService("testPropertiesComponent");
105         assertNotNull(d);
106         final ServiceCompositeMessageSource router = (ServiceCompositeMessageSource) d.getMessageSource();
107         assertNotNull(router);
108         final List endpoints = router.getEndpoints();
109         assertNotNull(endpoints);
110         assertFalse(endpoints.isEmpty());
111         final ImmutableEndpoint inboundEndpoint = (ImmutableEndpoint) endpoints.get(0);
112         assertNotNull(inboundEndpoint);
113         final List transformers = inboundEndpoint.getTransformers();
114         assertFalse(transformers.isEmpty());
115         assertNotNull(transformers.get(0));
116         final List responseTransformers = inboundEndpoint.getResponseTransformers();
117         assertFalse(responseTransformers.isEmpty());
118         assertNotNull(responseTransformers.get(0));
119     }
120 
121     @Override
122     public void testTransformerConfig()
123     {
124         // first of all test generic transformer configuration
125         super.testTransformerConfig();
126 
127         Transformer t = muleContext.getRegistry().lookupTransformer("TestCompressionTransformer");
128         assertNotNull(t);
129         assertTrue(t instanceof TestCompressionTransformer);
130 
131         // This will only work with the MuleXml Builder other implementations
132         // will have to set this proerty manually or mimic Mules behaviour
133         assertEquals("this was set from the manager properties!",
134             ((TestCompressionTransformer)t).getBeanProperty1());
135         assertEquals(12, ((TestCompressionTransformer)t).getBeanProperty2());
136 
137         assertEquals(t.getReturnClass(), java.lang.String.class);
138 
139         t = muleContext.getRegistry().lookupTransformer("TestTransformer");
140         assertNotNull(t);
141         assertEquals(t.getReturnClass(), byte[].class);
142     }
143 }