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.transformer.simple;
8   
9   import org.mule.api.transformer.TransformerException;
10  import org.mule.tck.junit4.AbstractMuleContextTestCase;
11  import org.mule.tck.testmodels.fruit.Apple;
12  import org.mule.util.IOUtils;
13  
14  import java.io.ByteArrayInputStream;
15  import java.io.IOException;
16  import java.io.InputStream;
17  import java.util.Arrays;
18  
19  import org.apache.commons.lang.SerializationUtils;
20  import org.junit.Test;
21  
22  import static org.junit.Assert.assertEquals;
23  import static org.junit.Assert.assertTrue;
24  
25  public class ObjectToInputStreamTestCase extends AbstractMuleContextTestCase
26  {
27  
28      private ObjectToInputStream transformer = new ObjectToInputStream();
29  
30      @Test
31      public void testTransformString() throws TransformerException, IOException
32      {
33          assertTrue(InputStream.class.isAssignableFrom(transformer.transform(TEST_MESSAGE).getClass()));
34          assertTrue(compare(new ByteArrayInputStream(TEST_MESSAGE.getBytes()),
35                             (InputStream) transformer.transform(TEST_MESSAGE)));
36      }
37  
38      @Test
39      public void testTransformByteArray() throws TransformerException, IOException
40      {
41          assertTrue(InputStream.class.isAssignableFrom(transformer.transform(
42                  TEST_MESSAGE.getBytes()).getClass()));
43          assertTrue(compare(new ByteArrayInputStream(TEST_MESSAGE.getBytes()),
44                             (InputStream) transformer.transform(TEST_MESSAGE)));
45      }
46  
47      @Test
48      public void testTransformInputStream()
49      {
50          InputStream inputStream = new ByteArrayInputStream(TEST_MESSAGE.getBytes());
51          try
52          {
53              assertEquals(inputStream, transformer.transform(inputStream));
54          }
55          catch (Exception e)
56          {
57              assertTrue(e instanceof TransformerException);
58              assertTrue(e.getMessage().contains("does not support source type"));
59          }
60      }
61  
62      @Test
63      public void testTransformSerializable()
64      {
65          Apple apple = new Apple();
66          InputStream serializedApple = new ByteArrayInputStream(SerializationUtils.serialize(apple));
67          try
68          {
69              assertTrue(compare(serializedApple, (InputStream) transformer.transform(apple)));
70          }
71          catch (Exception e)
72          {
73              assertTrue(e instanceof TransformerException);
74              assertTrue(e.getMessage().contains("does not support source type"));
75          }
76      }
77  
78      public static boolean compare(InputStream input1, InputStream input2)
79      {
80          byte[] bytes1 = IOUtils.toByteArray(input1);
81          byte[] bytes2 = IOUtils.toByteArray(input2);
82          return Arrays.equals(bytes1, bytes2);
83      }
84  }