1
2
3
4
5
6
7 package org.mule.transport.file;
8
9 import org.mule.api.MessagingException;
10 import org.mule.api.MuleException;
11 import org.mule.api.MuleMessage;
12 import org.mule.model.streaming.DelegatingInputStream;
13 import org.mule.module.client.MuleClient;
14 import org.mule.util.IOUtils;
15
16 import java.io.ByteArrayOutputStream;
17 import java.io.File;
18 import java.io.IOException;
19 import java.io.InputStream;
20 import java.net.MalformedURLException;
21
22 import org.junit.Test;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27
28 public class FileRequestorMoveDeleteTestCase extends AbstractFileMoveDeleteTestCase
29 {
30
31 @Test
32 public void testMoveAndDeleteStreaming() throws Exception
33 {
34 File inFile = initForRequest();
35 File moveToDir = configureConnector(inFile, true, true, true, null);
36
37 assertRequested(request(inFile), inFile, true);
38 assertFiles(inFile, moveToDir, true, true);
39 }
40
41 @Test
42 public void testMoveOnlyStreaming() throws Exception
43 {
44 File inFile = initForRequest();
45 File moveToDir = configureConnector(inFile, true, true, false, null);
46
47 assertRequested(request(inFile), inFile, true);
48 assertFiles(inFile, moveToDir, true, false);
49 }
50
51 @Test
52 public void testDeleteOnlyStreaming() throws Exception
53 {
54 File inFile = initForRequest();
55 File moveToDir = configureConnector(inFile, true, false, true, null);
56
57 assertRequested(request(inFile), inFile, true);
58 assertFiles(inFile, moveToDir, false, true);
59 }
60
61 @Test
62 public void testNoMoveNoDeleteStreaming() throws Exception
63 {
64 File inFile = initForRequest();
65 File moveToDir = configureConnector(inFile, true, false, false, null);
66
67 assertRequested(request(inFile), inFile, true);
68 assertFiles(inFile, moveToDir, false, false);
69 }
70
71 @Test
72 public void testMoveAndDelete() throws Exception
73 {
74 File inFile = initForRequest();
75 File moveToDir = configureConnector(inFile, false, true, true, null);
76
77 assertRequested(request(inFile), inFile, false);
78 assertFiles(inFile, moveToDir, true, true);
79 }
80
81 @Test
82 public void testMoveOnly() throws Exception
83 {
84 File inFile = initForRequest();
85 File moveToDir = configureConnector(inFile, false, true, false, null);
86
87 assertRequested(request(inFile), inFile, false);
88 assertFiles(inFile, moveToDir, true, false);
89 }
90
91 @Test
92 public void testDeleteOnly() throws Exception
93 {
94 File inFile = initForRequest();
95 File moveToDir = configureConnector(inFile, false, false, true, null);
96
97 assertRequested(request(inFile), inFile, false);
98 assertFiles(inFile, moveToDir, false, true);
99 }
100
101 @Test
102 public void testNoMoveNoDelete() throws Exception
103 {
104 File inFile = initForRequest();
105 File moveToDir = configureConnector(inFile, false, false, false, null);
106
107 assertRequested(request(inFile), inFile, false);
108 assertFiles(inFile, moveToDir, false, false);
109 }
110
111 @Test
112 public void testMoveAndDeleteFilePayload() throws Exception
113 {
114 File inFile = initForRequest();
115
116 File moveToDir = configureConnector(inFile, false, true, false, FileMuleMessageFactory.class);
117
118
119
120
121 }
122
123 @Test
124 public void testMoveOnlyFilePayload() throws Exception
125 {
126 File inFile = initForRequest();
127
128 File moveToDir = configureConnector(inFile, false, true, false, FileMuleMessageFactory.class);
129
130
131
132
133 }
134
135 @Test
136 public void testDeleteOnlyFilePayload() throws Exception
137 {
138 File inFile = initForRequest();
139
140 File moveToDir = configureConnector(inFile, false, false, true, FileMuleMessageFactory.class);
141
142
143
144
145 }
146
147 @Test
148 public void testNoMoveNoDeleteFilePayload() throws Exception
149 {
150 File inFile = initForRequest();
151
152 File moveToDir = configureConnector(inFile, false, false, false, FileMuleMessageFactory.class);
153
154
155
156
157 assertFiles(inFile, moveToDir, false, false);
158 }
159
160 protected void assertRequested(MuleMessage message, File inFile, boolean streaming)
161 throws IOException, MessagingException, InterruptedException
162 {
163
164
165 Thread.sleep(2000);
166
167 assertNotNull(message);
168 assertEquals(inFile.getName(), message.getOutboundProperty(FileConnector.PROPERTY_ORIGINAL_FILENAME));
169
170 assertNotNull(message.getPayload());
171 if (streaming)
172 {
173
174
175 assertTrue(message.getPayload() instanceof DelegatingInputStream);
176 InputStream fis = (InputStream) message.getPayload();
177 ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
178 IOUtils.copy(fis, byteOut);
179
180
181 assertFilesUntouched(inFile);
182
183 fis.close();
184 String result = new String(byteOut.toByteArray());
185 assertEquals(TEST_MESSAGE, result);
186 }
187 else
188 {
189 assertTrue(message.getPayload() instanceof byte[]);
190 assertEquals(TEST_MESSAGE, new String((byte[]) message.getPayload()));
191 }
192 }
193
194 protected MuleMessage request(File file) throws MuleException, MalformedURLException
195 {
196 MuleClient muleClient = new MuleClient(muleContext);
197 return muleClient.request(fileToUrl(file) + "?connector=moveDeleteConnector", 2000);
198 }
199 }