-
Notifications
You must be signed in to change notification settings - Fork 7
/
CommanderFtpSslTest.java
107 lines (89 loc) · 2.76 KB
/
CommanderFtpSslTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package net.benelog.oneftpserver;
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPSClient;
import org.apache.ftpserver.ftplet.FtpException;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
/**
* @author benelog
*/
public class CommanderFtpSslTest {
@Rule
public TemporaryFolder folder = new TemporaryFolder();
final ExecutorService threadPool = Executors.newFixedThreadPool(1);
String home;
FTPClient client = new FTPSClient(true);
@Before
public void setUp() {
client.addProtocolCommandListener(new PrintCommandListener(System.out));
File uploadBase = folder.getRoot();
home = uploadBase.getAbsolutePath();
}
@After
public void tearDown() throws IOException, InterruptedException {
client.disconnect();
Commander.requestStop();
}
@Test
public void login() throws Exception {
startServer(new String[]{"port=3131","ssl=true", "id=benelog","password=1234", "home=" + home});
client.connect("127.0.0.1", 3131);
// login
boolean authorized = client.login("benelog", "1234");
assertTrue(authorized);
}
@Test
public void loginFail() throws Exception {
startServer(new String[]{"port=3131","ssl=true","id=benelog","password=1234", "home=" + home});
client.connect("127.0.0.1", 3131);
// login
boolean authorized = client.login("benelog", "13234");
assertFalse(authorized);
}
@Test
public void loginAnonymousAndUpload() throws Exception {
startServer(new String[]{"ssl=true", "home=" + home});
client.connect("127.0.0.1", 2121);
// login
boolean authorized = client.login("anonymous", "benelog@gmail.com");
assertTrue(authorized);
// upload
String fileName = "test.txt";
InputStream content = openStreamFromClassPath(fileName);
boolean stored = client.storeFile(fileName, content);
assertTrue(stored);
String savedFile = folder.getRoot().getAbsolutePath() + "/" + fileName;
assertTrue(new File(savedFile).exists());
}
private InputStream openStreamFromClassPath(String fileName) throws IOException {
return this.getClass().getClassLoader().getResource(fileName).openStream();
}
private void startServer(final String[] args) throws FtpException {
threadPool.execute(new Runnable(){
@Override
public void run() {
try {
Commander.main(args);
} catch (FtpException e) {
e.printStackTrace();
}
}
});
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
//ignore
}
}
}