1   /*
2    * $Id: JmsMessageUtilsTestCase.java 10489 2008-01-23 17:53:38Z dfeist $
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.transport.jms;
12  
13  import org.mule.tck.AbstractMuleTestCase;
14  import org.mule.transport.jms.JmsConstants;
15  import org.mule.transport.jms.JmsMessageUtils;
16  
17  import com.mockobjects.constraint.IsInstanceOf;
18  import com.mockobjects.dynamic.Mock;
19  
20  import javax.jms.BytesMessage;
21  import javax.jms.TextMessage;
22  
23  public class JmsMessageUtilsTestCase extends AbstractMuleTestCase
24  {
25  
26      public void testHeaders()
27      {
28          // already valid headers are returned as-is, so we can assertSame
29          assertSame("identifier", JmsMessageUtils.encodeHeader("identifier"));
30          assertSame("_identifier", JmsMessageUtils.encodeHeader("_identifier"));
31          assertSame("identifier_", JmsMessageUtils.encodeHeader("identifier_"));
32          assertSame("ident_ifier", JmsMessageUtils.encodeHeader("ident_ifier"));
33  
34          assertEquals("_identifier", JmsMessageUtils.encodeHeader("-identifier"));
35          assertEquals("identifier_", JmsMessageUtils.encodeHeader("identifier-"));
36          assertEquals("ident_ifier", JmsMessageUtils.encodeHeader("ident-ifier"));
37          assertEquals("_ident_ifier_", JmsMessageUtils.encodeHeader("-ident_ifier-"));
38          assertEquals("_ident_ifier_", JmsMessageUtils.encodeHeader("-ident-ifier-"));
39      }
40  
41      public void testTextMessageNullContent() throws Exception
42      {
43          Mock mockMessage = new Mock(TextMessage.class);
44          mockMessage.expectAndReturn("getText", null);
45  
46          TextMessage mockTextMessage = (TextMessage)mockMessage.proxy();
47  
48          byte[] result = JmsMessageUtils.toByteArray(mockTextMessage, JmsConstants.JMS_SPECIFICATION_102B);
49          assertNotNull(result);
50          assertEquals("Should return an empty byte array.", 0, result.length);
51  
52          mockMessage.verify();
53      }
54  
55      public void testByteMessageNullContent() throws Exception
56      {
57          // test for JMS 1.0.2-compliant code path
58          Mock mockMessage = new Mock(BytesMessage.class);
59          mockMessage.expect("reset");
60          mockMessage.expectAndReturn("readBytes", new IsInstanceOf(byte[].class), -1);
61          BytesMessage mockBytesMessage = (BytesMessage)mockMessage.proxy();
62  
63          byte[] result = JmsMessageUtils.toByteArray(mockBytesMessage, JmsConstants.JMS_SPECIFICATION_102B);
64          assertNotNull(result);
65          assertEquals("Should return an empty byte array.", 0, result.length);
66          mockMessage.verify();
67  
68          // test for JMS 1.1-compliant code path
69          mockMessage = new Mock(BytesMessage.class);
70          mockMessage.expect("reset");
71          mockMessage.expectAndReturn("getBodyLength", new Long(0));
72          mockBytesMessage = (BytesMessage)mockMessage.proxy();
73  
74          result = JmsMessageUtils.toByteArray(mockBytesMessage, JmsConstants.JMS_SPECIFICATION_11);
75          assertNotNull(result);
76          assertEquals("Should return an empty byte array.", 0, result.length);
77          mockMessage.verify();
78      }
79  
80  }