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