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