1
2
3
4
5
6
7 package org.mule.transport.ftp.server;
8
9 import org.mule.tck.junit4.AbstractMuleTestCase;
10 import org.mule.tck.junit4.rule.DynamicPort;
11 import org.mule.transport.ftp.AbstractFtpServerTestCase;
12
13 import java.io.File;
14 import java.io.IOException;
15
16 import org.junit.After;
17 import org.junit.Before;
18 import org.junit.Rule;
19 import org.junit.Test;
20
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertFalse;
23 import static org.junit.Assert.assertTrue;
24
25
26
27
28
29
30 public class FTPServerClientTest extends AbstractMuleTestCase
31 {
32
33 private static final String adminUser = "admin";
34 private static final String adminPassword = "admin";
35
36 private Server ftpServer = null;
37 private FTPTestClient ftpClient = null;
38
39 @Rule
40 public DynamicPort dynamicPort = new DynamicPort("port1");
41
42 @Before
43 public void setUp() throws Exception
44 {
45 new File(AbstractFtpServerTestCase.FTP_SERVER_BASE_DIR).mkdirs();
46 ftpServer = new Server(dynamicPort.getNumber());
47 }
48
49
50
51
52
53 @Test
54 public void testCreateDeleteDir() throws IOException
55 {
56 ftpClient = new FTPTestClient("localhost", dynamicPort.getNumber(), adminUser, adminPassword);
57 String dir = "/foo/";
58 assertTrue("unable to create directory: " + dir, ftpClient.makeDir(dir));
59
60 assertTrue("Directory '" + dir + "' does not exist", ftpClient.dirExists(dir));
61 assertTrue("unable to delete directory: " + dir, ftpClient.deleteDir(dir));
62 assertFalse("Directory '" + dir + "' still exists", ftpClient.dirExists(dir));
63 }
64
65
66
67
68
69 @Test
70 public void testCreateDeleteFile() throws IOException
71 {
72 ftpClient = new FTPTestClient("localhost", dynamicPort.getNumber(), adminUser, adminPassword);
73 File testFile = File.createTempFile("fake", "file");
74 ftpClient.putFile(testFile.getAbsolutePath(),"/");
75 assertTrue("Could not find file :" + testFile.getName(), ftpClient.fileExists(testFile.getName()));
76 ftpClient.deleteFile(testFile.getName());
77 assertFalse("file was not deleted :" + testFile.getName(), ftpClient.fileExists(testFile.getName()));
78 }
79
80
81
82
83
84 @Test
85 public void testRecursiveDelete() throws IOException
86 {
87 ftpClient = new FTPTestClient("localhost", dynamicPort.getNumber(), adminUser, adminPassword);
88
89 assertTrue(ftpClient.makeDir("dir1/"));
90 ftpClient.dirExists("dir1/");
91 assertTrue(ftpClient.makeDir("/dir1/dir21/"));
92 ftpClient.dirExists("/dir1/dir21/");
93 assertTrue(ftpClient.makeDir("/dir1/dir22/"));
94 ftpClient.dirExists("/dir1/dir22/");
95 assertTrue(ftpClient.makeDir("/dir1/dir21/dir3/"));
96 ftpClient.dirExists("/dir1/dir21/dir3/");
97
98
99 File testFile0 = File.createTempFile("testFile0", "file");
100 File testFile1 = File.createTempFile("testFile1", "file");
101 File testFile2 = File.createTempFile("testFile2", "file");
102 File testFile3 = File.createTempFile("testFile3", "file");
103 File testFile4 = File.createTempFile("testFile4", "file");
104 File testFile5 = File.createTempFile("testFile5", "file");
105 File testFile6 = File.createTempFile("testFile6", "file");
106 File testFile7 = File.createTempFile("testFile7", "file");
107 File testFile8 = File.createTempFile("testFile8", "file");
108 File testFile9 = File.createTempFile("testFile9", "file");
109
110 assertTrue(ftpClient.putFile(testFile0.getAbsolutePath(), "/"));
111 ftpClient.fileExists("/" + testFile0.getName());
112 assertTrue(ftpClient.putFile(testFile1.getAbsolutePath(), "/"));
113 ftpClient.fileExists("/" + testFile0.getName());
114 assertTrue(ftpClient.putFile(testFile2.getAbsolutePath(), "/dir1/"));
115 ftpClient.fileExists("/dir1/" + testFile0.getName());
116 assertTrue(ftpClient.putFile(testFile3.getAbsolutePath(), "/dir1/"));
117 ftpClient.fileExists("/dir1/" + testFile0.getName());
118 assertTrue(ftpClient.putFile(testFile4.getAbsolutePath(), "/dir1/dir21/"));
119 ftpClient.fileExists("/dir1/dir21/" + testFile0.getName());
120 assertTrue(ftpClient.putFile(testFile5.getAbsolutePath(), "/dir1/dir21/"));
121 ftpClient.fileExists("/dir1/dir21/" + testFile0.getName());
122 assertTrue(ftpClient.putFile(testFile6.getAbsolutePath(), "/dir1/dir22/"));
123 ftpClient.fileExists("/dir1/dir22/" + testFile0.getName());
124 assertTrue(ftpClient.putFile(testFile7.getAbsolutePath(), "/dir1/dir22/"));
125 ftpClient.fileExists("/dir1/dir22/" + testFile0.getName());
126 assertTrue(ftpClient.putFile(testFile8.getAbsolutePath(), "/dir1/dir21/dir3/"));
127 ftpClient.fileExists("/dir1/dir21/dir3/" + testFile0.getName());
128 assertTrue(ftpClient.putFile(testFile9.getAbsolutePath(), "/dir1/dir21/dir3/"));
129 ftpClient.fileExists("/dir1/dir21/dir3/" + testFile0.getName());
130
131 ftpClient.recursiveDelete("/");
132 assertEquals("there are still files left over", 0, ftpClient.getFileList("/").length);
133 }
134
135 @After
136 public void tearDown()
137 {
138 if(ftpServer != null)
139 {
140 ftpServer.stop();
141 }
142
143 if(ftpClient != null && ftpClient.isConnected())
144 {
145 try
146 {
147 ftpClient.disconnect();
148 }
149 catch (IOException e)
150 {
151 e.printStackTrace();
152 }
153 }
154 }
155 }