1   /*
2    * $Id: FileMessageAdapterTestCase.java 11559 2008-04-10 18:16:04Z 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.file;
12  
13  import org.mule.DefaultMuleMessage;
14  import org.mule.api.MessagingException;
15  import org.mule.api.MuleMessage;
16  import org.mule.api.transport.MessageAdapter;
17  import org.mule.transport.AbstractMessageAdapterTestCase;
18  import org.mule.util.FileUtils;
19  
20  import java.io.File;
21  import java.io.FileInputStream;
22  import java.util.Arrays;
23  
24  public class FileMessageAdapterTestCase extends AbstractMessageAdapterTestCase
25  {
26      private File message;
27  
28      /*
29       * (non-Javadoc)
30       * 
31       * @see junit.framework.TestCase#setUp()
32       */
33      protected void doSetUp() throws Exception
34      {
35          super.doSetUp();
36  
37          // The working directory is deleted on tearDown
38          File dir = FileUtils.newFile(muleContext.getConfiguration().getWorkingDirectory(), "tmp");
39          if (!dir.exists())
40          {
41              dir.mkdirs();
42          }
43  
44          message = File.createTempFile("simple", ".mule", dir);
45      }
46  
47      /*
48       * (non-Javadoc)
49       * 
50       * @see org.mule.tck.providers.AbstractMessageAdapterTestCase#getValidMessage()
51       */
52      public Object getValidMessage()
53      {
54          return message;
55      }
56  
57      /*
58       * (non-Javadoc)
59       * 
60       * @see org.mule.tck.providers.AbstractMessageAdapterTestCase#createAdapter()
61       */
62      public MessageAdapter createAdapter(Object payload) throws MessagingException
63      {
64          return new FileMessageAdapter(payload);
65      }
66  
67      public void testMessageRetrieval2() throws Exception
68      {
69          Object message = new ReceiverFileInputStream((File) getValidMessage(), false, null);
70  
71          MessageAdapter adapter = createAdapter(message);
72          MuleMessage muleMessage = new DefaultMuleMessage(adapter);
73  
74          doTestMessageEqualsPayload(message, adapter.getPayload());
75  
76          byte[] bytes = muleMessage.getPayloadAsBytes();
77          assertNotNull(bytes);
78  
79          String stringMessage = muleMessage.getPayloadAsString();
80          assertNotNull(stringMessage);
81  
82          assertNotNull(adapter.getPayload());
83      }
84  
85      protected void doTestMessageEqualsPayload(Object message, Object payload) throws Exception
86      {
87  
88          if (message instanceof File)
89          {
90              File file = (File) message;
91              assertTrue(payload instanceof File);
92              assertEquals(file, payload);
93          }
94          else if (message instanceof FileInputStream)
95          {
96              byte[] messageBytes = null;
97              byte[] payloadBytes = null;
98  
99              FileInputStream fis = (FileInputStream) message;
100             FileInputStream payloadFis = (FileInputStream) payload;
101             messageBytes = new byte[fis.available()];
102             payloadBytes = new byte[payloadFis.available()];
103             fis.read(messageBytes);
104             payloadFis.read(payloadBytes);
105             assertTrue(Arrays.equals(messageBytes, payloadBytes));
106         }
107         else
108         {
109             fail("FileMessageAdaptor supports File or FileInputStream");
110         }
111 
112     }
113 }