View Javadoc

1   /*
2    * $Id: FileRequestorMoveDeleteTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
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.transport.file;
12  
13  import org.mule.api.MessagingException;
14  import org.mule.api.MuleException;
15  import org.mule.api.MuleMessage;
16  import org.mule.model.streaming.DelegatingInputStream;
17  import org.mule.module.client.MuleClient;
18  import org.mule.util.IOUtils;
19  
20  import java.io.ByteArrayOutputStream;
21  import java.io.File;
22  import java.io.IOException;
23  import java.io.InputStream;
24  import java.net.MalformedURLException;
25  
26  public class FileRequestorMoveDeleteTestCase extends AbstractFileMoveDeleteTestCase
27  {
28  
29      public void testMoveAndDeleteStreaming() throws Exception
30      {
31          File inFile = initForRequest();
32          File moveToDir = configureConnector(inFile, true, true, true, null);
33  
34          assertRequested(request(inFile), inFile, true);
35          assertFiles(inFile, moveToDir, true, true);
36      }
37  
38      public void testMoveOnlyStreaming() throws Exception
39      {
40          File inFile = initForRequest();
41          File moveToDir = configureConnector(inFile, true, true, false, null);
42  
43          assertRequested(request(inFile), inFile, true);
44          assertFiles(inFile, moveToDir, true, false);
45      }
46  
47      public void testDeleteOnlyStreaming() throws Exception
48      {
49          File inFile = initForRequest();
50          File moveToDir = configureConnector(inFile, true, false, true, null);
51  
52          assertRequested(request(inFile), inFile, true);
53          assertFiles(inFile, moveToDir, false, true);
54      }
55  
56      public void testNoMoveNoDeleteStreaming() throws Exception
57      {
58          File inFile = initForRequest();
59          File moveToDir = configureConnector(inFile, true, false, false, null);
60  
61          assertRequested(request(inFile), inFile, true);
62          assertFiles(inFile, moveToDir, false, false);
63      }
64  
65      public void testMoveAndDelete() throws Exception
66      {
67          File inFile = initForRequest();
68          File moveToDir = configureConnector(inFile, false, true, true, null);
69  
70          assertRequested(request(inFile), inFile, false);
71          assertFiles(inFile, moveToDir, true, true);
72      }
73  
74      public void testMoveOnly() throws Exception
75      {
76          File inFile = initForRequest();
77          File moveToDir = configureConnector(inFile, false, true, false, null);
78  
79          assertRequested(request(inFile), inFile, false);
80          assertFiles(inFile, moveToDir, true, false);
81      }
82  
83      public void testDeleteOnly() throws Exception
84      {
85          File inFile = initForRequest();
86          File moveToDir = configureConnector(inFile, false, false, true, null);
87  
88          assertRequested(request(inFile), inFile, false);
89          assertFiles(inFile, moveToDir, false, true);
90      }
91  
92      public void testNoMoveNoDelete() throws Exception
93      {
94          File inFile = initForRequest();
95          File moveToDir = configureConnector(inFile, false, false, false, null);
96  
97          assertRequested(request(inFile), inFile, false);
98          assertFiles(inFile, moveToDir, false, false);
99      }
100 
101     public void testMoveAndDeleteFilePayload() throws Exception
102     {
103         File inFile = initForRequest();
104 
105         File moveToDir = configureConnector(inFile, false, true, false, FileMuleMessageFactory.class);
106 
107         // TODO MULE-3198
108         // assertRequested(request(inFile), inFile, false);
109         // assertFiles(inFile, moveToDir, true, true);
110     }
111 
112     public void testMoveOnlyFilePayload() throws Exception
113     {
114         File inFile = initForRequest();
115 
116         File moveToDir = configureConnector(inFile, false, true, false, FileMuleMessageFactory.class);
117 
118         // TODO MULE-3198
119         // assertRequested(request(inFile), inFile, false);
120         // assertFiles(inFile, moveToDir, true, false);
121     }
122 
123     public void testDeleteOnlyFilePayload() throws Exception
124     {
125         File inFile = initForRequest();
126 
127         File moveToDir = configureConnector(inFile, false, false, true, FileMuleMessageFactory.class);
128 
129         // TODO MULE-3198
130         // assertRequested(request(inFile), inFile, false);
131         // assertFiles(inFile, moveToDir, false, true);
132     }
133 
134     public void testNoMoveNoDeleteFilePayload() throws Exception
135     {
136         File inFile = initForRequest();
137 
138         File moveToDir = configureConnector(inFile, false, false, false, FileMuleMessageFactory.class);
139 
140         // TODO MULE-3198
141         // assertRequested(request(inFile), inFile, false);
142 
143         assertFiles(inFile, moveToDir, false, false);
144     }
145 
146     protected void assertRequested(MuleMessage message, File inFile, boolean streaming)
147         throws IOException, MessagingException, InterruptedException
148     {
149         // Allow time for deletes/moves, so we can then assert to check files that
150         // shouldn't havn't been moved havn't
151         Thread.sleep(2000);
152 
153         assertNotNull(message);
154         assertEquals(inFile.getName(), message.getOutboundProperty(FileConnector.PROPERTY_ORIGINAL_FILENAME));
155 
156         assertNotNull(message.getPayload());
157         if (streaming)
158         {
159             // We can't check ReceiverFileInputStream is received because it is
160             // wrapped in a DelegatingInputStream
161             assertTrue(message.getPayload() instanceof DelegatingInputStream);
162             InputStream fis = (InputStream) message.getPayload();
163             ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
164             IOUtils.copy(fis, byteOut);
165 
166             // close() not called yet, nothing should have been deleted or moved yet
167             assertFilesUntouched(inFile);
168 
169             fis.close();
170             String result = new String(byteOut.toByteArray());
171             assertEquals(TEST_MESSAGE, result);
172         }
173         else
174         {
175             assertTrue(message.getPayload() instanceof byte[]);
176             assertEquals(TEST_MESSAGE, new String((byte[]) message.getPayload()));
177         }
178     }
179 
180     protected MuleMessage request(File file) throws MuleException, MalformedURLException
181     {
182         MuleClient muleClient = new MuleClient(muleContext);
183         return muleClient.request(fileToUrl(file) + "?connector=moveDeleteConnector", 2000);
184     }
185 }