1   /*
2    * $Id: MessagePropertiesTransformerTestCase.java 11433 2008-03-20 03:43:57Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.transformers.simple;
12  
13  import org.mule.DefaultMuleMessage;
14  import org.mule.RegistryContext;
15  import org.mule.api.MuleEventContext;
16  import org.mule.api.MuleMessage;
17  import org.mule.tck.FunctionalTestCase;
18  import org.mule.transformer.simple.MessagePropertiesTransformer;
19  
20  import java.util.Collections;
21  import java.util.HashMap;
22  import java.util.Map;
23  
24  public class MessagePropertiesTransformerTestCase extends FunctionalTestCase
25  {
26      protected String getConfigResources()
27      {
28          return "message-properties-transformer-config.xml";
29      }
30  
31      public void testOverwriteFlagEnabledByDefault() throws Exception
32      {
33          MessagePropertiesTransformer t = new MessagePropertiesTransformer();
34          Map add = new HashMap();
35          add.put("addedProperty", "overwrittenValue");
36          t.setAddProperties(add);
37  
38          MuleMessage msg = new DefaultMuleMessage("message");
39          msg.setProperty("addedProperty", "originalValue");
40          MuleEventContext ctx = getTestEventContext(msg);
41          // context clones message
42          msg = ctx.getMessage();
43          DefaultMuleMessage transformed = (DefaultMuleMessage) t.transform(msg, null);
44          assertSame(msg, transformed);
45          assertEquals(msg.getUniqueId(), transformed.getUniqueId());
46          assertEquals(msg.getPayload(), transformed.getPayload());
47          // property values will be different
48          assertEquals(msg.getPropertyNames(), transformed.getPropertyNames());
49  
50          assertEquals("overwrittenValue", transformed.getProperty("addedProperty"));
51      }
52  
53      public void testOverwriteFalsePreservesOriginal() throws Exception
54      {
55          MessagePropertiesTransformer t = new MessagePropertiesTransformer();
56          Map add = new HashMap();
57          add.put("addedProperty", "overwrittenValue");
58          t.setAddProperties(add);
59          t.setOverwrite(false);
60  
61          DefaultMuleMessage msg = new DefaultMuleMessage("message");
62          msg.setProperty("addedProperty", "originalValue");
63          DefaultMuleMessage transformed = (DefaultMuleMessage) t.transform(msg, null);
64          assertSame(msg, transformed);
65          assertEquals(msg.getUniqueId(), transformed.getUniqueId());
66          assertEquals(msg.getPayload(), transformed.getPayload());
67          assertEquals(msg.getPropertyNames(), transformed.getPropertyNames());
68  
69          assertEquals("originalValue", transformed.getProperty("addedProperty"));
70      }
71  
72      public void testDelete() throws Exception
73      {
74          MessagePropertiesTransformer t = new MessagePropertiesTransformer();
75          t.setDeleteProperties(Collections.singletonList("badProperty"));
76  
77          DefaultMuleMessage msg = new DefaultMuleMessage("message");
78          msg.setProperty("badProperty", "badValue");
79          DefaultMuleMessage transformed = (DefaultMuleMessage) t.transform(msg, null);
80          assertSame(msg, transformed);
81          assertEquals(msg.getUniqueId(), transformed.getUniqueId());
82          assertEquals(msg.getPayload(), transformed.getPayload());
83          assertEquals(msg.getPropertyNames(), transformed.getPropertyNames());
84          assertFalse(transformed.getPropertyNames().contains("badValue"));
85      }
86  
87      public void testTransformerConfig() throws Exception
88      {
89          MessagePropertiesTransformer transformer = (MessagePropertiesTransformer) RegistryContext.getRegistry().lookupTransformer("testTransformer");
90          assertNotNull(transformer);
91          assertNotNull(transformer.getAddProperties());
92          assertNotNull(transformer.getDeleteProperties());
93          assertEquals(2, transformer.getAddProperties().size());
94          assertEquals(2, transformer.getDeleteProperties().size());
95          assertTrue(transformer.isOverwrite());
96          assertEquals("text/baz;charset=UTF-16BE", transformer.getAddProperties().get("Content-Type"));
97          assertEquals("value", transformer.getAddProperties().get("key"));
98          assertEquals("test-property1", transformer.getDeleteProperties().get(0));
99          assertEquals("test-property2", transformer.getDeleteProperties().get(1));
100     }
101 
102 }